diff --git a/.gitattributes b/.gitattributes index 251558a58941..a62bab440760 100644 --- a/.gitattributes +++ b/.gitattributes @@ -82,9 +82,6 @@ /csharp/paket.main.bzl linguist-generated=true /csharp/paket.main_extension.bzl linguist-generated=true -# ripunzip tool -/misc/ripunzip/ripunzip-* filter=lfs diff=lfs merge=lfs -text - # swift prebuilt resources /swift/third_party/resources/*.zip filter=lfs diff=lfs merge=lfs -text /swift/third_party/resources/*.tar.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml deleted file mode 100644 index 6f1f95ddf8c6..000000000000 --- a/.github/workflows/build-ripunzip.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: Build runzip - -on: - workflow_dispatch: - inputs: - ripunzip-version: - description: "what reference to checktout from google/runzip" - required: false - default: v2.0.2 - openssl-version: - description: "what reference to checkout from openssl/openssl for Linux" - required: false - default: openssl-3.5.0 - -jobs: - build: - strategy: - fail-fast: false - matrix: - os: [ubuntu-22.04, macos-13, windows-2022] - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v5 - with: - repository: google/ripunzip - ref: ${{ inputs.ripunzip-version }} - # we need to avoid ripunzip dynamically linking into libssl - # see https://github.com/sfackler/rust-openssl/issues/183 - - if: runner.os == 'Linux' - name: checkout openssl - uses: actions/checkout@v5 - with: - repository: openssl/openssl - path: openssl - ref: ${{ inputs.openssl-version }} - - if: runner.os == 'Linux' - name: build and install openssl with fPIC - shell: bash - working-directory: openssl - run: | - ./config -fPIC --prefix=$HOME/.local --openssldir=$HOME/.local/ssl - make -j $(nproc) - make install_sw -j $(nproc) - - if: runner.os == 'Linux' - name: build (linux) - shell: bash - run: | - env OPENSSL_LIB_DIR=$HOME/.local/lib64 OPENSSL_INCLUDE_DIR=$HOME/.local/include OPENSSL_STATIC=yes cargo build --release - mv target/release/ripunzip ripunzip-linux - - if: runner.os == 'Windows' - name: build (windows) - shell: bash - run: | - cargo build --release - mv target/release/ripunzip ripunzip-windows - - name: build (macOS) - if: runner.os == 'macOS' - shell: bash - run: | - rustup target install x86_64-apple-darwin - rustup target install aarch64-apple-darwin - cargo build --target x86_64-apple-darwin --release - cargo build --target aarch64-apple-darwin --release - lipo -create -output ripunzip-macos \ - -arch x86_64 target/x86_64-apple-darwin/release/ripunzip \ - -arch arm64 target/aarch64-apple-darwin/release/ripunzip - - uses: actions/upload-artifact@v4 - with: - name: ripunzip-${{ runner.os }} - path: ripunzip-* - - name: Check built binary - shell: bash - run: | - ./ripunzip-* --version diff --git a/CODEOWNERS b/CODEOWNERS index ae1506f12a3c..131fb1e767d9 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -5,19 +5,29 @@ /actions/ @github/codeql-dynamic /cpp/ @github/codeql-c-analysis /csharp/ @github/codeql-csharp -/csharp/autobuilder/Semmle.Autobuild.Cpp @github/codeql-c-extractor -/csharp/autobuilder/Semmle.Autobuild.Cpp.Tests @github/codeql-c-extractor +/csharp/autobuilder/Semmle.Autobuild.Cpp @github/codeql-c-extractor @github/code-scanning-language-coverage +/csharp/autobuilder/Semmle.Autobuild.Cpp.Tests @github/codeql-c-extractor @github/code-scanning-language-coverage /go/ @github/codeql-go +/go/codeql-tools/ @github/codeql-go @github/code-scanning-language-coverage +/go/downgrades/ @github/codeql-go @github/code-scanning-language-coverage +/go/extractor/ @github/codeql-go @github/code-scanning-language-coverage +/go/extractor-smoke-test/ @github/codeql-go @github/code-scanning-language-coverage +/go/ql/test/extractor-tests/ @github/codeql-go @github/code-scanning-language-coverage /java/ @github/codeql-java /javascript/ @github/codeql-javascript +/javascript/extractor/ @github/codeql-javascript @github/code-scanning-language-coverage /python/ @github/codeql-python +/python/extractor/ @github/codeql-python @github/code-scanning-language-coverage /ql/ @github/codeql-ql-for-ql-reviewers /ruby/ @github/codeql-ruby +/ruby/extractor/ @github/codeql-ruby @github/code-scanning-language-coverage /rust/ @github/codeql-rust +/rust/extractor/ @github/codeql-rust @github/code-scanning-language-coverage /shared/ @github/codeql-shared-libraries-reviewers /swift/ @github/codeql-swift +/swift/extractor/ @github/codeql-swift @github/code-scanning-language-coverage /misc/codegen/ @github/codeql-swift -/java/kotlin-extractor/ @github/codeql-kotlin +/java/kotlin-extractor/ @github/codeql-kotlin @github/code-scanning-language-coverage /java/ql/test-kotlin1/ @github/codeql-kotlin /java/ql/test-kotlin2/ @github/codeql-kotlin diff --git a/MODULE.bazel b/MODULE.bazel index 58ff750253b2..fc9d609f65ce 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -23,7 +23,7 @@ bazel_dep(name = "rules_shell", version = "0.5.0") bazel_dep(name = "bazel_skylib", version = "1.8.1") bazel_dep(name = "abseil-cpp", version = "20240116.1", repo_name = "absl") bazel_dep(name = "nlohmann_json", version = "3.11.3", repo_name = "json") -bazel_dep(name = "fmt", version = "10.0.0") +bazel_dep(name = "fmt", version = "12.1.0-codeql.1") bazel_dep(name = "rules_kotlin", version = "2.1.3-codeql.1") bazel_dep(name = "gazelle", version = "0.40.0") bazel_dep(name = "rules_dotnet", version = "0.19.2-codeql.1") @@ -269,24 +269,16 @@ go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps") go_deps.from_file(go_mod = "//go/extractor:go.mod") use_repo(go_deps, "org_golang_x_mod", "org_golang_x_tools") -lfs_archive = use_repo_rule("//misc/bazel:lfs.bzl", "lfs_archive") +ripunzip_archive = use_repo_rule("//misc/ripunzip:ripunzip.bzl", "ripunzip_archive") -lfs_archive( - name = "ripunzip-linux", - src = "//misc/ripunzip:ripunzip-Linux.zip", - build_file = "//misc/ripunzip:BUILD.ripunzip.bazel", -) - -lfs_archive( - name = "ripunzip-windows", - src = "//misc/ripunzip:ripunzip-Windows.zip", - build_file = "//misc/ripunzip:BUILD.ripunzip.bazel", -) - -lfs_archive( - name = "ripunzip-macos", - src = "//misc/ripunzip:ripunzip-macOS.zip", - build_file = "//misc/ripunzip:BUILD.ripunzip.bazel", +# go to https://github.com/GoogleChrome/ripunzip/releases to find latest version and corresponding sha256s +ripunzip_archive( + name = "ripunzip", + sha256_linux = "ee0e8a957687a5dc3a66b2a4b25883bf762df4c9c07f0651af527a32a405054b", + sha256_macos_arm = "8a88eea54eac232d162a72a42065e0429b82dbf4f05e9642915dff9d7a81f846", + sha256_macos_intel = "4457a18bfcc5feabe09f5ea3d1157128e07b4873392cb404a870e611924abf64", + sha256_windows = "66d0c1375301bf5ab815348048f43b110631d3fa7200acd50d50a8ed8655ca62", + version = "2.0.3", ) register_toolchains( diff --git a/actions/ql/lib/CHANGELOG.md b/actions/ql/lib/CHANGELOG.md index ffe1cba82818..4713be3d4f5b 100644 --- a/actions/ql/lib/CHANGELOG.md +++ b/actions/ql/lib/CHANGELOG.md @@ -1,3 +1,19 @@ +## 0.4.24 + +No user-facing changes. + +## 0.4.23 + +No user-facing changes. + +## 0.4.22 + +No user-facing changes. + +## 0.4.21 + +No user-facing changes. + ## 0.4.20 No user-facing changes. diff --git a/actions/ql/lib/change-notes/released/0.4.21.md b/actions/ql/lib/change-notes/released/0.4.21.md new file mode 100644 index 000000000000..4457437acf28 --- /dev/null +++ b/actions/ql/lib/change-notes/released/0.4.21.md @@ -0,0 +1,3 @@ +## 0.4.21 + +No user-facing changes. diff --git a/actions/ql/lib/change-notes/released/0.4.22.md b/actions/ql/lib/change-notes/released/0.4.22.md new file mode 100644 index 000000000000..289b153fdc95 --- /dev/null +++ b/actions/ql/lib/change-notes/released/0.4.22.md @@ -0,0 +1,3 @@ +## 0.4.22 + +No user-facing changes. diff --git a/actions/ql/lib/change-notes/released/0.4.23.md b/actions/ql/lib/change-notes/released/0.4.23.md new file mode 100644 index 000000000000..bec5c9a20850 --- /dev/null +++ b/actions/ql/lib/change-notes/released/0.4.23.md @@ -0,0 +1,3 @@ +## 0.4.23 + +No user-facing changes. diff --git a/actions/ql/lib/change-notes/released/0.4.24.md b/actions/ql/lib/change-notes/released/0.4.24.md new file mode 100644 index 000000000000..c481220bc14a --- /dev/null +++ b/actions/ql/lib/change-notes/released/0.4.24.md @@ -0,0 +1,3 @@ +## 0.4.24 + +No user-facing changes. diff --git a/actions/ql/lib/codeql-pack.release.yml b/actions/ql/lib/codeql-pack.release.yml index 380b2d094239..b26f62aec370 100644 --- a/actions/ql/lib/codeql-pack.release.yml +++ b/actions/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.4.20 +lastReleaseVersion: 0.4.24 diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 3217afc182bc..082d5cd5ba2c 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.20 +version: 0.4.24 library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/CHANGELOG.md b/actions/ql/src/CHANGELOG.md index c7253227b7c3..9a9f89647553 100644 --- a/actions/ql/src/CHANGELOG.md +++ b/actions/ql/src/CHANGELOG.md @@ -1,3 +1,19 @@ +## 0.6.16 + +No user-facing changes. + +## 0.6.15 + +No user-facing changes. + +## 0.6.14 + +No user-facing changes. + +## 0.6.13 + +No user-facing changes. + ## 0.6.12 No user-facing changes. diff --git a/actions/ql/src/change-notes/released/0.6.13.md b/actions/ql/src/change-notes/released/0.6.13.md new file mode 100644 index 000000000000..0dad2009c46d --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.13.md @@ -0,0 +1,3 @@ +## 0.6.13 + +No user-facing changes. diff --git a/actions/ql/src/change-notes/released/0.6.14.md b/actions/ql/src/change-notes/released/0.6.14.md new file mode 100644 index 000000000000..f96f2afc5fd1 --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.14.md @@ -0,0 +1,3 @@ +## 0.6.14 + +No user-facing changes. diff --git a/actions/ql/src/change-notes/released/0.6.15.md b/actions/ql/src/change-notes/released/0.6.15.md new file mode 100644 index 000000000000..3060ada741e9 --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.15.md @@ -0,0 +1,3 @@ +## 0.6.15 + +No user-facing changes. diff --git a/actions/ql/src/change-notes/released/0.6.16.md b/actions/ql/src/change-notes/released/0.6.16.md new file mode 100644 index 000000000000..ec5c49b7d646 --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.16.md @@ -0,0 +1,3 @@ +## 0.6.16 + +No user-facing changes. diff --git a/actions/ql/src/codeql-pack.release.yml b/actions/ql/src/codeql-pack.release.yml index 28c22ccab7cb..169788bff084 100644 --- a/actions/ql/src/codeql-pack.release.yml +++ b/actions/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.12 +lastReleaseVersion: 0.6.16 diff --git a/actions/ql/src/experimental/Security/CWE-829/ArtifactPoisoningPathTraversal.ql b/actions/ql/src/experimental/Security/CWE-829/ArtifactPoisoningPathTraversal.ql index 517a9d1eaad7..d03d2407cb70 100644 --- a/actions/ql/src/experimental/Security/CWE-829/ArtifactPoisoningPathTraversal.ql +++ b/actions/ql/src/experimental/Security/CWE-829/ArtifactPoisoningPathTraversal.ql @@ -1,5 +1,5 @@ /** - * @name Artifact Poisoning (Path Traversal). + * @name Artifact Poisoning (Path Traversal) * @description An attacker may be able to poison the workflow's artifacts and influence on consequent steps. * @kind problem * @problem.severity error diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index 7c14b3a91721..39b5cb5399ee 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.12 +version: 0.6.16 library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/config/identical-files.json b/config/identical-files.json index 89beb48acd40..a33dbb1997bf 100644 --- a/config/identical-files.json +++ b/config/identical-files.json @@ -276,5 +276,12 @@ "Python model summaries test extension": [ "python/ql/test/library-tests/dataflow/model-summaries/InlineTaintTest.ext.yml", "python/ql/test/library-tests/dataflow/model-summaries/NormalDataflowTest.ext.yml" + ], + "XML discard predicates": [ + "javascript/ql/lib/semmle/javascript/internal/OverlayXml.qll", + "java/ql/lib/semmle/code/java/internal/OverlayXml.qll", + "go/ql/lib/semmle/go/internal/OverlayXml.qll", + "python/ql/lib/semmle/python/internal/OverlayXml.qll", + "csharp/ql/lib/semmle/code/csharp/internal/OverlayXml.qll" ] } diff --git a/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/old.dbscheme b/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/old.dbscheme new file mode 100644 index 000000000000..1a6854060d5d --- /dev/null +++ b/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/old.dbscheme @@ -0,0 +1,2450 @@ +/*- 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 + * + * 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 +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_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 -*/ + +/** + * 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 +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * 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( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +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 +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +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_default 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 + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // 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 +); + +builtin_functions( + int id: @function 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: 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_default 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 + | @decltype; + +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_default 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_default 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_default 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/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/semmlecode.cpp.dbscheme b/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..2121ffec11fa --- /dev/null +++ b/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/semmlecode.cpp.dbscheme @@ -0,0 +1,2437 @@ +/*- 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 + * + * 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 -*/ + +/** + * 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 +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * 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( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +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 +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +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_default 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 + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // 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 +); + +builtin_functions( + int id: @function 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: 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_default 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 + | @decltype; + +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_default 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_default 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_default 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/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/upgrade.properties b/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/upgrade.properties new file mode 100644 index 000000000000..6fa192fc0007 --- /dev/null +++ b/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/upgrade.properties @@ -0,0 +1,3 @@ +description: Support expanded compilation argument lists +compatibility: full +compilation_expanded_args.rel: delete diff --git a/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/old.dbscheme b/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/old.dbscheme new file mode 100644 index 000000000000..2121ffec11fa --- /dev/null +++ b/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/old.dbscheme @@ -0,0 +1,2437 @@ +/*- 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 + * + * 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 -*/ + +/** + * 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 +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * 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( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +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 +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +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_default 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 + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // 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 +); + +builtin_functions( + int id: @function 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: 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_default 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 + | @decltype; + +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_default 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_default 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_default 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/2121ffec11fac265524955fee1775217364d4ca4/semmlecode.cpp.dbscheme b/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..c16b29b27f71 --- /dev/null +++ b/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/semmlecode.cpp.dbscheme @@ -0,0 +1,2436 @@ +/*- 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 + * + * 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 -*/ + +/** + * 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 +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * 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( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +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 +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +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_default 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 + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // 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 +); + +builtin_functions( + int id: @function 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: 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_default 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_default 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_default 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_default 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/2121ffec11fac265524955fee1775217364d4ca4/upgrade.properties b/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/upgrade.properties new file mode 100644 index 000000000000..a951593a337a --- /dev/null +++ b/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/upgrade.properties @@ -0,0 +1,2 @@ +description: Fix decltype qualifier issue +compatibility: full diff --git a/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/old.dbscheme b/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/old.dbscheme new file mode 100644 index 000000000000..a42ce5fc9432 --- /dev/null +++ b/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/old.dbscheme @@ -0,0 +1,2469 @@ + +/*- 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 + * + * 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 +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_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 -*/ + +/** + * 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 +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * 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( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +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 +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +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_default 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 + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // 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 +); + +builtin_functions( + int id: @function 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: 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_default 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 + | @decltype; + +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_default 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_default 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_default 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 +); + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: string 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/a42ce5fc943254097f85471b94ae2247e819104a/semmlecode.dbscheme b/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/semmlecode.dbscheme new file mode 100644 index 000000000000..1a6854060d5d --- /dev/null +++ b/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/semmlecode.dbscheme @@ -0,0 +1,2450 @@ +/*- 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 + * + * 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 +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_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 -*/ + +/** + * 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 +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * 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( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +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 +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +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_default 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 + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // 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 +); + +builtin_functions( + int id: @function 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: 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_default 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 + | @decltype; + +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_default 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_default 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_default 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/a42ce5fc943254097f85471b94ae2247e819104a/upgrade.properties b/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/upgrade.properties new file mode 100644 index 000000000000..1a7cdb0ad716 --- /dev/null +++ b/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/upgrade.properties @@ -0,0 +1,4 @@ +description: Add databaseMetadata and overlayChangedFiles relations +compatibility: full +databaseMetadata.rel: delete +overlayChangedFiles.rel: delete diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 0f158cd3fb5b..e0c8b287adc5 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,27 @@ +## 6.1.3 + +No user-facing changes. + +## 6.1.2 + +No user-facing changes. + +## 6.1.1 + +### Minor Analysis Improvements + +* The class `DataFlow::FieldContent` now covers both `union` and `struct`/`class` types. A new predicate `FieldContent.getAField` has been added to access the union members associated with the `FieldContent`. The old `FieldContent` has been renamed to `NonUnionFieldContent`. + +## 6.1.0 + +### New Features + +* New predicates `getAnExpandedArgument` and `getExpandedArgument` were added to the `Compilation` class, yielding compilation arguments after expansion of response files. + +### Bug Fixes + +* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. + ## 6.0.1 No user-facing changes. @@ -259,8 +283,8 @@ No user-facing changes. ### Breaking Changes -* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. -* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. * Deleted the deprecated `hasQualifiedName` and `isDefined` predicates from the `Declaration` class, use `hasGlobalName` and `hasDefinition` respectively instead. * Deleted the `getFullSignature` predicate from the `Function` class, use `getIdentityString(Declaration)` from `semmle.code.cpp.Print` instead. * Deleted the deprecated `freeCall` predicate from `Alloc.qll`. Use `DeallocationExpr` instead. @@ -294,7 +318,7 @@ No user-facing changes. * A `getTemplateClass` predicate was added to the `DeductionGuide` class to get the class template for which the deduction guide is a guide. * An `isExplicit` predicate was added to the `Function` class that determines whether the function was declared as explicit. * A `getExplicitExpr` predicate was added to the `Function` class that yields the constant boolean expression (if any) that conditionally determines whether the function is explicit. -* A `isDestroyingDeleteDeallocation` predicate was added to the `NewOrNewArrayExpr` and `DeleteOrDeleteArrayExpr` classes to indicate whether the deallocation function is a destroying delete. +* A `isDestroyingDeleteDeallocation` predicate was added to the `NewOrNewArrayExpr` and `DeleteOrDeleteArrayExpr` classes to indicate whether the deallocation function is a destroying delete. ### Minor Analysis Improvements @@ -372,9 +396,9 @@ No user-facing changes. ### New Features * Added a `TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. -* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. * Added a predicate `GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. -* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. * Added a predicate `GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. * Added a predicate `GuardCondition.valueControls` to query whether a basic block is guarded by a particular `case` of a `switch` statement. @@ -490,7 +514,7 @@ No user-facing changes. * Functions that do not return due to calling functions that don't return (e.g. `exit`) are now detected as non-returning in the IR and dataflow. * Treat functions that reach the end of the function as returning in the IR. - They used to be treated as unreachable but it is allowed in C. + They used to be treated as unreachable but it is allowed in C. * The `DataFlow::asDefiningArgument` predicate now takes its argument from the range starting at `1` instead of `2`. Queries that depend on the single-parameter version of `DataFlow::asDefiningArgument` should have their arguments updated accordingly. ## 0.9.3 @@ -539,7 +563,7 @@ No user-facing changes. ### New Features -* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. +* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. Hence it is no longer needed to provide `none()` implementations of these predicates if they are not needed. ### Minor Analysis Improvements @@ -733,7 +757,7 @@ No user-facing changes. ### Deprecated APIs -* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features @@ -750,7 +774,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features @@ -849,7 +873,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. +* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features diff --git a/cpp/ql/lib/change-notes/released/6.1.0.md b/cpp/ql/lib/change-notes/released/6.1.0.md new file mode 100644 index 000000000000..a904793a03f2 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/6.1.0.md @@ -0,0 +1,9 @@ +## 6.1.0 + +### New Features + +* New predicates `getAnExpandedArgument` and `getExpandedArgument` were added to the `Compilation` class, yielding compilation arguments after expansion of response files. + +### Bug Fixes + +* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. diff --git a/cpp/ql/lib/change-notes/released/6.1.1.md b/cpp/ql/lib/change-notes/released/6.1.1.md new file mode 100644 index 000000000000..d88c93a5ed72 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/6.1.1.md @@ -0,0 +1,5 @@ +## 6.1.1 + +### Minor Analysis Improvements + +* The class `DataFlow::FieldContent` now covers both `union` and `struct`/`class` types. A new predicate `FieldContent.getAField` has been added to access the union members associated with the `FieldContent`. The old `FieldContent` has been renamed to `NonUnionFieldContent`. diff --git a/cpp/ql/lib/change-notes/released/6.1.2.md b/cpp/ql/lib/change-notes/released/6.1.2.md new file mode 100644 index 000000000000..8e41b366daba --- /dev/null +++ b/cpp/ql/lib/change-notes/released/6.1.2.md @@ -0,0 +1,3 @@ +## 6.1.2 + +No user-facing changes. diff --git a/cpp/ql/lib/change-notes/released/6.1.3.md b/cpp/ql/lib/change-notes/released/6.1.3.md new file mode 100644 index 000000000000..34916dd37c80 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/6.1.3.md @@ -0,0 +1,3 @@ +## 6.1.3 + +No user-facing changes. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index d1f3c68c8120..e641a8749739 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 6.0.1 +lastReleaseVersion: 6.1.3 diff --git a/cpp/ql/lib/cpp.qll b/cpp/ql/lib/cpp.qll index 46c651daf579..560a4444bfad 100644 --- a/cpp/ql/lib/cpp.qll +++ b/cpp/ql/lib/cpp.qll @@ -74,3 +74,4 @@ import semmle.code.cpp.Preprocessor import semmle.code.cpp.Iteration import semmle.code.cpp.NameQualifiers import DefaultOptions +private import semmle.code.cpp.internal.Overlay diff --git a/cpp/ql/lib/ext/cctype.model.yml b/cpp/ql/lib/ext/cctype.model.yml new file mode 100644 index 000000000000..d5fa3861c050 --- /dev/null +++ b/cpp/ql/lib/ext/cctype.model.yml @@ -0,0 +1,9 @@ +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + - ["", "", False, "tolower", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["std", "", False, "tolower", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "", False, "toupper", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["std", "", False, "toupper", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] \ No newline at end of file diff --git a/cpp/ql/lib/ext/iconv.model.yml b/cpp/ql/lib/ext/iconv.model.yml new file mode 100644 index 000000000000..8db5a65841b4 --- /dev/null +++ b/cpp/ql/lib/ext/iconv.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + - ["", "", False, "iconv", "", "", "Argument[**1]", "Argument[**3]", "value", "manual"] + \ No newline at end of file diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 4bdd3a910ab6..4af06c948d8c 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 6.0.1 +version: 6.1.3 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp @@ -22,3 +22,4 @@ dataExtensions: - ext/deallocation/*.model.yml - ext/allocation/*.model.yml warnOnImplicitThis: true +compileForOverlayEval: true diff --git a/cpp/ql/lib/semmle/code/cpp/Compilation.qll b/cpp/ql/lib/semmle/code/cpp/Compilation.qll index 407dc31e05f1..6f19be0481a2 100644 --- a/cpp/ql/lib/semmle/code/cpp/Compilation.qll +++ b/cpp/ql/lib/semmle/code/cpp/Compilation.qll @@ -94,6 +94,25 @@ class Compilation extends @compilation { */ string getArgument(int i) { compilation_args(this, i, result) } + /** + * Gets an expanded argument passed to the extractor on this invocation. + */ + string getAnExpandedArgument() { result = this.getExpandedArgument(_) } + + /** + * Gets the `i`th expanded argument passed to the extractor on this + * invocation. + * + * This is similar to `getArgument`, but for a `@someFile` argument, it + * includes the arguments from that file, rather than just taking the + * argument literally. + */ + string getExpandedArgument(int i) { + if exists(string arg | compilation_expanded_args(this, _, arg)) + then compilation_expanded_args(this, i, result) + else result = this.getArgument(i) + } + /** * Gets the total amount of CPU time spent processing all the files in the * front-end and extractor. diff --git a/cpp/ql/lib/semmle/code/cpp/Function.qll b/cpp/ql/lib/semmle/code/cpp/Function.qll index 8ddb07a868eb..10b156e3fb64 100644 --- a/cpp/ql/lib/semmle/code/cpp/Function.qll +++ b/cpp/ql/lib/semmle/code/cpp/Function.qll @@ -171,12 +171,14 @@ class Function extends Declaration, ControlFlowNode, AccessHolder, @function { * Gets the nth parameter of this function. There is no result for the * implicit `this` parameter, and there is no `...` varargs pseudo-parameter. */ + pragma[nomagic] Parameter getParameter(int n) { params(unresolveElement(result), underlyingElement(this), n, _) } /** * Gets a parameter of this function. There is no result for the implicit * `this` parameter, and there is no `...` varargs pseudo-parameter. */ + pragma[nomagic] Parameter getAParameter() { params(unresolveElement(result), underlyingElement(this), _, _) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/NameQualifiers.qll b/cpp/ql/lib/semmle/code/cpp/NameQualifiers.qll index 12434f17f019..2efca72d098d 100644 --- a/cpp/ql/lib/semmle/code/cpp/NameQualifiers.qll +++ b/cpp/ql/lib/semmle/code/cpp/NameQualifiers.qll @@ -144,14 +144,14 @@ class NameQualifiableElement extends Element, @namequalifiableelement { class NameQualifyingElement extends Element, @namequalifyingelement { /** * Gets a name qualifier for which this is the qualifying namespace or - * user-defined type. For example: class `X` is the + * user-defined type, or decltype. For example: class `X` is the * `NameQualifyingElement` and `X::` is the `NameQualifier`. */ NameQualifier getANameQualifier() { namequalifiers(unresolveElement(result), _, underlyingElement(this), _) } - /** Gets the name of this namespace or user-defined type. */ + /** Gets the name of this namespace, user-defined type, or decltype. */ string getName() { none() } } diff --git a/cpp/ql/lib/semmle/code/cpp/Type.qll b/cpp/ql/lib/semmle/code/cpp/Type.qll index 35b56882d7be..d9a61865c968 100644 --- a/cpp/ql/lib/semmle/code/cpp/Type.qll +++ b/cpp/ql/lib/semmle/code/cpp/Type.qll @@ -1146,7 +1146,7 @@ class DerivedType extends Type, @derivedtype { * decltype(a) b; * ``` */ -class Decltype extends Type { +class Decltype extends Type, NameQualifyingElement { Decltype() { decltypes(underlyingElement(this), _, 0, _, _) } override string getAPrimaryQlClass() { result = "Decltype" } @@ -1187,7 +1187,7 @@ class Decltype extends Type { override string toString() { result = "decltype(...)" } - override string getName() { none() } + override string getName() { result = "decltype(...)" } override int getSize() { result = this.getBaseType().getSize() } @@ -1247,7 +1247,7 @@ class TypeofType extends Type { override string toString() { result = "typeof(...)" } - override string getName() { none() } + override string getName() { result = "typeof(...)" } override int getSize() { result = this.getBaseType().getSize() } @@ -1311,8 +1311,6 @@ class TypeofTypeType extends TypeofType { Type getType() { type_operators(underlyingElement(this), unresolveElement(result), _, _) } override string getAPrimaryQlClass() { result = "TypeofTypeType" } - - override string toString() { result = "typeof(...)" } } /** @@ -1394,7 +1392,7 @@ class IntrinsicTransformedType extends Type { override Type resolveTypedefs() { result = this.getBaseType().resolveTypedefs() } - override string getName() { none() } + override string getName() { result = this.getIntrinsicName() + "(...)" } override int getSize() { result = this.getBaseType().getSize() } diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index 536e1750fd2f..d5287494df96 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -703,6 +703,7 @@ private class GuardConditionFromBinaryLogicalOperator extends GuardConditionImpl ) } + pragma[nomagic] override predicate comparesLt( Cpp::Expr left, Cpp::Expr right, int k, boolean isLessThan, boolean testIsTrue ) { @@ -713,6 +714,7 @@ private class GuardConditionFromBinaryLogicalOperator extends GuardConditionImpl ) } + pragma[nomagic] override predicate comparesLt(Cpp::Expr e, int k, boolean isLessThan, GuardValue value) { exists(GuardValue partValue, GuardCondition part | this.(Cpp::BinaryLogicalOperation) @@ -738,6 +740,7 @@ private class GuardConditionFromBinaryLogicalOperator extends GuardConditionImpl ) } + pragma[nomagic] override predicate comparesEq( Cpp::Expr left, Cpp::Expr right, int k, boolean areEqual, boolean testIsTrue ) { @@ -757,6 +760,7 @@ private class GuardConditionFromBinaryLogicalOperator extends GuardConditionImpl ) } + pragma[nomagic] override predicate comparesEq(Cpp::Expr e, int k, boolean areEqual, GuardValue value) { exists(GuardValue partValue, GuardCondition part | this.(Cpp::BinaryLogicalOperation) diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index b279c4965f33..69e32d23ec1c 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll @@ -15,16 +15,17 @@ * reading. * 1. The `namespace` column selects a namespace. * 2. The `type` column selects a type within that namespace. This column can - * introduce template names that can be mentioned in the `signature` column. + * introduce template type names that can be mentioned in the `signature` column. * For example, `vector` introduces the template names `T` and - * `Allocator`. + * `Allocator`. Non-type template parameters cannot be specified. * 3. The `subtypes` is a boolean that indicates whether to jump to an * arbitrary subtype of that type. Set this to `false` if leaving the `type` * blank (for example, a free function). * 4. The `name` column optionally selects a specific named member of the type. - * Like the `type` column, this column can introduce template names that can - * be mentioned in the `signature` column. For example, `insert` - * introduces the template name `InputIt`. + * Like the `type` column, this column can introduce template type names + * that can be mentioned in the `signature` column. For example, + * `insert` introduces the template name `InputIt`. Non-type + * template parameters cannot be specified. * 5. The `signature` column optionally restricts the named member. If * `signature` is blank then no such filtering is done. The format of the * signature is a comma-separated list of types enclosed in parentheses. The @@ -633,6 +634,28 @@ string getParameterTypeWithoutTemplateArguments(Function f, int n, boolean canon canonical = true } +/** + * Gets the largest index of a template parameter of `templateFunction` that + * is a type template parameter. + */ +private int getLastTypeTemplateFunctionParameterIndex(Function templateFunction) { + result = + max(int index | templateFunction.getTemplateArgument(index) instanceof TypeTemplateParameter) +} + +/** Gets the number of supported template parameters for `templateFunction`. */ +private int getNumberOfSupportedFunctionTemplateArguments(Function templateFunction) { + result = count(int i | exists(getSupportedFunctionTemplateArgument(templateFunction, i)) | i) +} + +/** Gets the `i`'th supported template parameter for `templateFunction`. */ +private Locatable getSupportedFunctionTemplateArgument(Function templateFunction, int i) { + result = templateFunction.getTemplateArgument(i) and + // We don't yet support non-type template parameters in the middle of a + // template parameter list + i <= getLastTypeTemplateFunctionParameterIndex(templateFunction) +} + /** * Normalize the `n`'th parameter of `f` by replacing template names * with `func:N` (where `N` is the index of the template). @@ -640,27 +663,51 @@ string getParameterTypeWithoutTemplateArguments(Function f, int n, boolean canon private string getTypeNameWithoutFunctionTemplates(Function f, int n, int remaining) { exists(Function templateFunction | templateFunction = getFullyTemplatedFunction(f) and - remaining = templateFunction.getNumberOfTemplateArguments() and + remaining = getNumberOfSupportedFunctionTemplateArguments(templateFunction) and result = getParameterTypeWithoutTemplateArguments(templateFunction, n, _) ) or exists(string mid, TypeTemplateParameter tp, Function templateFunction | mid = getTypeNameWithoutFunctionTemplates(f, n, remaining + 1) and templateFunction = getFullyTemplatedFunction(f) and - tp = templateFunction.getTemplateArgument(remaining) and + tp = getSupportedFunctionTemplateArgument(templateFunction, remaining) + | result = mid.replaceAll(tp.getName(), "func:" + remaining.toString()) ) } +/** + * Gets the largest index of a template parameter of `templateClass` that + * is a type template parameter. + */ +private int getLastTypeTemplateClassParameterIndex(Class templateClass) { + result = + max(int index | templateClass.getTemplateArgument(index) instanceof TypeTemplateParameter) +} + +/** Gets the `i`'th supported template parameter for `templateClass`. */ +private Locatable getSupportedClassTemplateArgument(Class templateClass, int i) { + result = templateClass.getTemplateArgument(i) and + // We don't yet support non-type template parameters in the middle of a + // template parameter list + i <= getLastTypeTemplateClassParameterIndex(templateClass) +} + +/** Gets the number of supported template parameters for `templateClass`. */ +private int getNumberOfSupportedClassTemplateArguments(Class templateClass) { + result = count(int i | exists(getSupportedClassTemplateArgument(templateClass, i)) | i) +} + /** * Normalize the `n`'th parameter of `f` by replacing template names * with `class:N` (where `N` is the index of the template). */ +pragma[nomagic] private string getTypeNameWithoutClassTemplates(Function f, int n, int remaining) { // If there is a declaring type then we start by expanding the function templates exists(Class template | isClassConstructedFrom(f.getDeclaringType(), template) and - remaining = template.getNumberOfTemplateArguments() and + remaining = getNumberOfSupportedClassTemplateArguments(template) and result = getTypeNameWithoutFunctionTemplates(f, n, 0) ) or @@ -672,7 +719,8 @@ private string getTypeNameWithoutClassTemplates(Function f, int n, int remaining exists(string mid, TypeTemplateParameter tp, Class template | mid = getTypeNameWithoutClassTemplates(f, n, remaining + 1) and isClassConstructedFrom(f.getDeclaringType(), template) and - tp = template.getTemplateArgument(remaining) and + tp = getSupportedClassTemplateArgument(template, remaining) + | result = mid.replaceAll(tp.getName(), "class:" + remaining.toString()) ) } @@ -727,6 +775,7 @@ private string getSignatureWithoutClassTemplateNames( * - The `remaining` number of template arguments in `partiallyNormalizedSignature` * with their index in `nameArgs`. */ +pragma[nomagic] private string getSignatureWithoutFunctionTemplateNames( string partiallyNormalizedSignature, string typeArgs, string nameArgs, int remaining ) { @@ -770,6 +819,7 @@ private string getSignatureWithoutFunctionTemplateNames( * ``` * In this case, `normalizedSignature` will be `"(const func:0 &,int,class:1,class:0 *)"`. */ +pragma[nomagic] private predicate elementSpecWithArguments( string signature, string type, string name, string normalizedSignature, string typeArgs, string nameArgs @@ -789,6 +839,35 @@ private string getSignatureParameterName(string signature, string type, string n ) } +/** + * Gets a `Function` identified by the `(namespace, type, name)` components. + * + * If `subtypes` is `true` then the result may be an override of the function + * identified by the components. + */ +pragma[nomagic] +private Function getFunction(string namespace, string type, boolean subtypes, string name) { + elementSpec(namespace, type, subtypes, name, _, _) and + ( + funcHasQualifiedName(result, namespace, name) and + subtypes = false and + type = "" + or + exists(Class namedClass, Class classWithMethod | + hasClassAndName(classWithMethod, result, name) and + classHasQualifiedName(namedClass, namespace, type) + | + // member declared in the named type or a subtype of it + subtypes = true and + classWithMethod = namedClass.getADerivedClass*() + or + // member declared directly in the named type + subtypes = false and + classWithMethod = namedClass + ) + ) +} + /** * Holds if the suffix containing the entries in `signature` starting at entry * `i` matches the suffix containing the parameters of `func` starting at entry `i`. @@ -812,13 +891,17 @@ private string getSignatureParameterName(string signature, string type, string n * is `func:n` then the signature name is compared with the `n`'th name * in `name`. */ -private predicate signatureMatches(Function func, string signature, string type, string name, int i) { +pragma[nomagic] +private predicate signatureMatches( + Function func, string namespace, string signature, string type, string name, int i +) { + func = getFunction(namespace, type, _, name) and exists(string s | s = getSignatureParameterName(signature, type, name, i) and s = getParameterTypeName(func, i) ) and if exists(getParameterTypeName(func, i + 1)) - then signatureMatches(func, signature, type, name, i + 1) + then signatureMatches(func, namespace, signature, type, name, i + 1) else i = count(signature.indexOf(",")) } @@ -833,7 +916,7 @@ module ExternalFlowDebug { * * Exposed for testing purposes. */ - predicate signatureMatches_debug = signatureMatches/5; + predicate signatureMatches_debug = signatureMatches/6; /** * INTERNAL: Do not use. @@ -883,6 +966,7 @@ private predicate parseParens(string s, string betweenParens) { s = "(" + betwee * - `signatureWithoutParens` equals `signature`, but with the surrounding * parentheses removed. */ +pragma[nomagic] private predicate elementSpecWithArguments0( string signature, string type, string name, string signatureWithoutParens, string typeArgs, string nameArgs @@ -909,7 +993,7 @@ private predicate elementSpecMatchesSignature( ) { elementSpec(namespace, pragma[only_bind_into](type), subtypes, pragma[only_bind_into](name), pragma[only_bind_into](signature), _) and - signatureMatches(func, signature, type, name, 0) + signatureMatches(func, namespace, signature, type, name, 0) } /** @@ -953,7 +1037,7 @@ private predicate funcHasQualifiedName(Function func, string namespace, string n * Holds if `namedClass` is in namespace `namespace` and has * name `type` (excluding any template parameters). */ -bindingset[type, namespace] +bindingset[type] pragma[inline_late] private predicate classHasQualifiedName(Class namedClass, string namespace, string type) { exists(string typeWithoutArgs | @@ -969,17 +1053,14 @@ private predicate classHasQualifiedName(Class namedClass, string namespace, stri * are also returned. * 3. The element has name `name` * 4. If `signature` is non-empty, then the element has a list of parameter types described by `signature`. - * - * NOTE: `namespace` is currently not used (since we don't properly extract modules yet). */ pragma[nomagic] private Element interpretElement0( string namespace, string type, boolean subtypes, string name, string signature ) { + result = getFunction(namespace, type, subtypes, name) and ( // Non-member functions - funcHasQualifiedName(result, namespace, name) and - subtypes = false and type = "" and ( elementSpecMatchesSignature(result, namespace, type, subtypes, name, signature) @@ -989,52 +1070,36 @@ private Element interpretElement0( ) or // Member functions - exists(Class namedClass, Class classWithMethod | - hasClassAndName(classWithMethod, result, name) and - classHasQualifiedName(namedClass, namespace, type) - | - ( - elementSpecMatchesSignature(result, namespace, type, subtypes, name, signature) - or - signature = "" and - elementSpec(namespace, type, subtypes, name, "", _) - ) and - ( - // member declared in the named type or a subtype of it - subtypes = true and - classWithMethod = namedClass.getADerivedClass*() - or - // member declared directly in the named type - subtypes = false and - classWithMethod = namedClass - ) - ) + elementSpecMatchesSignature(result, namespace, type, subtypes, name, signature) or - elementSpec(namespace, type, subtypes, name, signature, _) and - // Member variables signature = "" and - exists(Class namedClass, Class classWithMember, MemberVariable member | - member.getName() = name and - member = classWithMember.getAMember() and - namedClass.hasQualifiedName(namespace, type) and - result = member - | - // field declared in the named type or a subtype of it (or an extension of any) - subtypes = true and - classWithMember = namedClass.getADerivedClass*() - or - // field declared directly in the named type (or an extension of it) - subtypes = false and - classWithMember = namedClass - ) + elementSpec(namespace, type, subtypes, name, signature, _) + ) + or + // Member variables + elementSpec(namespace, type, subtypes, name, signature, _) and + signature = "" and + exists(Class namedClass, Class classWithMember, MemberVariable member | + member.getName() = name and + member = classWithMember.getAMember() and + namedClass.hasQualifiedName(namespace, type) and + result = member + | + // field declared in the named type or a subtype of it (or an extension of any) + subtypes = true and + classWithMember = namedClass.getADerivedClass*() or - // Global or namespace variables - elementSpec(namespace, type, subtypes, name, signature, _) and - signature = "" and - type = "" and + // field declared directly in the named type (or an extension of it) subtypes = false and - result = any(GlobalOrNamespaceVariable v | v.hasQualifiedName(namespace, name)) + classWithMember = namedClass ) + or + // Global or namespace variables + elementSpec(namespace, type, subtypes, name, signature, _) and + signature = "" and + type = "" and + subtypes = false and + result = any(GlobalOrNamespaceVariable v | v.hasQualifiedName(namespace, name)) } cached diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Cast.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Cast.qll index 83364e422ebe..e5df5cb160f3 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Cast.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Cast.qll @@ -750,6 +750,16 @@ class SizeofPackTypeOperator extends SizeofPackOperator { */ class SizeofOperator extends Expr, @runtime_sizeof { override int getPrecedence() { result = 16 } + + /** + * Gets the contained type of this `sizeof`. For example, + * the result is `int` in both cases below: + * ``` + * sizeof(int); + * sizeof(42); + * ``` + */ + Type getTypeOperand() { none() } // overridden in subclasses } /** @@ -766,6 +776,8 @@ class SizeofExprOperator extends SizeofOperator { /** Gets the contained expression. */ Expr getExprOperand() { result = this.getChild(0) } + override Type getTypeOperand() { result = this.getExprOperand().getType() } + override string toString() { result = "sizeof()" } override predicate mayBeImpure() { this.getExprOperand().mayBeImpure() } @@ -784,8 +796,7 @@ class SizeofTypeOperator extends SizeofOperator { override string getAPrimaryQlClass() { result = "SizeofTypeOperator" } - /** Gets the contained type. */ - Type getTypeOperand() { sizeof_bind(underlyingElement(this), unresolveElement(result)) } + override Type getTypeOperand() { sizeof_bind(underlyingElement(this), unresolveElement(result)) } override string toString() { result = "sizeof(" + this.getTypeOperand().getName() + ")" } @@ -842,6 +853,16 @@ class AlignofTypeOperator extends AlignofOperator { */ class DatasizeofOperator extends Expr, @datasizeof { override int getPrecedence() { result = 16 } + + /** + * Gets the contained type of this `__datasizeof`. For example, + * the result is `int` in both cases below: + * ``` + * __datasizeof(int); + * __datasizeof(42); + * ``` + */ + Type getTypeOperand() { none() } } /** @@ -855,6 +876,8 @@ class DatasizeofExprOperator extends DatasizeofOperator { /** Gets the contained expression. */ Expr getExprOperand() { result = this.getChild(0) } + override Type getTypeOperand() { result = this.getExprOperand().getType() } + override string toString() { result = "__datasizeof()" } override predicate mayBeImpure() { this.getExprOperand().mayBeImpure() } @@ -870,8 +893,7 @@ class DatasizeofTypeOperator extends DatasizeofOperator { override string getAPrimaryQlClass() { result = "DatasizeofTypeOperator" } - /** Gets the contained type. */ - Type getTypeOperand() { sizeof_bind(underlyingElement(this), unresolveElement(result)) } + override Type getTypeOperand() { sizeof_bind(underlyingElement(this), unresolveElement(result)) } override string toString() { result = "__datasizeof(" + this.getTypeOperand().getName() + ")" } diff --git a/cpp/ql/lib/semmle/code/cpp/internal/Overlay.qll b/cpp/ql/lib/semmle/code/cpp/internal/Overlay.qll new file mode 100644 index 000000000000..571f034d85b1 --- /dev/null +++ b/cpp/ql/lib/semmle/code/cpp/internal/Overlay.qll @@ -0,0 +1,60 @@ +/** + * Defines entity discard predicates for C++ overlay analysis. + */ + +/** + * Holds always for the overlay variant and never for the base variant. + * This local predicate is used to define local predicates that behave + * differently for the base and overlay variant. + */ +overlay[local] +predicate isOverlay() { databaseMetadata("isOverlay", "true") } + +overlay[local] +private string getLocationFilePath(@location_default loc) { + exists(@file file | locations_default(loc, file, _, _, _, _) | files(file, result)) +} + +/** + * Gets the file path for an element with a single location. + */ +overlay[local] +private string getSingleLocationFilePath(@element e) { + // @var_decl has a direct location in the var_decls relation + exists(@location_default loc | var_decls(e, _, _, _, loc) | result = getLocationFilePath(loc)) + //TODO: add other kinds of elements with single locations +} + +/** + * Gets the file path for an element with potentially multiple locations. + */ +overlay[local] +private string getMultiLocationFilePath(@element e) { + // @variable gets its location(s) from its @var_decl(s) + exists(@var_decl vd, @location_default loc | var_decls(vd, e, _, _, loc) | + result = getLocationFilePath(loc) + ) + //TODO: add other kinds of elements with multiple locations +} + +/** + * A local helper predicate that holds in the base variant and never in the + * overlay variant. + */ +overlay[local] +private predicate holdsInBase() { not isOverlay() } + +/** + * Discards an element from the base variant if: + * - It has a single location in a changed file, or + * - All of its locations are in changed files. + */ +overlay[discard_entity] +private predicate discardElement(@element e) { + holdsInBase() and + ( + overlayChangedFiles(getSingleLocationFilePath(e)) + or + forex(string path | path = getMultiLocationFilePath(e) | overlayChangedFiles(path)) + ) +} diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll index 582391e81cc9..b5f4f88f4bd5 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll @@ -861,6 +861,10 @@ predicate jumpStep(Node n1, Node n2) { n2.(FlowSummaryNode).getSummaryNode()) } +bindingset[c] +pragma[inline_late] +private int getIndirectionIndexLate(Content c) { result = c.getIndirectionIndex() } + /** * Holds if data can flow from `node1` to `node2` via an assignment to `f`. * Thus, `node2` references an object with a field `f` that contains the @@ -873,23 +877,17 @@ predicate jumpStep(Node n1, Node n2) { predicate storeStepImpl(Node node1, Content c, Node node2, boolean certain) { exists( PostFieldUpdateNode postFieldUpdate, int indirectionIndex1, int numberOfLoads, - StoreInstruction store + StoreInstruction store, FieldContent fc | postFieldUpdate = node2 and - nodeHasInstruction(node1, store, pragma[only_bind_into](indirectionIndex1)) and + fc = c and + nodeHasInstruction(node1, pragma[only_bind_into](store), + pragma[only_bind_into](indirectionIndex1)) and postFieldUpdate.getIndirectionIndex() = 1 and numberOfLoadsFromOperand(postFieldUpdate.getFieldAddress(), - store.getDestinationAddressOperand(), numberOfLoads, certain) - | - exists(FieldContent fc | fc = c | - fc.getField() = postFieldUpdate.getUpdatedField() and - fc.getIndirectionIndex() = 1 + indirectionIndex1 + numberOfLoads - ) - or - exists(UnionContent uc | uc = c | - uc.getAField() = postFieldUpdate.getUpdatedField() and - uc.getIndirectionIndex() = 1 + indirectionIndex1 + numberOfLoads - ) + store.getDestinationAddressOperand(), numberOfLoads, certain) and + fc.getAField() = postFieldUpdate.getUpdatedField() and + getIndirectionIndexLate(fc) = 1 + indirectionIndex1 + numberOfLoads ) or // models-as-data summarized flow @@ -965,22 +963,17 @@ predicate nodeHasInstruction(Node node, Instruction instr, int indirectionIndex) * `node2`. */ predicate readStep(Node node1, ContentSet c, Node node2) { - exists(FieldAddress fa1, Operand operand, int numberOfLoads, int indirectionIndex2 | + exists( + FieldAddress fa1, Operand operand, int numberOfLoads, int indirectionIndex2, FieldContent fc + | + fc = c and nodeHasOperand(node2, operand, indirectionIndex2) and // The `1` here matches the `node2.getIndirectionIndex() = 1` conjunct // in `storeStep`. nodeHasOperand(node1, fa1.getObjectAddressOperand(), 1) and - numberOfLoadsFromOperand(fa1, operand, numberOfLoads, _) - | - exists(FieldContent fc | fc = c | - fc.getField() = fa1.getField() and - fc.getIndirectionIndex() = indirectionIndex2 + numberOfLoads - ) - or - exists(UnionContent uc | uc = c | - uc.getAField() = fa1.getField() and - uc.getIndirectionIndex() = indirectionIndex2 + numberOfLoads - ) + numberOfLoadsFromOperand(fa1, operand, numberOfLoads, _) and + fc.getAField() = fa1.getField() and + getIndirectionIndexLate(fc) = indirectionIndex2 + numberOfLoads ) or // models-as-data summarized flow @@ -1574,7 +1567,7 @@ pragma[inline] ContentApprox getContentApprox(Content c) { exists(string prefix, Field f | prefix = result.(FieldApproxContent).getPrefix() and - f = c.(FieldContent).getField() and + f = c.(NonUnionFieldContent).getField() and fieldHasApproxName(f, prefix) ) or diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index 82dcd43e1364..1185b6a0c9c3 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll @@ -2078,38 +2078,151 @@ predicate localExprFlow(Expr e1, Expr e2) { localExprFlowPlus(e1, e2) } +/** + * A canonical representation of a field. + * + * For performance reasons we want a unique `Content` that represents + * a given field across any template instantiation of a class. + * + * This is possible in _almost_ all cases, but there are cases where it is + * not possible to map between a field in the uninstantiated template to a + * field in the instantiated template. This happens in the case of local class + * definitions (because the local class is not the template that constructs + * the instantiation - it is the enclosing function). So this abstract class + * has two implementations: a non-local case (where we can represent a + * canonical field as the field declaration from an uninstantiated class + * template or a non-templated class), and a local case (where we simply use + * the field from the instantiated class). + */ +abstract private class CanonicalField extends Field { + /** Gets a field represented by this canonical field. */ + abstract Field getAField(); + + /** + * Gets a class that declares a field represented by this canonical field. + */ + abstract Class getADeclaringType(); + + /** + * Gets a type that this canonical field may have. Note that this may + * not be a unique type. For example, consider this case: + * ``` + * template + * struct S { T x; }; + * + * S s1; + * S s2; + * ``` + * In this case the canonical field corresponding to `S::x` has two types: + * `int` and `char`. + */ + Type getAType() { result = this.getAField().getType() } + + Type getAnUnspecifiedType() { result = this.getAType().getUnspecifiedType() } +} + +private class NonLocalCanonicalField extends CanonicalField { + Class declaringType; + + NonLocalCanonicalField() { + declaringType = this.getDeclaringType() and + not declaringType.isFromTemplateInstantiation(_) and + not declaringType.isLocal() // handled in LocalCanonicalField + } + + override Field getAField() { + exists(Class c | result.getDeclaringType() = c | + // Either the declaring class of the field is a template instantiation + // that has been constructed from this canonical declaration + c.isConstructedFrom(declaringType) and + pragma[only_bind_out](result.getName()) = pragma[only_bind_out](this.getName()) + or + // or this canonical declaration is not a template. + not c.isConstructedFrom(_) and + result = this + ) + } + + override Class getADeclaringType() { + result = this.getDeclaringType() + or + result.isConstructedFrom(this.getDeclaringType()) + } +} + +private class LocalCanonicalField extends CanonicalField { + Class declaringType; + + LocalCanonicalField() { + declaringType = this.getDeclaringType() and + declaringType.isLocal() + } + + override Field getAField() { result = this } + + override Class getADeclaringType() { result = declaringType } +} + +/** + * A canonical representation of a `Union`. See `CanonicalField` for the explanation for + * why we need a canonical representation. + */ +abstract private class CanonicalUnion extends Union { + /** Gets a union represented by this canonical union. */ + abstract Union getAUnion(); + + /** Gets a canonical field of this canonical union. */ + CanonicalField getACanonicalField() { result.getDeclaringType() = this } +} + +private class NonLocalCanonicalUnion extends CanonicalUnion { + NonLocalCanonicalUnion() { not this.isFromTemplateInstantiation(_) and not this.isLocal() } + + override Union getAUnion() { + result = this + or + result.isConstructedFrom(this) + } +} + +private class LocalCanonicalUnion extends CanonicalUnion { + LocalCanonicalUnion() { this.isLocal() } + + override Union getAUnion() { result = this } +} + bindingset[f] pragma[inline_late] -private int getFieldSize(Field f) { result = f.getType().getSize() } +private int getFieldSize(CanonicalField f) { result = max(f.getAType().getSize()) } /** * Gets a field in the union `u` whose size * is `bytes` number of bytes. */ -private Field getAFieldWithSize(Union u, int bytes) { - result = u.getAField() and +private CanonicalField getAFieldWithSize(CanonicalUnion u, int bytes) { + result = u.getACanonicalField() and bytes = getFieldSize(result) } cached private newtype TContent = - TFieldContent(Field f, int indirectionIndex) { - // the indirection index for field content starts at 1 (because `TFieldContent` is thought of as + TNonUnionContent(CanonicalField f, int indirectionIndex) { + // the indirection index for field content starts at 1 (because `TNonUnionContent` is thought of as // the address of the field, `FieldAddress` in the IR). - indirectionIndex = [1 .. SsaImpl::getMaxIndirectionsForType(f.getUnspecifiedType())] and + indirectionIndex = [1 .. max(SsaImpl::getMaxIndirectionsForType(f.getAnUnspecifiedType()))] and // Reads and writes of union fields are tracked using `UnionContent`. not f.getDeclaringType() instanceof Union } or - TUnionContent(Union u, int bytes, int indirectionIndex) { - exists(Field f | - f = u.getAField() and + TUnionContent(CanonicalUnion u, int bytes, int indirectionIndex) { + exists(CanonicalField f | + f = u.getACanonicalField() and bytes = getFieldSize(f) and // We key `UnionContent` by the union instead of its fields since a write to one // field can be read by any read of the union's fields. Again, the indirection index // is 1-based (because 0 is considered the address). indirectionIndex = [1 .. max(SsaImpl::getMaxIndirectionsForType(getAFieldWithSize(u, bytes) - .getUnspecifiedType()) + .getAnUnspecifiedType()) )] ) } or @@ -2124,14 +2237,14 @@ private newtype TContent = */ class Content extends TContent { /** Gets a textual representation of this element. */ - abstract string toString(); + string toString() { none() } // overridden in subclasses predicate hasLocationInfo(string path, int sl, int sc, int el, int ec) { path = "" and sl = 0 and sc = 0 and el = 0 and ec = 0 } /** Gets the indirection index of this `Content`. */ - abstract int getIndirectionIndex(); + int getIndirectionIndex() { none() } // overridden in subclasses /** * INTERNAL: Do not use. @@ -2142,7 +2255,7 @@ class Content extends TContent { * For example, a write to a field `f` implies that any content of * the form `*f` is also cleared. */ - abstract predicate impliesClearOf(Content c); + predicate impliesClearOf(Content c) { none() } // overridden in subclasses } /** @@ -2162,37 +2275,62 @@ private module ContentStars { private import ContentStars -/** A reference through a non-union instance field. */ +private class TFieldContent = TNonUnionContent or TUnionContent; + +/** + * A `Content` that references a `Field`. This may be a field of a `struct`, + * `class`, or `union`. In the case of a `union` there may be multiple fields + * associated with the same `Content`. + */ class FieldContent extends Content, TFieldContent { - private Field f; + /** Gets a `Field` of this `Content`. */ + Field getAField() { none() } + + /** + * Gets the field associated with this `Content`, if a unique one exists. + * + * For fields from template instantiations this predicate may still return + * more than one field, but all the fields will be constructed from the same + * template. + */ + Field getField() { none() } // overridden in subclasses + + override int getIndirectionIndex() { none() } // overridden in subclasses + + override string toString() { none() } // overridden in subclasses + + override predicate impliesClearOf(Content c) { none() } // overridden in subclasses +} + +/** A reference through a non-union instance field. */ +class NonUnionFieldContent extends FieldContent, TNonUnionContent { + private CanonicalField f; private int indirectionIndex; - FieldContent() { this = TFieldContent(f, indirectionIndex) } + NonUnionFieldContent() { this = TNonUnionContent(f, indirectionIndex) } override string toString() { result = contentStars(this) + f.toString() } - Field getField() { result = f } + final override Field getField() { result = f.getAField() } + + override Field getAField() { result = this.getField() } /** Gets the indirection index of this `FieldContent`. */ - pragma[inline] - override int getIndirectionIndex() { - pragma[only_bind_into](result) = pragma[only_bind_out](indirectionIndex) - } + override int getIndirectionIndex() { result = indirectionIndex } override predicate impliesClearOf(Content c) { - exists(FieldContent fc | - fc = c and - fc.getField() = f and + exists(int i | + c = TNonUnionContent(f, i) and // If `this` is `f` then `c` is cleared if it's of the // form `*f`, `**f`, etc. - fc.getIndirectionIndex() >= indirectionIndex + i >= indirectionIndex ) } } /** A reference through an instance field of a union. */ -class UnionContent extends Content, TUnionContent { - private Union u; +class UnionContent extends FieldContent, TUnionContent { + private CanonicalUnion u; private int indirectionIndex; private int bytes; @@ -2200,27 +2338,31 @@ class UnionContent extends Content, TUnionContent { override string toString() { result = contentStars(this) + u.toString() } + final override Field getField() { result = unique( | | u.getACanonicalField()).getAField() } + /** Gets a field of the underlying union of this `UnionContent`, if any. */ - Field getAField() { result = u.getAField() and getFieldSize(result) = bytes } + override Field getAField() { + exists(CanonicalField cf | + cf = u.getACanonicalField() and + result = cf.getAField() and + getFieldSize(cf) = bytes + ) + } /** Gets the underlying union of this `UnionContent`. */ - Union getUnion() { result = u } + Union getUnion() { result = u.getAUnion() } /** Gets the indirection index of this `UnionContent`. */ - pragma[inline] - override int getIndirectionIndex() { - pragma[only_bind_into](result) = pragma[only_bind_out](indirectionIndex) - } + override int getIndirectionIndex() { result = indirectionIndex } override predicate impliesClearOf(Content c) { - exists(UnionContent uc | - uc = c and - uc.getUnion() = u and + exists(int i | + c = TUnionContent(u, _, i) and // If `this` is `u` then `c` is cleared if it's of the // form `*u`, `**u`, etc. (and we ignore `bytes` because // we know the entire union is overwritten because it's a // union). - uc.getIndirectionIndex() >= indirectionIndex + i >= indirectionIndex ) } } @@ -2234,10 +2376,7 @@ class ElementContent extends Content, TElementContent { ElementContent() { this = TElementContent(indirectionIndex) } - pragma[inline] - override int getIndirectionIndex() { - pragma[only_bind_into](result) = pragma[only_bind_out](indirectionIndex) - } + override int getIndirectionIndex() { result = indirectionIndex } override predicate impliesClearOf(Content c) { none() } diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Memcpy.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Memcpy.qll index 311847e8aec0..dc1302d3b8fc 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Memcpy.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Memcpy.qll @@ -12,8 +12,8 @@ import semmle.code.cpp.models.interfaces.Taint import semmle.code.cpp.models.interfaces.NonThrowing /** - * The standard functions `memcpy`, `memmove` and `bcopy`; and the gcc variant - * `__builtin___memcpy_chk`. + * The standard functions `memcpy`, `memmove` and `bcopy`; and variants such as + * `__builtin___memcpy_chk` and `__builtin___memmove_chk`. */ private class MemcpyFunction extends ArrayFunction, DataFlowFunction, SideEffectFunction, AliasFunction, NonCppThrowingFunction @@ -27,7 +27,9 @@ private class MemcpyFunction extends ArrayFunction, DataFlowFunction, SideEffect // bcopy(src, dest, num) // mempcpy(dest, src, num) // memccpy(dest, src, c, n) - this.hasGlobalName(["bcopy", mempcpy(), "memccpy", "__builtin___memcpy_chk"]) + this.hasGlobalName([ + "bcopy", mempcpy(), "memccpy", "__builtin___memcpy_chk", "__builtin___memmove_chk" + ]) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Memset.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Memset.qll index 51234e50f94f..f7d3f50234cd 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Memset.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Memset.qll @@ -19,7 +19,8 @@ private class MemsetFunctionModel extends ArrayFunction, DataFlowFunction, Alias this.hasGlobalOrStdName("wmemset") or this.hasGlobalName([ - bzero(), "__builtin_memset", "__builtin_memset_chk", "RtlZeroMemory", "RtlSecureZeroMemory" + bzero(), "__builtin_memset", "__builtin_memset_chk", "__builtin___memset_chk", + "RtlZeroMemory", "RtlSecureZeroMemory" ]) } @@ -32,7 +33,7 @@ private class MemsetFunctionModel extends ArrayFunction, DataFlowFunction, Alias or this.hasGlobalOrStdName("wmemset") or - this.hasGlobalName(["__builtin_memset", "__builtin_memset_chk"]) + this.hasGlobalName(["__builtin_memset", "__builtin_memset_chk", "__builtin___memset_chk"]) ) and result = 1 } diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll index 966c7425dc45..df16d220e02d 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll @@ -30,7 +30,9 @@ class StrcatFunction extends TaintFunction, DataFlowFunction, ArrayFunction, Sid "_mbsncat", // _mbsncat(dst, src, max_amount) "_mbsncat_l", // _mbsncat_l(dst, src, max_amount, locale) "_mbsnbcat", // _mbsnbcat(dest, src, count) - "_mbsnbcat_l" // _mbsnbcat_l(dest, src, count, locale) + "_mbsnbcat_l", // _mbsnbcat_l(dest, src, count, locale) + "__builtin___strcat_chk", // __builtin___strcat_chk (dest, src, magic) + "__builtin___strncat_chk" // __builtin___strncat_chk (dest, src, max_amount, magic) ]) } @@ -56,7 +58,7 @@ class StrcatFunction extends TaintFunction, DataFlowFunction, ArrayFunction, Sid override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { ( - this.getName() = ["strncat", "wcsncat", "_mbsncat", "_mbsncat_l"] and + this.getName() = ["strncat", "wcsncat", "_mbsncat", "_mbsncat_l", "__builtin___strncat_chk"] and input.isParameter(2) or this.getName() = ["_mbsncat_l", "_mbsnbcat_l"] and diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll index b7ed20f1bab3..b3230a5a1c8c 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll @@ -36,7 +36,11 @@ class StrcpyFunction extends ArrayFunction, DataFlowFunction, TaintFunction, Sid "_mbsnbcpy", // _mbsnbcpy(dest, src, max_amount) "stpcpy", // stpcpy(dest, src) "stpncpy", // stpncpy(dest, src, max_amount) - "strlcpy" // strlcpy(dst, src, dst_size) + "strlcpy", // strlcpy(dst, src, dst_size) + "__builtin___strcpy_chk", // __builtin___strcpy_chk (dest, src, magic) + "__builtin___stpcpy_chk", // __builtin___stpcpy_chk (dest, src, magic) + "__builtin___stpncpy_chk", // __builtin___stpncpy_chk(dest, src, max_amount, magic) + "__builtin___strncpy_chk" // __builtin___strncpy_chk (dest, src, max_amount, magic) ]) or ( diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index 95cdb2624b5b..722866c512f2 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -93,6 +93,18 @@ private float wideningUpperBounds(ArithmeticType t) { result = 1.0 / 0.0 // +Inf } +/** Gets the widened lower bound for a given type and lower bound. */ +bindingset[type, lb] +float widenLowerBound(Type type, float lb) { + result = max(float widenLB | widenLB = wideningLowerBounds(type) and widenLB <= lb | widenLB) +} + +/** Gets the widened upper bound for a given type and upper bound. */ +bindingset[type, ub] +float widenUpperBound(Type type, float ub) { + result = min(float widenUB | widenUB = wideningUpperBounds(type) and widenUB >= ub | widenUB) +} + /** * Gets the value of the expression `e`, if it is a constant. * This predicate also handles the case of constant variables initialized in different @@ -504,6 +516,336 @@ private predicate isRecursiveExpr(Expr e) { ) } +/** + * Provides predicates that estimate the number of bounds that the range + * analysis might produce. + */ +private module BoundsEstimate { + /** + * Gets the limit beyond which we enable widening. That is, if the estimated + * number of bounds exceeds this limit, we enable widening such that the limit + * will not be reached. + */ + float getBoundsLimit() { + // This limit is arbitrary, but low enough that it prevents timeouts on + // specific observed customer databases (and the in the tests). + result = 2.0.pow(40) + } + + /** Gets the maximum number of bounds possible for `t` when widening is used. */ + private int getNrOfWideningBounds(ArithmeticType t) { + result = strictcount(wideningLowerBounds(t)).maximum(strictcount(wideningUpperBounds(t))) + } + + /** + * Holds if `boundFromGuard(guard, v, _, branch)` holds, but without + * relying on range analysis (which would cause non-monotonic recursion + * elsewhere). + */ + private predicate hasBoundFromGuard(Expr guard, VariableAccess v, boolean branch) { + exists(Expr lhs | linearAccess(lhs, v, _, _) | + relOpWithSwapAndNegate(guard, lhs, _, _, _, branch) + or + eqOpWithSwapAndNegate(guard, lhs, _, true, branch) + or + eqZeroWithNegate(guard, lhs, true, branch) + ) + } + + /** Holds if `def` is a guard phi node for `v` with a bound from a guard. */ + predicate isGuardPhiWithBound(RangeSsaDefinition def, StackVariable v, VariableAccess access) { + exists(Expr guard, boolean branch | + def.isGuardPhi(v, access, guard, branch) and + hasBoundFromGuard(guard, access, branch) + ) + } + + /** + * Gets the number of bounds for `def` when `def` is a guard phi node for the + * variable `v`. + */ + language[monotonicAggregates] + private float nrOfBoundsPhiGuard(RangeSsaDefinition def, StackVariable v) { + // If we have + // + // if (x < c) { e1 } + // e2 + // + // then `e2` is both a guard phi node (guarded by `x < c`) and a normal + // phi node (control is merged after the `if` statement). + // + // Assume `x` has `n` bounds. Then `n` bounds are propagated to the guard + // phi node `{ e1 }` and, since `{ e1 }` is input to `e2` as a normal phi + // node, `n` bounds are propagated to `e2`. If we also propagate the `n` + // bounds to `e2` as a guard phi node, then we square the number of + // bounds. + // + // However in practice `x < c` is going to cut down the number of bounds: + // The tracked bounds can't flow to both branches as that would require + // them to simultaneously be greater and smaller than `c`. To approximate + // this better, the contribution from a guard phi node that is also a + // normal phi node is 1. + exists(def.getAPhiInput(v)) and + isGuardPhiWithBound(def, v, _) and + result = 1 + or + not exists(def.getAPhiInput(v)) and + // If there's different `access`es, then they refer to the same variable + // with the same lower bounds. Hence adding these guards make no sense (the + // implementation will take the union, but they'll be removed by + // deduplication). Hence we use `max` as an approximation. + result = + max(VariableAccess access | isGuardPhiWithBound(def, v, access) | nrOfBoundsExpr(access)) + or + def.isPhiNode(v) and + not isGuardPhiWithBound(def, v, _) and + result = 0 + } + + /** + * Gets the number of bounds for `def` when `def` is a normal phi node for the + * variable `v`. + */ + language[monotonicAggregates] + private float nrOfBoundsPhiNormal(RangeSsaDefinition def, StackVariable v) { + result = + strictsum(RangeSsaDefinition inputDef | + inputDef = def.getAPhiInput(v) + | + nrOfBoundsDef(inputDef, v) + ) + or + def.isPhiNode(v) and + not exists(def.getAPhiInput(v)) and + result = 0 + } + + /** + * Gets the number of bounds for `def` when `def` is an NE phi node for the + * variable `v`. + */ + language[monotonicAggregates] + float nrOfBoundsNEPhi(RangeSsaDefinition def, StackVariable v) { + // If there's different `access`es, then they refer to the same variable + // with the same lower bounds. Hence adding these guards make no sense (the + // implementation will take the union, but they'll be removed by + // deduplication). Hence we use `max` as an approximation. + result = max(VariableAccess access | isNEPhi(v, def, access, _) | nrOfBoundsExpr(access)) + or + def.isPhiNode(v) and + not isNEPhi(v, def, _, _) and + result = 0 + } + + /** + * Gets the number of bounds for `def` when `def` is an unsupported guard phi + * node for the variable `v`. + */ + language[monotonicAggregates] + private float nrOfBoundsUnsupportedGuardPhi(RangeSsaDefinition def, StackVariable v) { + // If there's different `access`es, then they refer to the same variable + // with the same lower bounds. Hence adding these guards make no sense (the + // implementation will take the union, but they'll be removed by + // deduplication). Hence we use `max` as an approximation. + result = + max(VariableAccess access | isUnsupportedGuardPhi(v, def, access) | nrOfBoundsExpr(access)) + or + def.isPhiNode(v) and + not isUnsupportedGuardPhi(v, def, _) and + result = 0 + } + + private float nrOfBoundsPhi(RangeSsaDefinition def, StackVariable v) { + // The cases for phi nodes are not mutually exclusive. For instance a phi + // node can be both a guard phi node and a normal phi node. To handle this + // we sum the contributions from the different cases. + result = + nrOfBoundsPhiGuard(def, v) + nrOfBoundsPhiNormal(def, v) + nrOfBoundsNEPhi(def, v) + + nrOfBoundsUnsupportedGuardPhi(def, v) + } + + /** Gets the estimated number of bounds for `def` and `v`. */ + float nrOfBoundsDef(RangeSsaDefinition def, StackVariable v) { + // Recursive definitions are already widened, so we simply estimate them as + // having the number of widening bounds available. This is crucial as it + // ensures that we don't follow recursive cycles when calculating the + // estimate. Had that not been the case the estimate itself would be at risk + // of causing performance issues and being non-functional. + if isRecursiveDef(def, v) + then result = getNrOfWideningBounds(getVariableRangeType(v)) + else ( + // Definitions with a defining value + exists(Expr defExpr | assignmentDef(def, v, defExpr) and result = nrOfBoundsExpr(defExpr)) + or + // Assignment operations with a defining value + exists(AssignOperation assignOp | + def = assignOp and + assignOp.getLValue() = v.getAnAccess() and + result = nrOfBoundsExpr(assignOp) + ) + or + // Phi nodes + result = nrOfBoundsPhi(def, v) + or + unanalyzableDefBounds(def, v, _, _) and result = 1 + ) + } + + /** + * Gets a naive estimate of the number of bounds for `e`. + * + * The estimate is like an abstract interpretation of the range analysis, + * where the abstract value is the number of bounds. For instance, + * `nrOfBoundsExpr(12) = 1` and `nrOfBoundsExpr(x + y) = nrOfBoundsExpr(x) * + * nrOfBoundsExpr(y)`. + * + * The estimated number of bounds will usually be greater than the actual + * number of bounds, as the estimate can not detect cases where bounds are cut + * down when tracked precisely. For instance, in + * ```c + * int x = 1; + * if (cond) { x = 1; } + * int y = x + x; + * ``` + * the actual number of bounds for `y` is 1. However, the estimate will be 4 + * as the conditional assignment to `x` gives two bounds for `x` on the last + * line and the addition gives 2 * 2 bounds. There are two sources of inaccuracies: + * + * 1. Without tracking the lower bounds we can't see that `x` is assigned a + * value that is equal to its lower bound. + * 2. Had the conditional assignment been `x = 2` then the estimate of two + * bounds for `x` would have been correct. However, the estimate of 4 for `y` + * would still be incorrect. Summing the actual bounds `{1,2}` with itself + * gives `{2,3,4}` which is only three bounds. Again, we can't realise this + * without tracking the bounds. + * + * Since these inaccuracies compound the estimated number of bounds can often + * be _much_ greater than the actual number of bounds. Do note though that the + * estimate is not _guaranteed_ to be an upper bound. In some cases the + * approximations might underestimate the number of bounds. + * + * This predicate is functional. This is crucial as: + * + * - It ensures that the computing the estimate itself is fast. + * - Our use of monotonic aggregates assumes functionality. + * + * Any non-functional case should be considered a bug. + */ + float nrOfBoundsExpr(Expr e) { + // Similarly to what we do for definitions, we do not attempt to measure the + // number of bounds for recursive expressions. + if isRecursiveExpr(e) + then result = getNrOfWideningBounds(e.getUnspecifiedType()) + else + if analyzableExpr(e) + then + // The cases here are an abstraction of and mirrors the cases inside + // `getLowerBoundsImpl`/`getUpperBoundsImpl`. + result = 1 and exists(getValue(e).toFloat()) + or + exists(Expr operand | result = nrOfBoundsExpr(operand) | + effectivelyMultipliesByPositive(e, operand, _) + or + effectivelyMultipliesByNegative(e, operand, _) + ) + or + exists(ConditionalExpr condExpr | + e = condExpr and + result = nrOfBoundsExpr(condExpr.getThen()) * nrOfBoundsExpr(condExpr.getElse()) + ) + or + exists(BinaryOperation binop | + e = binop and + result = nrOfBoundsExpr(binop.getLeftOperand()) * nrOfBoundsExpr(binop.getRightOperand()) + | + e instanceof MaxExpr or + e instanceof MinExpr or + e instanceof AddExpr or + e instanceof SubExpr or + e instanceof UnsignedMulExpr or + e instanceof UnsignedBitwiseAndExpr + ) + or + exists(AssignExpr assign | e = assign and result = nrOfBoundsExpr(assign.getRValue())) + or + exists(AssignArithmeticOperation assignOp | + e = assignOp and + result = nrOfBoundsExpr(assignOp.getLValue()) * nrOfBoundsExpr(assignOp.getRValue()) + | + e instanceof AssignAddExpr or + e instanceof AssignSubExpr or + e instanceof UnsignedAssignMulExpr + ) + or + // Handles `AssignMulByPositiveConstantExpr` and `AssignMulByNegativeConstantExpr` + exists(AssignMulByConstantExpr mulExpr | + e = mulExpr and + result = nrOfBoundsExpr(mulExpr.getLValue()) + ) + or + // Handles the prefix and postfix increment and decrement operators. + exists(CrementOperation crementOp | + e = crementOp and result = nrOfBoundsExpr(crementOp.getOperand()) + ) + or + exists(RemExpr remExpr | e = remExpr | result = nrOfBoundsExpr(remExpr.getRightOperand())) + or + exists(Conversion convExpr | + e = convExpr and + if convExpr.getUnspecifiedType() instanceof BoolType + then result = 1 + else result = nrOfBoundsExpr(convExpr.getExpr()) + ) + or + exists(RangeSsaDefinition def, StackVariable v | + e = def.getAUse(v) and + result = nrOfBoundsDef(def, v) and + // Avoid returning two numbers when `e` is a use with a constant value. + not exists(getValue(e).toFloat()) + ) + or + exists(RShiftExpr rsExpr | + e = rsExpr and + exists(getValue(rsExpr.getRightOperand().getFullyConverted()).toInt()) and + result = nrOfBoundsExpr(rsExpr.getLeftOperand()) + ) + else ( + exists(exprMinVal(e)) and result = 1 + ) + } +} + +/** + * Holds if `v` is a variable for which widening should be used, as otherwise a + * very large number of bounds might be generated during the range analysis for + * `v`. + */ +private predicate varHasTooManyBounds(StackVariable v) { + exists(RangeSsaDefinition def | + def.getAVariable() = v and + BoundsEstimate::nrOfBoundsDef(def, v) > BoundsEstimate::getBoundsLimit() + ) +} + +/** + * Holds if `e` is an expression for which widening should be used, as otherwise + * a very large number of bounds might be generated during the range analysis + * for `e`. + */ +private predicate exprHasTooManyBounds(Expr e) { + BoundsEstimate::nrOfBoundsExpr(e) > BoundsEstimate::getBoundsLimit() + or + // A subexpressions of an expression with too many bounds may itself not have + // to many bounds. For instance, `x + y` can have too many bounds without `x` + // having as well. But in these cases, still want to consider `e` as having + // too many bounds since: + // - The overall result is widened anyway, so widening `e` as well is unlikely + // to cause further precision loss. + // - The number of bounds could be very large but still below the arbitrary + // limit. Hence widening `e` can improve performance. + exists(Expr pe | exprHasTooManyBounds(pe) and e.getParent() = pe) +} + /** * Holds if `binop` is a binary operation that's likely to be assigned a * quadratic (or more) number of candidate bounds during the analysis. This can @@ -654,13 +996,8 @@ private float getTruncatedLowerBounds(Expr expr) { if exprMinVal(expr) <= newLB and newLB <= exprMaxVal(expr) then // Apply widening where we might get a combinatorial explosion. - if isRecursiveBinary(expr) - then - result = - max(float widenLB | - widenLB = wideningLowerBounds(expr.getUnspecifiedType()) and - not widenLB > newLB - ) + if isRecursiveBinary(expr) or exprHasTooManyBounds(expr) + then result = widenLowerBound(expr.getUnspecifiedType(), newLB) else result = newLB else result = exprMinVal(expr) ) and @@ -713,13 +1050,8 @@ private float getTruncatedUpperBounds(Expr expr) { if exprMinVal(expr) <= newUB and newUB <= exprMaxVal(expr) then // Apply widening where we might get a combinatorial explosion. - if isRecursiveBinary(expr) - then - result = - min(float widenUB | - widenUB = wideningUpperBounds(expr.getUnspecifiedType()) and - not widenUB < newUB - ) + if isRecursiveBinary(expr) or exprHasTooManyBounds(expr) + then result = widenUpperBound(expr.getUnspecifiedType(), newUB) else result = newUB else result = exprMaxVal(expr) ) @@ -1796,18 +2128,12 @@ module SimpleRangeAnalysisInternal { | // Widening: check whether the new lower bound is from a source which // depends recursively on the current definition. - if isRecursiveDef(def, v) + if isRecursiveDef(def, v) or varHasTooManyBounds(v) then // The new lower bound is from a recursive source, so we round // down to one of a limited set of values to prevent the // recursion from exploding. - result = - max(float widenLB | - widenLB = wideningLowerBounds(getVariableRangeType(v)) and - not widenLB > truncatedLB - | - widenLB - ) + result = widenLowerBound(getVariableRangeType(v), truncatedLB) else result = truncatedLB ) or @@ -1826,18 +2152,12 @@ module SimpleRangeAnalysisInternal { | // Widening: check whether the new upper bound is from a source which // depends recursively on the current definition. - if isRecursiveDef(def, v) + if isRecursiveDef(def, v) or varHasTooManyBounds(v) then // The new upper bound is from a recursive source, so we round // up to one of a fixed set of values to prevent the recursion // from exploding. - result = - min(float widenUB | - widenUB = wideningUpperBounds(getVariableRangeType(v)) and - not widenUB < truncatedUB - | - widenUB - ) + result = widenUpperBound(getVariableRangeType(v), truncatedUB) else result = truncatedUB ) or @@ -1845,4 +2165,60 @@ module SimpleRangeAnalysisInternal { // bound is `typeUpperBound`. defMightOverflowNegatively(def, v) and result = varMaxVal(v) } + + /** Gets the estimate of the number of bounds for `e`. */ + float estimateNrOfBounds(Expr e) { result = BoundsEstimate::nrOfBoundsExpr(e) } +} + +/** Provides predicates for debugging the simple range analysis library. */ +private module Debug { + Locatable getRelevantLocatable() { + exists(string filepath, int startline | + result.getLocation().hasLocationInfo(filepath, startline, _, _, _) and + filepath.matches("%/test.c") and + startline = [621 .. 639] + ) + } + + float debugGetLowerBoundsImpl(Expr e) { + e = getRelevantLocatable() and + result = getLowerBoundsImpl(e) + } + + float debugGetUpperBoundsImpl(Expr e) { + e = getRelevantLocatable() and + result = getUpperBoundsImpl(e) + } + + /** + * Counts the number of lower bounds for a given expression. This predicate is + * useful for identifying performance issues in the range analysis. + */ + predicate countGetLowerBoundsImpl(Expr e, int n) { + e = getRelevantLocatable() and + n = strictcount(float lb | lb = getLowerBoundsImpl(e) | lb) + } + + float debugNrOfBounds(Expr e) { + e = getRelevantLocatable() and + result = BoundsEstimate::nrOfBoundsExpr(e) + } + + /** + * Finds any expressions for which `nrOfBounds` is not functional. The result + * should be empty, so this predicate is useful to debug non-functional cases. + */ + int nonFunctionalNrOfBounds(Expr e) { + strictcount(BoundsEstimate::nrOfBoundsExpr(e)) > 1 and + result = BoundsEstimate::nrOfBoundsExpr(e) + } + + /** + * Holds if `e` is an expression that has a lower bound, but where + * `nrOfBounds` does not compute an estimate. + */ + predicate missingNrOfBounds(Expr e, float n) { + n = lowerBound(e) and + not exists(BoundsEstimate::nrOfBoundsExpr(e)) + } } diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index c16b29b27f71..a42ce5fc9432 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -1,3 +1,4 @@ + /*- Compilations -*/ /** @@ -47,6 +48,19 @@ compilation_args( string arg : string ref ); +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + /** * Optionally, record the build mode for each compilation. */ @@ -1327,7 +1341,8 @@ specialnamequalifyingelements( @namequalifiableelement = @expr | @namequalifier; @namequalifyingelement = @namespace | @specialnamequalifyingelement - | @usertype; + | @usertype + | @decltype; namequalifiers( unique int id: @namequalifier, @@ -2364,6 +2379,24 @@ link_parent( int link_target : @link_target ref ); +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: string ref +); + /*- XML Files -*/ xmlEncoding( diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 42cff5d8d16f..4ff7d2dd67b5 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,7 +2,7 @@ @compilation - 12643 + 12641 @externalDataElement @@ -10,35 +10,35 @@ @file - 65212 + 65204 @folder - 12389 + 12388 @diagnostic - 1484 - - - @location_default - 46945087 + 359 @pch 249 + + @location_default + 46943825 + @macro_expansion - 40256583 + 40272429 @other_macro_reference - 300694 + 300698 @normal_function - 2738022 + 2737949 @unknown_function @@ -46,11 +46,11 @@ @constructor - 698728 + 698692 @destructor - 86202 + 86200 @conversion_function @@ -58,11 +58,11 @@ @operator - 652444 + 652427 @user_defined_literal - 998 + 997 @deduction_guide @@ -70,27 +70,27 @@ @fun_decl - 4202967 + 4202854 @var_decl - 9383104 + 9383101 @type_decl - 1633482 + 1633438 @namespace_decl - 407775 + 407918 @using_declaration - 267822 + 268041 @using_directive - 6473 + 6472 @using_enum_declaration @@ -98,27 +98,27 @@ @static_assert - 173262 + 172982 @parameter - 7019832 + 7019643 @membervariable - 1497674 + 1499494 @globalvariable - 488148 + 488384 @localvariable - 726300 + 726016 @enumconstant - 347816 + 347930 @errortype @@ -366,23 +366,23 @@ @pointer - 452469 + 452457 @type_with_specifiers - 693238 + 693219 @array - 90319 + 90316 @routineptr - 684112 + 684282 @reference - 967314 + 967288 @gnu_vector @@ -394,7 +394,7 @@ @rvalue_reference - 291042 + 291034 @block @@ -406,7 +406,7 @@ @decltype - 102349 + 102350 @typeof @@ -458,7 +458,7 @@ @remove_cv - 2065 + 2062 @remove_cvref @@ -486,27 +486,27 @@ @remove_reference - 5723 + 5715 @struct - 979892 + 979799 @union - 20958 + 20957 @enum - 41550 + 41551 @template_parameter - 867095 + 866985 @alias - 1762360 + 1762169 @unknown_usertype @@ -514,15 +514,15 @@ @class - 324974 + 324966 @template_template_parameter - 6115 + 6114 @proxy_class - 48439 + 48433 @scoped_enum @@ -530,11 +530,11 @@ @template_struct - 212084 + 212057 @template_class - 29316 + 29315 @template_union @@ -542,23 +542,23 @@ @mangledname - 6364268 + 6364346 @type_mention - 5903894 + 5907630 @concept_template - 3614 + 3609 @routinetype - 604322 + 604495 @ptrtomember - 9728 + 9726 @specifier @@ -570,11 +570,11 @@ @stdattribute - 352794 + 352784 @declspec - 330281 + 330286 @msattribute @@ -590,7 +590,7 @@ @attribute_arg_constant_expr - 71856 + 71889 @attribute_arg_expr @@ -610,19 +610,19 @@ @derivation - 476902 + 476878 @frienddecl - 700465 + 700430 @comment - 11233402 + 11233100 @namespace - 8650 + 8649 @specialnamequalifyingelement @@ -630,15 +630,15 @@ @namequalifier - 3041979 + 3037638 @value - 13474601 + 13474772 @initialiser - 2251321 + 2247637 @address_of @@ -646,43 +646,43 @@ @indirect - 404153 + 404158 @array_to_pointer - 1953750 + 1953767 @parexpr - 4915206 + 4915249 @arithnegexpr - 586534 + 586539 @unaryplusexpr - 4069 + 4068 @complementexpr - 38199 + 38200 @notexpr - 355764 + 355767 @postincrexpr - 84571 + 84572 @postdecrexpr - 57394 + 57395 @preincrexpr - 96714 + 96715 @predecrexpr @@ -690,87 +690,87 @@ @conditionalexpr - 897879 + 897887 @addexpr - 571552 + 571560 @subexpr - 466799 + 466803 @mulexpr - 435793 + 435798 @divexpr - 52387 + 52388 @remexpr - 16012 + 16011 @paddexpr - 118669 + 118671 @psubexpr - 68016 + 68017 @pdiffexpr - 43912 + 43910 @lshiftexpr - 551696 + 551703 @rshiftexpr - 200554 + 200557 @andexpr - 481218 + 481224 @orexpr - 194055 + 194058 @xorexpr - 73952 + 73953 @eqexpr - 643372 + 643380 @neexpr - 411870 + 411874 @gtexpr - 111149 + 111150 @ltexpr - 139429 + 139430 @geexpr - 81358 + 81359 @leexpr - 292036 + 292039 @assignexpr - 1281144 + 1281160 @assignaddexpr @@ -782,7 +782,7 @@ @assignmulexpr - 11185 + 11184 @assigndivexpr @@ -806,11 +806,11 @@ @assignorexpr - 19606 + 19607 @assignxorexpr - 29909 + 29910 @assignpaddexpr @@ -822,27 +822,27 @@ @andlogicalexpr - 346589 + 346593 @orlogicalexpr - 1103522 + 1103536 @commaexpr - 168288 + 168283 @subscriptexpr - 435142 + 435148 @callexpr - 239780 + 239767 @vastartexpr - 4979 + 4970 @vaargexpr @@ -858,43 +858,43 @@ @varaccess - 8254629 + 8254733 @runtime_sizeof - 402047 + 402052 @runtime_alignof - 49877 + 49874 @expr_stmt - 148364 + 148366 @routineexpr - 5732444 + 5729912 @type_operand - 1405362 + 1405380 @offsetofexpr - 149024 + 149026 @typescompexpr - 701934 + 701943 @literal - 7966299 + 7966268 @aggregateliteral - 1397521 + 1397522 @c_style_cast @@ -902,19 +902,19 @@ @temp_init - 992173 + 990622 @errorexpr - 45686 + 45480 @reference_to - 1903138 + 1903214 @ref_indirect - 2107325 + 2107218 @vacuous_destructor_call @@ -922,7 +922,7 @@ @assume - 4151 + 4143 @conjugation @@ -974,31 +974,31 @@ @thisaccess - 1558277 + 1555764 @new_expr - 46198 + 46195 @delete_expr - 11481 + 11480 @throw_expr - 24178 + 24214 @condition_decl - 408920 + 408340 @braced_init_list - 2151 + 2146 @type_id - 47901 + 47899 @sizeof_pack @@ -1050,11 +1050,11 @@ @isbaseofexpr - 258 + 257 @isclassexpr - 2388 + 2384 @isconvtoexpr @@ -1066,7 +1066,7 @@ @isenumexpr - 2994 + 2993 @ispodexpr @@ -1090,7 +1090,7 @@ @uuidof - 26677 + 26695 @delete_array_expr @@ -1098,23 +1098,23 @@ @new_array_expr - 6653 + 6641 @foldexpr - 1247 + 1246 @ctordirectinit - 112837 + 112831 @ctorvirtualinit - 4020 + 4019 @ctorfieldinit - 206212 + 206206 @ctordelegatinginit @@ -1122,27 +1122,27 @@ @dtordirectdestruct - 39452 + 39450 @dtorvirtualdestruct - 3986 + 3985 @dtorfielddestruct - 39827 + 39825 @static_cast - 348053 + 348044 @reinterpret_cast - 40088 + 40018 @const_cast - 24461 + 24460 @dynamic_cast @@ -1150,11 +1150,11 @@ @lambdaexpr - 19057 + 19023 @param_ref - 164066 + 163867 @noopexpr @@ -1174,7 +1174,7 @@ @istriviallydestructibleexpr - 998 + 997 @istriviallyassignableexpr @@ -1186,7 +1186,7 @@ @istrivialexpr - 3367 + 3375 @isstandardlayoutexpr @@ -1254,11 +1254,11 @@ @isfinalexpr - 9403 + 9402 @noexceptexpr - 28465 + 28463 @builtinshufflevector @@ -1270,7 +1270,7 @@ @builtinaddressof - 15469 + 15468 @vec_fill @@ -1286,7 +1286,7 @@ @spaceshipexpr - 1312 + 1310 @co_await @@ -1306,7 +1306,7 @@ @hasuniqueobjectrepresentations - 43 + 42 @builtinbitcast @@ -1322,7 +1322,7 @@ @issame - 4539 + 4533 @isfunction @@ -1430,7 +1430,7 @@ @reuseexpr - 847039 + 845836 @istriviallycopyassignable @@ -1486,7 +1486,7 @@ @referenceconstructsfromtemporary - 43 + 42 @referenceconvertsfromtemporary @@ -1494,7 +1494,7 @@ @isconvertible - 129 + 128 @isvalidwinrttype @@ -1530,67 +1530,67 @@ @requires_expr - 16503 + 16479 @nested_requirement - 688 + 687 @compound_requirement - 10951 + 10936 @concept_id - 90433 + 90305 @lambdacapture - 31965 + 31909 @stmt_expr - 2031613 + 2031639 @stmt_if - 990214 + 990227 @stmt_while - 39647 + 39648 @stmt_goto - 157909 + 157889 @stmt_label - 78025 + 78015 @stmt_return - 1241788 + 1241800 @stmt_block - 1728666 + 1728620 @stmt_end_test_while - 233641 + 233644 @stmt_for - 84389 + 84390 @stmt_switch_case - 836152 + 834964 @stmt_switch - 411868 + 411283 @stmt_asm @@ -1598,11 +1598,11 @@ @stmt_decl - 772425 + 771066 @stmt_empty - 429404 + 428794 @stmt_continue @@ -1610,15 +1610,15 @@ @stmt_break - 137934 + 137691 @stmt_try_block - 26740 + 26771 @stmt_microsoft_try - 211 + 210 @stmt_set_vla_size @@ -1630,19 +1630,19 @@ @stmt_assigned_goto - 12426 + 12427 @stmt_range_based_for - 6384 + 6372 @stmt_handler - 43781 + 43779 @stmt_constexpr_if - 106037 + 106035 @stmt_co_return @@ -1662,43 +1662,43 @@ @ppd_if - 590942 + 590926 @ppd_ifdef - 214363 + 214366 @ppd_ifndef - 158633 + 160378 @ppd_elif - 21917 + 21914 @ppd_else - 234905 + 234898 @ppd_endif - 888971 + 888947 @ppd_plain_include - 318564 + 318524 @ppd_define - 2750123 + 2750049 @ppd_undef - 100424 + 100421 @ppd_pragma - 406187 + 406176 @ppd_include_next @@ -1706,7 +1706,7 @@ @ppd_line - 18812 + 18805 @ppd_error @@ -1762,13 +1762,60 @@ + + databaseMetadata + 1 + + + metadataKey + 1 + + + value + 1 + + + + + metadataKey + value + + + 12 + + + + + + value + metadataKey + + + 12 + + + + + + + + overlayChangedFiles + 50 + + + path + 50 + + + + compilations - 12643 + 12641 id - 12643 + 12641 cwd @@ -1786,7 +1833,7 @@ 1 2 - 12643 + 12641 @@ -1812,19 +1859,410 @@ compilation_args - 1012213 + 1012084 + + + id + 12641 + + + num + 1467 + + + arg + 29264 + + + + + id + num + + + 12 + + + 36 + 42 + 1003 + + + 42 + 43 + 1098 + + + 43 + 44 + 718 + + + 44 + 45 + 506 + + + 45 + 51 + 950 + + + 51 + 70 + 485 + + + 71 + 72 + 707 + + + 72 + 90 + 897 + + + 94 + 96 + 390 + + + 98 + 99 + 1341 + + + 100 + 102 + 95 + + + 103 + 104 + 1996 + + + 104 + 119 + 1066 + + + 120 + 138 + 929 + + + 139 + 140 + 454 + + + + + + + id + arg + + + 12 + + + 34 + 38 + 591 + + + 38 + 39 + 1499 + + + 39 + 40 + 982 + + + 40 + 42 + 1087 + + + 42 + 53 + 601 + + + 53 + 54 + 707 + + + 54 + 63 + 897 + + + 64 + 67 + 401 + + + 67 + 68 + 1404 + + + 68 + 70 + 971 + + + 70 + 71 + 1404 + + + 73 + 79 + 950 + + + 79 + 89 + 1130 + + + 89 + 90 + 10 + + + + + + + num + id + + + 12 + + + 43 + 90 + 63 + + + 90 + 108 + 116 + + + 108 + 183 + 105 + + + 198 + 422 + 116 + + + 422 + 595 + 126 + + + 595 + 605 + 126 + + + 605 + 749 + 116 + + + 750 + 778 + 116 + + + 781 + 883 + 116 + + + 930 + 1190 + 84 + + + 1197 + 1198 + 380 + + + + + + + num + arg + + + 12 + + + 1 + 5 + 126 + + + 5 + 7 + 116 + + + 9 + 12 + 73 + + + 12 + 15 + 116 + + + 15 + 18 + 95 + + + 18 + 22 + 116 + + + 22 + 27 + 126 + + + 27 + 29 + 84 + + + 29 + 34 + 116 + + + 34 + 44 + 126 + + + 45 + 63 + 116 + + + 67 + 94 + 116 + + + 94 + 164 + 116 + + + 171 + 199 + 21 + + + + + + + arg + id + + + 12 + + + 1 + 2 + 13402 + + + 2 + 3 + 12683 + + + 3 + 103 + 2196 + + + 104 + 1198 + 982 + + + + + + + arg + num + + + 12 + + + 1 + 2 + 19379 + + + 2 + 3 + 8723 + + + 3 + 62 + 1161 + + + + + + + + + compilation_expanded_args + 1012084 id - 12643 + 12641 num - 1468 + 1467 arg - 29268 + 29264 @@ -1944,7 +2382,7 @@ 42 53 - 602 + 601 53 @@ -2152,12 +2590,12 @@ 1 2 - 13403 + 13402 2 3 - 12685 + 12683 3 @@ -2183,12 +2621,12 @@ 1 2 - 19382 + 19379 2 3 - 8724 + 8723 3 @@ -2497,7 +2935,7 @@ compilation_time - 62952 + 62953 id @@ -2513,7 +2951,7 @@ seconds - 13396 + 18352 @@ -2594,47 +3032,52 @@ 3 4 - 816 + 653 4 5 - 544 + 707 6 - 7 - 163 + 9 + 217 - 8 - 9 - 163 + 9 + 10 + 108 10 11 - 217 + 163 11 - 15 + 12 217 15 - 19 + 17 + 163 + + + 17 + 21 217 - 19 - 26 + 21 + 51 217 - 42 - 92 - 163 + 118 + 119 + 54 @@ -2707,17 +3150,17 @@ 3 4 - 1361 + 1252 4 5 - 980 + 1089 5 6 - 272 + 163 6 @@ -2727,27 +3170,27 @@ 7 8 - 163 + 272 8 9 - 272 + 326 9 - 14 + 17 381 - 17 - 44 + 23 + 53 381 - 49 - 87 - 108 + 98 + 99 + 54 @@ -2793,23 +3236,23 @@ 12 - 3 - 4 + 4 + 5 54 - 4 - 5 + 5 + 6 54 - 144 - 145 + 195 + 196 54 - 149 - 150 + 197 + 198 54 @@ -2826,27 +3269,22 @@ 1 2 - 6807 + 12198 2 3 - 3376 + 4084 3 4 - 1633 + 1415 4 - 5 - 1034 - - - 5 - 45 - 544 + 44 + 653 @@ -2862,32 +3300,22 @@ 1 2 - 6208 + 10891 2 3 - 2668 + 4465 3 4 - 2069 + 1579 4 - 5 - 925 - - - 5 - 8 - 1198 - - - 8 - 74 - 326 + 71 + 1415 @@ -2903,17 +3331,12 @@ 1 2 - 10510 + 14866 2 3 - 2831 - - - 3 - 4 - 54 + 3485 @@ -2923,23 +3346,23 @@ diagnostic_for - 4152 + 506 diagnostic - 1484 + 359 compilation - 1355 + 190 file_number - 21 + 10 file_number_diagnostic_number - 107 + 52 @@ -2953,12 +3376,12 @@ 1 2 - 1441 + 211 - 63 - 64 - 43 + 2 + 3 + 147 @@ -2974,7 +3397,7 @@ 1 2 - 1484 + 359 @@ -2990,7 +3413,7 @@ 1 2 - 1484 + 359 @@ -3003,15 +3426,20 @@ 12 + + 2 + 3 + 105 + 3 4 - 1312 + 63 5 6 - 43 + 21 @@ -3027,7 +3455,7 @@ 1 2 - 1355 + 190 @@ -3040,15 +3468,20 @@ 12 + + 2 + 3 + 105 + 3 4 - 1312 + 63 5 6 - 43 + 21 @@ -3062,9 +3495,9 @@ 12 - 69 - 70 - 21 + 34 + 35 + 10 @@ -3078,9 +3511,9 @@ 12 - 63 - 64 - 21 + 18 + 19 + 10 @@ -3096,7 +3529,7 @@ 5 6 - 21 + 10 @@ -3112,17 +3545,22 @@ 1 2 - 43 + 21 - 2 - 3 - 43 + 4 + 5 + 10 - 63 - 64 - 21 + 10 + 11 + 10 + + + 18 + 19 + 10 @@ -3138,12 +3576,17 @@ 2 3 - 43 + 21 - 63 - 64 - 64 + 8 + 9 + 10 + + + 18 + 19 + 21 @@ -3159,7 +3602,7 @@ 1 2 - 107 + 52 @@ -3169,19 +3612,19 @@ compilation_finished - 12643 + 12641 id - 12643 + 12641 cpu_seconds - 9379 + 9409 elapsed_seconds - 232 + 200 @@ -3195,7 +3638,7 @@ 1 2 - 12643 + 12641 @@ -3211,7 +3654,7 @@ 1 2 - 12643 + 12641 @@ -3227,17 +3670,17 @@ 1 2 - 7763 + 7846 2 3 - 1172 + 1130 3 - 29 - 443 + 35 + 433 @@ -3253,12 +3696,12 @@ 1 2 - 8735 + 8744 2 3 - 644 + 665 @@ -3274,46 +3717,81 @@ 1 2 - 63 + 42 2 3 - 21 + 10 3 + 4 + 10 + + + 4 5 - 21 + 10 - 8 - 9 - 31 + 9 + 10 + 10 + + + 10 + 11 + 10 + + + 11 + 12 + 10 12 + 13 + 10 + + + 14 15 - 21 + 10 - 15 - 37 - 21 + 19 + 20 + 10 - 51 - 177 - 21 + 32 + 33 + 10 - 241 - 286 - 21 + 57 + 58 + 10 + + + 154 + 155 + 10 - 326 - 327 + 251 + 252 + 10 + + + 306 + 307 + 10 + + + 309 + 310 10 @@ -3330,46 +3808,81 @@ 1 2 - 63 + 42 2 3 - 21 + 10 3 + 4 + 10 + + + 4 5 - 21 + 10 - 8 - 9 - 31 + 9 + 10 + 10 + + + 10 + 11 + 10 + + + 11 + 12 + 10 12 + 13 + 10 + + + 14 15 - 21 + 10 - 15 - 37 - 21 + 18 + 19 + 10 - 48 - 162 - 21 + 29 + 30 + 10 - 165 - 221 - 21 + 54 + 55 + 10 + + + 149 + 150 + 10 + + + 152 + 153 + 10 - 237 - 238 + 228 + 229 + 10 + + + 255 + 256 10 @@ -3607,31 +4120,31 @@ locations_default - 46945087 + 46943825 id - 46945087 + 46943825 file - 40918 + 40917 beginLine - 7500620 + 7500418 beginColumn - 21956 + 21955 endLine - 7501742 + 7501541 endColumn - 53393 + 53391 @@ -3645,7 +4158,7 @@ 1 2 - 46945087 + 46943825 @@ -3661,7 +4174,7 @@ 1 2 - 46945087 + 46943825 @@ -3677,7 +4190,7 @@ 1 2 - 46945087 + 46943825 @@ -3693,7 +4206,7 @@ 1 2 - 46945087 + 46943825 @@ -3709,7 +4222,7 @@ 1 2 - 46945087 + 46943825 @@ -3942,7 +4455,7 @@ 112 156 - 1996 + 1995 @@ -4039,7 +4552,7 @@ 13 26 - 3493 + 3492 26 @@ -4069,7 +4582,7 @@ 67 76 - 3493 + 3492 76 @@ -4084,7 +4597,7 @@ 102 116 - 3493 + 3492 116 @@ -4094,7 +4607,7 @@ 136 363 - 1497 + 1496 @@ -4110,32 +4623,32 @@ 1 2 - 4957457 + 4957324 2 3 - 779066 + 779045 3 4 - 543911 + 543897 4 12 - 570359 + 570343 12 97 - 563372 + 563357 97 637 - 86452 + 86449 @@ -4151,27 +4664,27 @@ 1 2 - 5019458 + 5019323 2 3 - 1221306 + 1221273 3 6 - 639969 + 639952 6 57 - 563248 + 563233 57 329 - 56636 + 56635 @@ -4187,27 +4700,27 @@ 1 2 - 5641339 + 5641187 2 3 - 483158 + 483145 3 7 - 582085 + 582069 7 25 - 565244 + 565229 25 94 - 228792 + 228786 @@ -4223,12 +4736,12 @@ 1 2 - 7034552 + 7034363 2 85 - 466067 + 466055 @@ -4244,32 +4757,32 @@ 1 2 - 5026444 + 5026309 2 3 - 739395 + 739375 3 4 - 539795 + 539780 4 12 - 586950 + 586935 12 72 - 564121 + 564106 72 250 - 43912 + 43910 @@ -4290,7 +4803,7 @@ 2 6 - 1996 + 1995 6 @@ -4361,7 +4874,7 @@ 1 2 - 1996 + 1995 2 @@ -4421,7 +4934,7 @@ 243 329 - 499 + 498 @@ -4594,7 +5107,7 @@ 2 5 - 1497 + 1496 5 @@ -4609,7 +5122,7 @@ 13 23 - 1996 + 1995 23 @@ -4629,7 +5142,7 @@ 58 73 - 1497 + 1496 73 @@ -4665,32 +5178,32 @@ 1 2 - 4955336 + 4955203 2 3 - 781561 + 781540 3 4 - 544785 + 544770 4 12 - 567864 + 567848 12 95 - 563497 + 563482 95 620 - 88697 + 88695 @@ -4706,27 +5219,27 @@ 1 2 - 5016589 + 5016454 2 3 - 1223801 + 1223768 3 6 - 633357 + 633340 6 52 - 564121 + 564106 52 329 - 63872 + 63870 @@ -4742,12 +5255,12 @@ 1 2 - 7051643 + 7051453 2 15 - 450099 + 450087 @@ -4763,27 +5276,27 @@ 1 2 - 5640466 + 5640314 2 3 - 480538 + 480525 3 7 - 587075 + 587059 7 25 - 568862 + 568846 25 89 - 224800 + 224794 @@ -4799,32 +5312,32 @@ 1 2 - 5025072 + 5024937 2 3 - 743762 + 743742 3 4 - 539545 + 539531 4 12 - 587574 + 587558 12 72 - 562749 + 562734 72 250 - 43038 + 43037 @@ -4962,12 +5475,12 @@ 1 2 - 15968 + 15967 2 3 - 5988 + 5987 3 @@ -5048,7 +5561,7 @@ 14 28 - 4491 + 4490 28 @@ -5084,12 +5597,12 @@ 1 2 - 15968 + 15967 2 3 - 5988 + 5987 3 @@ -5139,15 +5652,15 @@ files - 65212 + 65204 id - 65212 + 65204 name - 65212 + 65204 @@ -5161,7 +5674,7 @@ 1 2 - 65212 + 65204 @@ -5177,7 +5690,7 @@ 1 2 - 65212 + 65204 @@ -5187,15 +5700,15 @@ folders - 12389 + 12388 id - 12389 + 12388 name - 12389 + 12388 @@ -5209,7 +5722,7 @@ 1 2 - 12389 + 12388 @@ -5225,7 +5738,7 @@ 1 2 - 12389 + 12388 @@ -5235,15 +5748,15 @@ containerparent - 77581 + 77571 parent - 12389 + 12388 child - 77581 + 77571 @@ -5257,7 +5770,7 @@ 1 2 - 6031 + 6030 2 @@ -5308,7 +5821,7 @@ 1 2 - 77581 + 77571 @@ -5318,23 +5831,23 @@ numlines - 807883 + 807862 element_id - 806761 + 806739 num_lines - 39421 + 39420 num_code - 34056 + 34055 num_comment - 18338 + 18337 @@ -5348,7 +5861,7 @@ 1 2 - 805638 + 805616 2 @@ -5369,7 +5882,7 @@ 1 2 - 805638 + 805616 2 @@ -5390,7 +5903,7 @@ 1 2 - 806511 + 806489 2 @@ -5411,7 +5924,7 @@ 1 2 - 26696 + 26695 2 @@ -5426,7 +5939,7 @@ 5 35 - 2994 + 2993 39 @@ -5447,7 +5960,7 @@ 1 2 - 27195 + 27194 2 @@ -5457,12 +5970,12 @@ 3 4 - 2495 + 2494 4 7 - 3493 + 3492 7 @@ -5483,7 +5996,7 @@ 1 2 - 26821 + 26820 2 @@ -5519,7 +6032,7 @@ 1 2 - 21831 + 21830 2 @@ -5560,7 +6073,7 @@ 1 2 - 22205 + 22204 2 @@ -5585,7 +6098,7 @@ 9 13 - 1497 + 1496 @@ -5601,7 +6114,7 @@ 1 2 - 21956 + 21955 2 @@ -5637,12 +6150,12 @@ 1 2 - 11352 + 11351 2 3 - 1996 + 1995 3 @@ -5652,12 +6165,12 @@ 4 7 - 1497 + 1496 8 22 - 1497 + 1496 42 @@ -5678,12 +6191,12 @@ 1 2 - 11352 + 11351 2 3 - 1996 + 1995 3 @@ -5698,7 +6211,7 @@ 8 27 - 1497 + 1496 30 @@ -5719,12 +6232,12 @@ 1 2 - 11352 + 11351 2 3 - 1996 + 1995 3 @@ -5734,12 +6247,12 @@ 4 8 - 1497 + 1496 8 31 - 1497 + 1496 35 @@ -5754,11 +6267,11 @@ diagnostics - 1484 + 359 id - 1484 + 359 severity @@ -5766,19 +6279,19 @@ error_tag - 43 + 73 error_message - 150 + 147 full_error_message - 150 + 179 location - 64 + 179 @@ -5792,7 +6305,7 @@ 1 2 - 1484 + 359 @@ -5808,7 +6321,7 @@ 1 2 - 1484 + 359 @@ -5824,7 +6337,7 @@ 1 2 - 1484 + 359 @@ -5840,7 +6353,7 @@ 1 2 - 1484 + 359 @@ -5856,7 +6369,7 @@ 1 2 - 1484 + 359 @@ -5870,9 +6383,14 @@ 12 - 69 - 70 - 21 + 3 + 4 + 10 + + + 31 + 32 + 10 @@ -5886,9 +6404,14 @@ 12 - 2 - 3 - 21 + 1 + 2 + 10 + + + 6 + 7 + 10 @@ -5902,9 +6425,14 @@ 12 - 7 - 8 - 21 + 2 + 3 + 10 + + + 12 + 13 + 10 @@ -5918,9 +6446,14 @@ 12 - 7 - 8 - 21 + 3 + 4 + 10 + + + 14 + 15 + 10 @@ -5936,7 +6469,12 @@ 3 4 - 21 + 10 + + + 14 + 15 + 10 @@ -5950,14 +6488,24 @@ 12 - 6 - 7 - 21 + 1 + 2 + 42 - 63 - 64 - 21 + 3 + 4 + 10 + + + 9 + 10 + 10 + + + 18 + 19 + 10 @@ -5973,7 +6521,7 @@ 1 2 - 43 + 73 @@ -5989,12 +6537,17 @@ 1 2 - 21 + 52 - 6 - 7 - 21 + 2 + 3 + 10 + + + 7 + 8 + 10 @@ -6010,12 +6563,17 @@ 1 2 - 21 + 52 - 6 - 7 - 21 + 3 + 4 + 10 + + + 9 + 10 + 10 @@ -6031,12 +6589,17 @@ 1 2 - 21 + 52 - 2 - 3 - 21 + 3 + 4 + 10 + + + 9 + 10 + 10 @@ -6052,12 +6615,17 @@ 1 2 - 129 + 105 - 63 - 64 - 21 + 2 + 3 + 31 + + + 18 + 19 + 10 @@ -6073,7 +6641,7 @@ 1 2 - 150 + 147 @@ -6089,7 +6657,7 @@ 1 2 - 150 + 147 @@ -6105,7 +6673,12 @@ 1 2 - 150 + 116 + + + 2 + 3 + 31 @@ -6121,7 +6694,12 @@ 1 2 - 150 + 116 + + + 2 + 3 + 31 @@ -6137,12 +6715,12 @@ 1 2 - 129 + 168 - 63 - 64 - 21 + 18 + 19 + 10 @@ -6158,7 +6736,7 @@ 1 2 - 150 + 179 @@ -6174,7 +6752,7 @@ 1 2 - 150 + 179 @@ -6190,7 +6768,7 @@ 1 2 - 150 + 179 @@ -6206,7 +6784,7 @@ 1 2 - 150 + 179 @@ -6220,14 +6798,14 @@ 12 - 3 - 4 - 43 + 1 + 2 + 168 - 63 - 64 - 21 + 18 + 19 + 10 @@ -6243,7 +6821,7 @@ 1 2 - 64 + 179 @@ -6259,7 +6837,7 @@ 1 2 - 64 + 179 @@ -6275,12 +6853,7 @@ 1 2 - 21 - - - 3 - 4 - 43 + 179 @@ -6296,12 +6869,7 @@ 1 2 - 21 - - - 3 - 4 - 43 + 179 @@ -6359,7 +6927,7 @@ pch_uses - 4134 + 4127 pch @@ -6367,11 +6935,11 @@ compilation - 4134 + 4127 id - 4134 + 4127 @@ -6567,7 +7135,7 @@ 1 2 - 4134 + 4127 @@ -6583,7 +7151,7 @@ 1 2 - 4134 + 4127 @@ -6599,7 +7167,7 @@ 1 2 - 4134 + 4127 @@ -6615,7 +7183,7 @@ 1 2 - 4134 + 4127 @@ -6741,11 +7309,11 @@ fileannotations - 4200551 + 4200019 id - 5767 + 5766 kind @@ -6753,11 +7321,11 @@ name - 58716 + 58709 value - 39514 + 39509 @@ -6776,7 +7344,7 @@ 2 3 - 5566 + 5565 @@ -7002,22 +7570,22 @@ 1 2 - 11027 + 11025 2 3 - 4362 + 4361 3 5 - 5059 + 5058 5 7 - 4098 + 4097 7 @@ -7032,7 +7600,7 @@ 16 19 - 4890 + 4889 19 @@ -7047,17 +7615,17 @@ 47 128 - 4922 + 4921 128 459 - 4626 + 4625 459 546 - 1711 + 1710 @@ -7073,7 +7641,7 @@ 1 2 - 58716 + 58709 @@ -7089,17 +7657,17 @@ 1 2 - 11587 + 11585 2 3 - 7689 + 7688 3 4 - 4098 + 4097 4 @@ -7109,27 +7677,27 @@ 6 8 - 3422 + 3421 8 11 - 4742 + 4741 11 17 - 5397 + 5396 17 23 - 4700 + 4699 23 41 - 4679 + 4678 41 @@ -7160,7 +7728,7 @@ 2 4 - 1637 + 1636 4 @@ -7170,12 +7738,12 @@ 5 8 - 2461 + 2460 8 14 - 2968 + 2967 14 @@ -7190,7 +7758,7 @@ 24 51 - 3538 + 3537 51 @@ -7205,7 +7773,7 @@ 81 151 - 3084 + 3083 151 @@ -7220,7 +7788,7 @@ 473 547 - 2313 + 2312 @@ -7236,7 +7804,7 @@ 1 2 - 39503 + 39498 2 @@ -7257,7 +7825,7 @@ 1 2 - 3401 + 3400 2 @@ -7272,7 +7840,7 @@ 5 8 - 2482 + 2481 8 @@ -7302,7 +7870,7 @@ 41 66 - 2989 + 2988 66 @@ -7312,7 +7880,7 @@ 92 113 - 2989 + 2988 113 @@ -7332,15 +7900,15 @@ inmacroexpansion - 149995903 + 149997296 id - 24670868 + 24671176 inv - 3705270 + 3705372 @@ -7354,37 +7922,37 @@ 1 3 - 2209399 + 2209512 3 5 - 1474977 + 1474990 5 6 - 1620368 + 1620382 6 7 - 6582542 + 6582599 7 8 - 8718997 + 8719073 8 9 - 3557047 + 3557078 9 22 - 507534 + 507539 @@ -7400,32 +7968,32 @@ 1 2 - 531661 + 531711 2 3 - 743208 + 743239 3 4 - 481512 + 481516 4 7 - 275303 + 275305 7 8 - 282152 + 282155 8 9 - 330246 + 330249 9 @@ -7435,22 +8003,22 @@ 10 11 - 444650 + 444654 11 337 - 307798 + 307801 339 423 - 281755 + 281757 423 7616 - 23934 + 23935 @@ -7460,15 +8028,15 @@ affectedbymacroexpansion - 48735823 + 48736245 id - 7044739 + 7044800 inv - 3803120 + 3803153 @@ -7482,37 +8050,37 @@ 1 2 - 3846709 + 3846743 2 3 - 766304 + 766311 3 4 - 361841 + 361844 4 5 - 772736 + 772743 5 12 - 535160 + 535164 12 50 - 556267 + 556272 50 9900 - 205719 + 205721 @@ -7528,62 +8096,62 @@ 1 4 - 313248 + 313251 4 7 - 316607 + 316610 7 9 - 301087 + 301090 9 12 - 342938 + 342941 12 13 - 456004 + 456008 13 14 - 226099 + 226101 14 15 - 408038 + 408042 15 16 - 166429 + 166430 16 17 - 377677 + 377681 17 18 - 200636 + 200638 18 20 - 344255 + 344258 20 25 - 285393 + 285395 25 @@ -7598,19 +8166,19 @@ macroinvocations - 40337724 + 40354061 id - 40337724 + 40354061 macro_id - 182049 + 182487 location - 5912934 + 5919829 kind @@ -7628,7 +8196,7 @@ 1 2 - 40337724 + 40354061 @@ -7644,7 +8212,7 @@ 1 2 - 40337724 + 40354061 @@ -7660,7 +8228,7 @@ 1 2 - 40337724 + 40354061 @@ -7676,17 +8244,17 @@ 1 2 - 60773 + 61156 2 3 - 27555 + 27610 3 4 - 17970 + 17971 4 @@ -7710,13 +8278,13 @@ 33 - 180 - 13668 + 182 + 13723 - 181 + 185 72152 - 9802 + 9747 @@ -7732,12 +8300,12 @@ 1 2 - 77274 + 77656 2 3 - 30550 + 30605 3 @@ -7757,17 +8325,17 @@ 8 18 - 14158 + 14213 18 - 88 - 13668 + 90 + 13723 - 89 + 90 12187 - 7678 + 7569 @@ -7783,12 +8351,12 @@ 1 2 - 177475 + 177859 2 3 - 4574 + 4628 @@ -7804,17 +8372,17 @@ 1 2 - 5256183 + 5256860 2 4 - 422313 + 428528 4 72152 - 234437 + 234440 @@ -7830,12 +8398,12 @@ 1 2 - 5890770 + 5897665 2 37 - 22163 + 22164 @@ -7851,7 +8419,7 @@ 1 2 - 5912934 + 5919829 @@ -7865,13 +8433,13 @@ 12 - 1490 - 1491 + 1499 + 1500 54 - 739237 - 739238 + 739517 + 739518 54 @@ -7886,8 +8454,8 @@ 12 - 282 - 283 + 291 + 292 54 @@ -7907,13 +8475,13 @@ 12 - 1069 - 1070 + 1078 + 1079 54 - 107511 - 107512 + 107627 + 107628 54 @@ -7924,15 +8492,15 @@ macroparent - 33655149 + 33658318 id - 33655149 + 33658318 parent_id - 15926203 + 15929108 @@ -7946,7 +8514,7 @@ 1 2 - 33655149 + 33658318 @@ -7962,27 +8530,27 @@ 1 2 - 7806456 + 7809240 2 3 - 1595479 + 1595503 3 4 - 4702955 + 4703025 4 5 - 1295312 + 1295331 5 205 - 525999 + 526007 @@ -7992,15 +8560,15 @@ macrolocationbind - 6040022 + 6033959 id - 4221190 + 4217710 location - 2279306 + 2276069 @@ -8014,27 +8582,27 @@ 1 2 - 3294948 + 3292783 2 3 - 491264 + 490566 3 4 - 7896 + 7885 4 5 - 413891 + 413303 5 17 - 13189 + 13170 @@ -8050,27 +8618,27 @@ 1 2 - 1337013 + 1335114 2 3 - 482141 + 481456 3 4 - 7810 + 7799 4 5 - 428221 + 427613 5 522 - 24119 + 24085 @@ -8080,11 +8648,11 @@ macro_argument_unexpanded - 82495572 + 82486758 invocation - 26282637 + 26280952 argument_index @@ -8092,7 +8660,7 @@ text - 343270 + 343226 @@ -8106,22 +8674,22 @@ 1 2 - 9679766 + 9680186 2 3 - 9770635 + 9769396 3 4 - 5002265 + 5001631 4 67 - 1829971 + 1829739 @@ -8137,22 +8705,22 @@ 1 2 - 9862401 + 9862798 2 3 - 9788179 + 9786938 3 4 - 4845602 + 4844988 4 67 - 1786453 + 1786227 @@ -8177,7 +8745,7 @@ 646840 - 2488302 + 2488458 31 @@ -8220,57 +8788,57 @@ 1 2 - 39704 + 39699 2 3 - 62329 + 62321 3 4 - 21029 + 21027 4 5 - 34581 + 34577 5 6 - 39250 + 39245 6 9 - 30874 + 30870 9 15 - 28983 + 28979 15 26 - 25888 + 25885 26 57 - 27145 + 27142 57 517 - 25994 + 25990 518 486610 - 7488 + 7487 @@ -8286,17 +8854,17 @@ 1 2 - 243180 + 243149 2 3 - 89876 + 89864 3 9 - 10213 + 10212 @@ -8306,11 +8874,11 @@ macro_argument_expanded - 82495572 + 82486758 invocation - 26282637 + 26280952 argument_index @@ -8318,7 +8886,7 @@ text - 207933 + 207906 @@ -8332,22 +8900,22 @@ 1 2 - 9679766 + 9680186 2 3 - 9770635 + 9769396 3 4 - 5002265 + 5001631 4 67 - 1829971 + 1829739 @@ -8363,22 +8931,22 @@ 1 2 - 12638444 + 12638489 2 3 - 8428470 + 8427402 3 4 - 4225331 + 4224795 4 9 - 990391 + 990265 @@ -8403,7 +8971,7 @@ 646840 - 2488302 + 2488458 31 @@ -8420,7 +8988,7 @@ 1 2 - 602 + 601 2 @@ -8446,22 +9014,22 @@ 1 2 - 21832 + 21829 2 3 - 26860 + 26856 3 4 - 43496 + 43490 4 5 - 15907 + 15905 5 @@ -8471,32 +9039,32 @@ 6 7 - 18399 + 18397 7 10 - 18970 + 18967 10 19 - 18325 + 18323 19 51 - 15780 + 15778 51 252 - 15600 + 15598 252 - 1169205 - 9495 + 1169361 + 9494 @@ -8512,17 +9080,17 @@ 1 2 - 105086 + 105072 2 3 - 88914 + 88903 3 66 - 13931 + 13930 @@ -8532,15 +9100,15 @@ functions - 4049399 + 4049290 id - 4049399 + 4049290 name - 1693362 + 1693316 kind @@ -8558,7 +9126,7 @@ 1 2 - 4049399 + 4049290 @@ -8574,7 +9142,7 @@ 1 2 - 4049399 + 4049290 @@ -8590,17 +9158,17 @@ 1 2 - 1447229 + 1447190 2 4 - 138971 + 138968 4 3162 - 107160 + 107157 @@ -8616,7 +9184,7 @@ 1 2 - 1690493 + 1690447 2 @@ -8723,26 +9291,26 @@ builtin_functions - 30926 + 30923 id - 30926 + 30923 function_entry_point - 1141561 + 1141776 id - 1137813 + 1138028 entry_point - 1141561 + 1141776 @@ -8756,7 +9324,7 @@ 1 2 - 1134611 + 1134826 2 @@ -8777,7 +9345,7 @@ 1 2 - 1141561 + 1141776 @@ -8787,15 +9355,15 @@ function_return_type - 4066864 + 4066754 id - 4049399 + 4049290 return_type - 619261 + 619244 @@ -8809,12 +9377,12 @@ 1 2 - 4031934 + 4031825 2 3 - 17465 + 17464 @@ -8830,22 +9398,22 @@ 1 2 - 309880 + 309871 2 3 - 213697 + 213691 3 5 - 48028 + 48027 5 365 - 46531 + 46530 432 @@ -9130,44 +9698,44 @@ purefunctions - 131703 + 131626 id - 131703 + 131626 function_deleted - 88088 + 87963 id - 88088 + 87963 function_defaulted - 51682 + 51609 id - 51682 + 51609 function_prototyped - 4047902 + 4047793 id - 4047902 + 4047793 @@ -9247,15 +9815,15 @@ member_function_this_type - 674151 + 674133 id - 674151 + 674133 this_type - 176022 + 176018 @@ -9269,7 +9837,7 @@ 1 2 - 674151 + 674133 @@ -9285,17 +9853,17 @@ 1 2 - 47155 + 47154 2 3 - 36926 + 36925 3 4 - 32684 + 32683 4 @@ -9305,17 +9873,17 @@ 5 6 - 12849 + 12848 6 10 - 14471 + 14470 10 65 - 11851 + 11850 @@ -9325,27 +9893,27 @@ fun_decls - 4208955 + 4208841 id - 4202967 + 4202854 function - 4024823 + 4024715 type_id - 611277 + 611260 name - 1691865 + 1691819 location - 2813247 + 2813171 @@ -9359,7 +9927,7 @@ 1 2 - 4202967 + 4202854 @@ -9375,12 +9943,12 @@ 1 2 - 4196979 + 4196866 2 3 - 5988 + 5987 @@ -9396,7 +9964,7 @@ 1 2 - 4202967 + 4202854 @@ -9412,7 +9980,7 @@ 1 2 - 4202967 + 4202854 @@ -9428,12 +9996,12 @@ 1 2 - 3861275 + 3861171 2 5 - 163547 + 163543 @@ -9449,12 +10017,12 @@ 1 2 - 4006360 + 4006252 2 3 - 18463 + 18462 @@ -9470,7 +10038,7 @@ 1 2 - 4024823 + 4024715 @@ -9486,12 +10054,12 @@ 1 2 - 3881734 + 3881630 2 4 - 143088 + 143084 @@ -9507,22 +10075,22 @@ 1 2 - 295159 + 295151 2 3 - 220558 + 220552 3 5 - 48403 + 48401 5 364 - 45908 + 45906 364 @@ -9543,22 +10111,22 @@ 1 2 - 305264 + 305256 2 3 - 211826 + 211820 3 5 - 48028 + 48027 5 1163 - 45908 + 45906 1483 @@ -9579,17 +10147,17 @@ 1 2 - 491516 + 491503 2 3 - 52894 + 52892 3 7 - 50149 + 50148 7 @@ -9610,22 +10178,22 @@ 1 2 - 454964 + 454952 2 3 - 69485 + 69484 3 6 - 56012 + 56011 6 4756 - 30813 + 30812 @@ -9641,22 +10209,22 @@ 1 2 - 1331336 + 1331300 2 3 - 194485 + 194480 3 11 - 129490 + 129487 11 3169 - 36551 + 36550 @@ -9672,17 +10240,17 @@ 1 2 - 1446730 + 1446691 2 4 - 139470 + 139467 4 3162 - 105663 + 105660 @@ -9698,12 +10266,12 @@ 1 2 - 1602045 + 1602002 2 1596 - 89820 + 89817 @@ -9719,17 +10287,17 @@ 1 2 - 1367264 + 1367228 2 3 - 208333 + 208327 3 1592 - 116267 + 116264 @@ -9745,17 +10313,17 @@ 1 2 - 2420283 + 2420218 2 3 - 251496 + 251490 3 211 - 141466 + 141463 @@ -9771,17 +10339,17 @@ 1 2 - 2438995 + 2438930 2 3 - 233283 + 233277 3 211 - 140967 + 140964 @@ -9797,12 +10365,12 @@ 1 2 - 2698851 + 2698778 2 211 - 114396 + 114393 @@ -9818,12 +10386,12 @@ 1 2 - 2774075 + 2774000 2 8 - 39171 + 39170 @@ -9833,22 +10401,22 @@ fun_def - 1422279 + 1422241 id - 1422279 + 1422241 fun_specialized - 7936 + 7922 id - 7936 + 7922 @@ -9866,11 +10434,11 @@ fun_decl_specifiers - 4279688 + 4279573 id - 1748252 + 1748205 name @@ -9888,22 +10456,22 @@ 1 2 - 362899 + 362889 2 3 - 262225 + 262218 3 4 - 1100174 + 1100144 4 5 - 22954 + 22953 @@ -10100,26 +10668,26 @@ fun_decl_empty_throws - 420911 + 421168 fun_decl - 420911 + 421168 fun_decl_noexcept - 141830 + 141823 fun_decl - 141830 + 141823 constant - 141353 + 141346 @@ -10133,7 +10701,7 @@ 1 2 - 141830 + 141823 @@ -10149,7 +10717,7 @@ 1 2 - 140910 + 140903 2 @@ -10164,22 +10732,22 @@ fun_decl_empty_noexcept - 1163672 + 1163640 fun_decl - 1163672 + 1163640 fun_decl_typedef_type - 2761 + 2760 fun_decl - 2761 + 2760 typedeftype_id @@ -10197,7 +10765,7 @@ 1 2 - 2761 + 2760 @@ -10273,19 +10841,19 @@ fun_requires - 29111 + 29070 id - 10112 + 10098 kind - 43 + 42 constraint - 28875 + 28834 @@ -10299,7 +10867,7 @@ 1 2 - 10048 + 10033 2 @@ -10320,7 +10888,7 @@ 1 2 - 7272 + 7262 2 @@ -10330,7 +10898,7 @@ 3 6 - 860 + 859 6 @@ -10340,7 +10908,7 @@ 13 14 - 1140 + 1138 19 @@ -10403,7 +10971,7 @@ 1 2 - 28638 + 28597 2 @@ -10424,7 +10992,7 @@ 1 2 - 28875 + 28834 @@ -10434,19 +11002,19 @@ param_decl_bind - 7310375 + 7310179 id - 7310375 + 7310179 index - 7984 + 7983 fun_decl - 3531684 + 3531589 @@ -10460,7 +11028,7 @@ 1 2 - 7310375 + 7310179 @@ -10476,7 +11044,7 @@ 1 2 - 7310375 + 7310179 @@ -10492,12 +11060,12 @@ 2 3 - 3992 + 3991 6 7 - 1996 + 1995 16 @@ -10533,12 +11101,12 @@ 2 3 - 3992 + 3991 6 7 - 1996 + 1995 16 @@ -10574,27 +11142,27 @@ 1 2 - 1508981 + 1508940 2 3 - 976296 + 976270 3 4 - 602045 + 602029 4 5 - 290668 + 290660 5 65 - 153692 + 153688 @@ -10610,27 +11178,27 @@ 1 2 - 1508981 + 1508940 2 3 - 976296 + 976270 3 4 - 602045 + 602029 4 5 - 290668 + 290660 5 65 - 153692 + 153688 @@ -10640,27 +11208,27 @@ var_decls - 9389965 + 9389962 id - 9383104 + 9383101 variable - 9034676 + 9034682 type_id - 1456461 + 1456422 name - 852544 + 852521 location - 6274572 + 6274404 @@ -10674,7 +11242,7 @@ 1 2 - 9383104 + 9383101 @@ -10690,7 +11258,7 @@ 1 2 - 9376243 + 9376240 2 @@ -10711,7 +11279,7 @@ 1 2 - 9383104 + 9383101 @@ -10727,7 +11295,7 @@ 1 2 - 9383104 + 9383101 @@ -10743,12 +11311,12 @@ 1 2 - 8703713 + 8703728 2 5 - 330962 + 330954 @@ -10764,12 +11332,12 @@ 1 2 - 8981158 + 8981166 2 3 - 53517 + 53516 @@ -10785,12 +11353,12 @@ 1 2 - 8929262 + 8929271 2 4 - 105414 + 105411 @@ -10806,12 +11374,12 @@ 1 2 - 8783054 + 8783068 2 4 - 251621 + 251614 @@ -10827,27 +11395,27 @@ 1 2 - 849924 + 849901 2 3 - 284056 + 284049 3 5 - 127370 + 127366 5 11 - 113148 + 113145 11 2944 - 81961 + 81958 @@ -10863,27 +11431,27 @@ 1 2 - 870758 + 870734 2 3 - 269086 + 269079 3 5 - 122754 + 122751 5 11 - 113023 + 113020 11 2860 - 80838 + 80836 @@ -10899,17 +11467,17 @@ 1 2 - 1119510 + 1119480 2 3 - 192614 + 192609 3 7 - 115269 + 115266 7 @@ -10930,22 +11498,22 @@ 1 2 - 985403 + 985377 2 3 - 219061 + 219055 3 6 - 133607 + 133604 6 95 - 109281 + 109278 97 @@ -10966,32 +11534,32 @@ 1 2 - 465942 + 465930 2 3 - 165793 + 165788 3 4 - 59630 + 59629 4 7 - 65868 + 65866 7 25 - 64121 + 64120 25 27139 - 31187 + 31186 @@ -11007,27 +11575,27 @@ 1 2 - 478916 + 478904 2 3 - 165044 + 165040 3 4 - 54640 + 54639 4 8 - 71606 + 71604 8 45 - 64246 + 64244 45 @@ -11048,17 +11616,17 @@ 1 2 - 654690 + 654672 2 3 - 110778 + 110775 3 11 - 65493 + 65492 11 @@ -11079,27 +11647,27 @@ 1 2 - 493762 + 493748 2 3 - 183258 + 183253 3 4 - 51646 + 51645 4 8 - 64994 + 64993 8 22619 - 58882 + 58880 @@ -11115,17 +11683,17 @@ 1 2 - 5774822 + 5774667 2 21 - 472305 + 472292 21 2943 - 27445 + 27444 @@ -11141,12 +11709,12 @@ 1 2 - 5855660 + 5855503 2 2935 - 418911 + 418900 @@ -11162,12 +11730,12 @@ 1 2 - 5976045 + 5975884 2 2555 - 298527 + 298519 @@ -11183,12 +11751,12 @@ 1 2 - 6262222 + 6262054 2 5 - 12350 + 12349 @@ -11198,37 +11766,37 @@ var_def - 3766964 + 3766862 id - 3766964 + 3766862 var_specialized - 645 + 644 id - 645 + 644 var_decl_specifiers - 489894 + 489881 id - 489894 + 489881 name - 499 + 498 @@ -11242,7 +11810,7 @@ 1 2 - 489894 + 489881 @@ -11283,18 +11851,18 @@ is_structured_binding - 946 + 945 id - 946 + 945 var_requires - 387 + 386 id @@ -11302,7 +11870,7 @@ constraint - 387 + 386 @@ -11342,7 +11910,7 @@ 1 2 - 387 + 386 @@ -11352,19 +11920,19 @@ type_decls - 1633482 + 1633438 id - 1633482 + 1633438 type_id - 1614520 + 1614476 location - 1547404 + 1547362 @@ -11378,7 +11946,7 @@ 1 2 - 1633482 + 1633438 @@ -11394,7 +11962,7 @@ 1 2 - 1633482 + 1633438 @@ -11410,12 +11978,12 @@ 1 2 - 1598177 + 1598134 2 10 - 16342 + 16341 @@ -11431,7 +11999,7 @@ 1 2 - 1598302 + 1598259 2 @@ -11452,7 +12020,7 @@ 1 2 - 1525323 + 1525282 2 @@ -11473,12 +12041,12 @@ 1 2 - 1525448 + 1525407 2 64 - 21956 + 21955 @@ -11488,37 +12056,37 @@ type_def - 1095558 + 1095528 id - 1095558 + 1095528 type_decl_top - 673959 + 675276 type_decl - 673959 + 675276 type_requires - 7681 + 7670 id - 2044 + 2041 constraint - 7659 + 7648 @@ -11532,7 +12100,7 @@ 1 2 - 1011 + 1009 2 @@ -11542,12 +12110,12 @@ 5 6 - 602 + 601 6 13 - 172 + 171 13 @@ -11568,7 +12136,7 @@ 1 2 - 7638 + 7627 2 @@ -11583,23 +12151,23 @@ namespace_decls - 407775 + 407918 id - 407775 + 407918 namespace_id - 1844 + 1840 location - 407775 + 407918 bodylocation - 407775 + 407918 @@ -11613,7 +12181,7 @@ 1 2 - 407775 + 407918 @@ -11629,7 +12197,7 @@ 1 2 - 407775 + 407918 @@ -11645,7 +12213,7 @@ 1 2 - 407775 + 407918 @@ -11666,7 +12234,7 @@ 2 3 - 203 + 202 3 @@ -11681,36 +12249,36 @@ 15 34 - 146 + 145 35 62 - 154 + 145 63 - 87 - 146 + 81 + 145 - 90 + 86 144 - 154 + 162 - 146 + 151 264 - 146 + 145 270 1870 - 146 + 145 2205 - 12461 + 12488 32 @@ -11732,7 +12300,7 @@ 2 3 - 203 + 202 3 @@ -11747,36 +12315,36 @@ 15 34 - 146 + 145 35 62 - 154 + 145 63 - 87 - 146 + 81 + 145 - 90 + 86 144 - 154 + 162 - 146 + 151 264 - 146 + 145 270 1870 - 146 + 145 2205 - 12461 + 12488 32 @@ -11798,7 +12366,7 @@ 2 3 - 203 + 202 3 @@ -11813,36 +12381,36 @@ 15 34 - 146 + 145 35 62 - 154 + 145 63 - 87 - 146 + 81 + 145 - 90 + 86 144 - 154 + 162 - 146 + 151 264 - 146 + 145 270 1870 - 146 + 145 2205 - 12461 + 12488 32 @@ -11859,7 +12427,7 @@ 1 2 - 407775 + 407918 @@ -11875,7 +12443,7 @@ 1 2 - 407775 + 407918 @@ -11891,7 +12459,7 @@ 1 2 - 407775 + 407918 @@ -11907,7 +12475,7 @@ 1 2 - 407775 + 407918 @@ -11923,7 +12491,7 @@ 1 2 - 407775 + 407918 @@ -11939,7 +12507,7 @@ 1 2 - 407775 + 407918 @@ -11949,19 +12517,19 @@ usings - 271973 + 272192 id - 271973 + 272192 element_id - 58938 + 59184 location - 26849 + 26846 kind @@ -11979,7 +12547,7 @@ 1 2 - 271973 + 272192 @@ -11995,7 +12563,7 @@ 1 2 - 271973 + 272192 @@ -12011,7 +12579,7 @@ 1 2 - 271973 + 272192 @@ -12027,7 +12595,7 @@ 1 2 - 51206 + 51453 2 @@ -12053,7 +12621,7 @@ 1 2 - 51206 + 51453 2 @@ -12079,7 +12647,7 @@ 1 2 - 58938 + 59184 @@ -12095,21 +12663,21 @@ 1 2 - 21177 + 21175 2 4 - 2292 + 2291 4 132 - 1954 + 1953 145 - 367 + 371 1425 @@ -12126,21 +12694,21 @@ 1 2 - 21177 + 21175 2 4 - 2292 + 2291 4 132 - 1954 + 1953 145 - 367 + 371 1425 @@ -12157,7 +12725,7 @@ 1 2 - 26849 + 26846 @@ -12176,8 +12744,8 @@ 10 - 25356 - 25357 + 25380 + 25381 10 @@ -12197,8 +12765,8 @@ 10 - 5366 - 5367 + 5390 + 5391 10 @@ -12230,15 +12798,15 @@ using_container - 580049 + 580229 parent - 21874 + 21914 child - 271973 + 272192 @@ -12252,12 +12820,12 @@ 1 2 - 10372 + 10371 2 3 - 1616 + 1615 3 @@ -12267,7 +12835,7 @@ 6 7 - 2270 + 2312 7 @@ -12303,27 +12871,27 @@ 1 2 - 96488 + 96729 2 3 - 120285 + 120270 3 4 - 20100 + 20097 4 5 - 26712 + 26709 5 65 - 8386 + 8385 @@ -12333,27 +12901,27 @@ static_asserts - 173262 + 172982 id - 173262 + 172982 condition - 173262 + 172982 message - 38764 + 38704 location - 22647 + 22616 enclosing - 6807 + 6819 @@ -12367,7 +12935,7 @@ 1 2 - 173262 + 172982 @@ -12383,7 +12951,7 @@ 1 2 - 173262 + 172982 @@ -12399,7 +12967,7 @@ 1 2 - 173262 + 172982 @@ -12415,7 +12983,7 @@ 1 2 - 173262 + 172982 @@ -12431,7 +12999,7 @@ 1 2 - 173262 + 172982 @@ -12447,7 +13015,7 @@ 1 2 - 173262 + 172982 @@ -12463,7 +13031,7 @@ 1 2 - 173262 + 172982 @@ -12479,7 +13047,7 @@ 1 2 - 173262 + 172982 @@ -12495,32 +13063,32 @@ 1 2 - 28504 + 28454 2 3 - 641 + 640 3 4 - 3623 + 3624 4 12 - 2087 + 2084 12 17 - 3135 + 3130 17 513 - 771 + 770 @@ -12536,32 +13104,32 @@ 1 2 - 28504 + 28454 2 3 - 641 + 640 3 4 - 3623 + 3624 4 12 - 2087 + 2084 12 17 - 3135 + 3130 17 513 - 771 + 770 @@ -12577,12 +13145,12 @@ 1 2 - 35921 + 35866 2 33 - 2843 + 2838 @@ -12598,27 +13166,27 @@ 1 2 - 30316 + 30263 2 3 - 349 + 348 3 4 - 3387 + 3389 4 12 - 1908 + 1905 12 43 - 2802 + 2797 @@ -12634,17 +13202,17 @@ 1 2 - 4281 + 4273 2 3 - 3728 + 3722 3 4 - 1738 + 1743 4 @@ -12654,17 +13222,17 @@ 5 6 - 4735 + 4727 6 13 - 430 + 429 14 15 - 2648 + 2643 16 @@ -12674,12 +13242,12 @@ 17 18 - 4394 + 4387 19 52 - 503 + 502 @@ -12695,17 +13263,17 @@ 1 2 - 4281 + 4273 2 3 - 3728 + 3722 3 4 - 1738 + 1743 4 @@ -12715,17 +13283,17 @@ 5 6 - 4735 + 4727 6 13 - 430 + 429 14 15 - 2648 + 2643 16 @@ -12735,12 +13303,12 @@ 17 18 - 4394 + 4387 19 52 - 503 + 502 @@ -12756,17 +13324,17 @@ 1 2 - 6953 + 6949 2 3 - 7676 + 7663 3 4 - 7782 + 7768 4 @@ -12787,32 +13355,32 @@ 1 2 - 5068 + 5060 2 3 - 8098 + 8084 3 4 - 1478 + 1483 4 5 - 4760 + 4751 5 13 - 495 + 494 13 14 - 2648 + 2643 16 @@ -12833,17 +13401,17 @@ 1 2 - 5702 + 5716 2 3 - 528 + 527 3 228 - 528 + 527 229 @@ -12864,17 +13432,17 @@ 1 2 - 5702 + 5716 2 3 - 528 + 527 3 228 - 528 + 527 229 @@ -12895,17 +13463,17 @@ 1 2 - 5856 + 5870 2 3 - 519 + 518 3 2936 - 430 + 429 @@ -12921,17 +13489,17 @@ 1 2 - 5840 + 5854 2 3 - 536 + 535 3 1929 - 430 + 429 @@ -12941,23 +13509,23 @@ params - 7060750 + 7060560 id - 7019832 + 7019643 function - 3404938 + 3404846 index - 7984 + 7983 type_id - 1220308 + 1220275 @@ -12971,7 +13539,7 @@ 1 2 - 7019832 + 7019643 @@ -12987,7 +13555,7 @@ 1 2 - 7019832 + 7019643 @@ -13003,12 +13571,12 @@ 1 2 - 6978913 + 6978726 2 3 - 40918 + 40917 @@ -13024,27 +13592,27 @@ 1 2 - 1473177 + 1473138 2 3 - 926272 + 926247 3 4 - 578717 + 578701 4 5 - 280813 + 280805 5 65 - 145958 + 145954 @@ -13060,27 +13628,27 @@ 1 2 - 1473177 + 1473138 2 3 - 926272 + 926247 3 4 - 578717 + 578701 4 5 - 280813 + 280805 5 65 - 145958 + 145954 @@ -13096,22 +13664,22 @@ 1 2 - 1781685 + 1781637 2 3 - 1030688 + 1030660 3 4 - 437499 + 437488 4 11 - 155064 + 155060 @@ -13127,12 +13695,12 @@ 2 3 - 3992 + 3991 6 7 - 1996 + 1995 14 @@ -13168,12 +13736,12 @@ 2 3 - 3992 + 3991 6 7 - 1996 + 1995 14 @@ -13209,12 +13777,12 @@ 1 2 - 3992 + 3991 2 3 - 1996 + 1995 4 @@ -13250,27 +13818,27 @@ 1 2 - 737524 + 737504 2 3 - 240394 + 240387 3 5 - 93188 + 93186 5 13 - 93812 + 93809 13 2574 - 55389 + 55387 @@ -13286,27 +13854,27 @@ 1 2 - 819610 + 819588 2 3 - 179640 + 179635 3 6 - 106162 + 106159 6 27 - 92190 + 92188 27 2562 - 22704 + 22703 @@ -13322,17 +13890,17 @@ 1 2 - 995134 + 995107 2 3 - 166791 + 166786 3 65 - 58383 + 58381 @@ -13342,15 +13910,15 @@ overrides - 159778 + 159497 new - 151069 + 150804 old - 17993 + 17961 @@ -13364,12 +13932,12 @@ 1 2 - 142369 + 142119 2 4 - 8700 + 8684 @@ -13385,32 +13953,32 @@ 1 2 - 9845 + 9828 2 3 - 2437 + 2432 3 4 - 1632 + 1629 4 6 - 1486 + 1483 6 18 - 1356 + 1354 18 230 - 1234 + 1232 @@ -13420,19 +13988,19 @@ membervariables - 1500125 + 1501944 id - 1497674 + 1499494 type_id - 456185 + 457553 name - 642156 + 642220 @@ -13446,7 +14014,7 @@ 1 2 - 1495333 + 1497152 2 @@ -13467,7 +14035,7 @@ 1 2 - 1497674 + 1499494 @@ -13483,12 +14051,12 @@ 1 2 - 338449 + 339380 2 3 - 72155 + 72592 3 @@ -13498,7 +14066,7 @@ 10 4445 - 10128 + 10129 @@ -13514,22 +14082,22 @@ 1 2 - 356039 + 356970 2 3 - 64313 + 64750 3 - 49 - 34253 + 57 + 34362 - 49 + 60 2186 - 1579 + 1470 @@ -13545,12 +14113,12 @@ 1 2 - 421496 + 421557 2 3 - 122419 + 122421 3 @@ -13559,7 +14127,7 @@ 5 - 656 + 664 40189 @@ -13576,17 +14144,17 @@ 1 2 - 524420 + 524482 2 3 - 73190 + 73191 3 - 660 - 44545 + 668 + 44546 @@ -13596,11 +14164,11 @@ globalvariables - 488148 + 488384 id - 488148 + 488384 type_id @@ -13608,7 +14176,7 @@ name - 112524 + 112521 @@ -13622,7 +14190,7 @@ 1 2 - 488148 + 488384 @@ -13638,7 +14206,7 @@ 1 2 - 488148 + 488384 @@ -13654,7 +14222,7 @@ 1 2 - 6986 + 6985 2 @@ -13679,7 +14247,7 @@ 152 2216 - 499 + 498 @@ -13720,7 +14288,7 @@ 125 228 - 499 + 498 @@ -13736,7 +14304,7 @@ 1 2 - 95309 + 95306 2 @@ -13762,12 +14330,12 @@ 1 2 - 96931 + 96928 2 3 - 15344 + 15343 3 @@ -13782,19 +14350,19 @@ localvariables - 726300 + 726016 id - 726300 + 726016 type_id - 53440 + 53423 name - 101634 + 101594 @@ -13808,7 +14376,7 @@ 1 2 - 726300 + 726016 @@ -13824,7 +14392,7 @@ 1 2 - 726300 + 726016 @@ -13840,32 +14408,32 @@ 1 2 - 28865 + 28857 2 3 - 7843 + 7840 3 4 - 4029 + 4028 4 6 - 4065 + 4064 6 12 - 4133 + 4132 12 162 - 4009 + 4008 162 @@ -13886,22 +14454,22 @@ 1 2 - 38369 + 38358 2 3 - 6707 + 6704 3 5 - 4478 + 4476 5 3509 - 3885 + 3884 @@ -13917,27 +14485,27 @@ 1 2 - 62540 + 62515 2 3 - 16039 + 16032 3 4 - 6530 + 6528 4 8 - 8147 + 8144 8 134 - 7623 + 7620 134 @@ -13958,17 +14526,17 @@ 1 2 - 84586 + 84553 2 3 - 8411 + 8408 3 15 - 7683 + 7680 15 @@ -13983,11 +14551,11 @@ autoderivation - 229166 + 229160 var - 229166 + 229160 derivation_type @@ -14005,7 +14573,7 @@ 1 2 - 229166 + 229160 @@ -14051,15 +14619,15 @@ orphaned_variables - 44324 + 44321 var - 44324 + 44321 function - 41053 + 41051 @@ -14073,7 +14641,7 @@ 1 2 - 44324 + 44321 @@ -14089,7 +14657,7 @@ 1 2 - 40201 + 40199 2 @@ -14104,19 +14672,19 @@ enumconstants - 347816 + 347930 id - 347816 + 347930 parent - 41550 + 41551 index - 13940 + 13941 type_id @@ -14124,11 +14692,11 @@ name - 347435 + 347549 location - 320424 + 320538 @@ -14142,7 +14710,7 @@ 1 2 - 347816 + 347930 @@ -14158,7 +14726,7 @@ 1 2 - 347816 + 347930 @@ -14174,7 +14742,7 @@ 1 2 - 347816 + 347930 @@ -14190,7 +14758,7 @@ 1 2 - 347816 + 347930 @@ -14206,7 +14774,7 @@ 1 2 - 347816 + 347930 @@ -14354,7 +14922,7 @@ 1 2 - 41550 + 41551 @@ -14471,12 +15039,12 @@ 8 11 - 3811 + 3812 11 17 - 3212 + 3213 17 @@ -14614,7 +15182,7 @@ 1 2 - 13940 + 13941 @@ -14740,8 +15308,8 @@ 12 - 6387 - 6388 + 6389 + 6390 54 @@ -14788,8 +15356,8 @@ 12 - 6380 - 6381 + 6382 + 6383 54 @@ -14804,8 +15372,8 @@ 12 - 5884 - 5885 + 5886 + 5887 54 @@ -14822,7 +15390,7 @@ 1 2 - 347054 + 347168 2 @@ -14843,7 +15411,7 @@ 1 2 - 347054 + 347168 2 @@ -14864,7 +15432,7 @@ 1 2 - 347435 + 347549 @@ -14880,7 +15448,7 @@ 1 2 - 347435 + 347549 @@ -14896,7 +15464,7 @@ 1 2 - 347054 + 347168 2 @@ -14917,7 +15485,7 @@ 1 2 - 319389 + 319503 2 @@ -14938,7 +15506,7 @@ 1 2 - 320424 + 320538 @@ -14954,7 +15522,7 @@ 1 2 - 319389 + 319503 2 @@ -14975,7 +15543,7 @@ 1 2 - 320424 + 320538 @@ -14991,7 +15559,7 @@ 1 2 - 319389 + 319503 2 @@ -15428,7 +15996,7 @@ 1 2 - 499 + 498 2 @@ -15683,15 +16251,15 @@ derivedtypes - 3030936 + 3030855 id - 3030936 + 3030855 name - 1460578 + 1460538 kind @@ -15699,7 +16267,7 @@ type_id - 1946730 + 1946678 @@ -15713,7 +16281,7 @@ 1 2 - 3030936 + 3030855 @@ -15729,7 +16297,7 @@ 1 2 - 3030936 + 3030855 @@ -15745,7 +16313,7 @@ 1 2 - 3030936 + 3030855 @@ -15761,12 +16329,12 @@ 1 2 - 1344061 + 1344025 2 28 - 109905 + 109902 29 @@ -15787,7 +16355,7 @@ 1 2 - 1460578 + 1460538 @@ -15803,12 +16371,12 @@ 1 2 - 1344185 + 1344149 2 28 - 109780 + 109777 29 @@ -15952,22 +16520,22 @@ 1 2 - 1317489 + 1317453 2 3 - 375873 + 375862 3 4 - 123253 + 123250 4 137 - 130114 + 130111 @@ -15983,22 +16551,22 @@ 1 2 - 1318986 + 1318950 2 3 - 375873 + 375862 3 4 - 121756 + 121753 4 137 - 130114 + 130111 @@ -16014,22 +16582,22 @@ 1 2 - 1319360 + 1319325 2 3 - 376496 + 376486 3 4 - 123502 + 123499 4 6 - 127370 + 127366 @@ -16039,11 +16607,11 @@ pointerishsize - 2247379 + 2247318 id - 2247379 + 2247318 size @@ -16065,7 +16633,7 @@ 1 2 - 2247379 + 2247318 @@ -16081,7 +16649,7 @@ 1 2 - 2247379 + 2247318 @@ -16165,15 +16733,15 @@ arraysizes - 80588 + 80586 id - 80588 + 80586 num_elements - 17839 + 17838 bytesize @@ -16195,7 +16763,7 @@ 1 2 - 80588 + 80586 @@ -16211,7 +16779,7 @@ 1 2 - 80588 + 80586 @@ -16227,7 +16795,7 @@ 1 2 - 80588 + 80586 @@ -16248,7 +16816,7 @@ 2 3 - 10853 + 10852 3 @@ -16258,12 +16826,12 @@ 4 5 - 3493 + 3492 5 9 - 1497 + 1496 9 @@ -16294,12 +16862,12 @@ 2 3 - 3992 + 3991 3 5 - 998 + 997 5 @@ -16325,7 +16893,7 @@ 2 3 - 3992 + 3991 3 @@ -16361,7 +16929,7 @@ 3 4 - 499 + 498 4 @@ -16371,7 +16939,7 @@ 5 7 - 1497 + 1496 7 @@ -16381,7 +16949,7 @@ 24 45 - 499 + 498 @@ -16428,7 +16996,7 @@ 1 2 - 14845 + 14844 2 @@ -16604,15 +17172,15 @@ typedefbase - 1762360 + 1762169 id - 1762360 + 1762169 type_id - 838037 + 837952 @@ -16626,7 +17194,7 @@ 1 2 - 1762360 + 1762169 @@ -16642,7 +17210,7 @@ 1 2 - 662552 + 662479 2 @@ -16652,12 +17220,12 @@ 3 6 - 64177 + 64169 6 4526 - 30367 + 30363 @@ -16667,15 +17235,15 @@ decltypes - 814475 + 814486 id - 27563 + 27564 expr - 814475 + 814486 kind @@ -16757,7 +17325,7 @@ 1 2 - 27563 + 27564 @@ -16773,7 +17341,7 @@ 1 2 - 27563 + 27564 @@ -16789,7 +17357,7 @@ 1 2 - 27563 + 27564 @@ -16805,7 +17373,7 @@ 1 2 - 814475 + 814486 @@ -16821,7 +17389,7 @@ 1 2 - 814475 + 814486 @@ -16837,7 +17405,7 @@ 1 2 - 814475 + 814486 @@ -16853,7 +17421,7 @@ 1 2 - 814475 + 814486 @@ -17115,23 +17683,23 @@ type_operators - 7961 + 7949 id - 7961 + 7949 arg_type - 7186 + 7176 kind - 86 + 85 base_type - 5250 + 5242 @@ -17145,7 +17713,7 @@ 1 2 - 7961 + 7949 @@ -17161,7 +17729,7 @@ 1 2 - 7961 + 7949 @@ -17177,7 +17745,7 @@ 1 2 - 7961 + 7949 @@ -17193,12 +17761,12 @@ 1 2 - 6411 + 6402 2 3 - 774 + 773 @@ -17214,12 +17782,12 @@ 1 2 - 6411 + 6402 2 3 - 774 + 773 @@ -17235,7 +17803,7 @@ 1 2 - 7164 + 7154 2 @@ -17349,17 +17917,17 @@ 1 2 - 3636 + 3631 2 3 - 903 + 902 3 4 - 344 + 343 4 @@ -17380,12 +17948,12 @@ 1 2 - 3786 + 3781 2 3 - 989 + 988 3 @@ -17411,12 +17979,12 @@ 1 2 - 4088 + 4082 2 3 - 1140 + 1138 3 @@ -17431,15 +17999,15 @@ usertypes - 4151710 + 4151247 id - 4151710 + 4151247 name - 918534 + 918449 kind @@ -17457,7 +18025,7 @@ 1 2 - 4151710 + 4151247 @@ -17473,7 +18041,7 @@ 1 2 - 4151710 + 4151247 @@ -17489,22 +18057,22 @@ 1 2 - 654261 + 654210 2 3 - 158669 + 158649 3 8 - 70567 + 70559 8 - 32669 - 35035 + 32672 + 35031 @@ -17520,12 +18088,12 @@ 1 2 - 866789 + 866710 2 10 - 51745 + 51739 @@ -17589,13 +18157,13 @@ 10 - 92771 - 92772 + 92774 + 92775 10 - 166851 - 166852 + 166854 + 166855 10 @@ -17665,8 +18233,8 @@ 10 - 57608 - 57609 + 57611 + 57612 10 @@ -17677,11 +18245,11 @@ usertypesize - 1363817 + 1363676 id - 1363817 + 1363676 size @@ -17703,7 +18271,7 @@ 1 2 - 1363817 + 1363676 @@ -17719,7 +18287,7 @@ 1 2 - 1363817 + 1363676 @@ -17779,7 +18347,7 @@ 1839 - 99774 + 99777 52 @@ -17796,7 +18364,7 @@ 1 2 - 1204 + 1203 2 @@ -17855,8 +18423,8 @@ 10 - 114969 - 114970 + 114972 + 114973 10 @@ -17913,26 +18481,26 @@ usertype_final - 11477 + 11476 id - 11477 + 11476 usertype_uuid - 47716 + 47827 id - 47716 + 47827 uuid - 47237 + 47283 @@ -17946,7 +18514,7 @@ 1 2 - 47716 + 47827 @@ -17962,12 +18530,12 @@ 1 2 - 46758 + 46740 2 3 - 479 + 543 @@ -17977,11 +18545,11 @@ usertype_alias_kind - 1762360 + 1762169 id - 1762360 + 1762169 alias_kind @@ -17999,7 +18567,7 @@ 1 2 - 1762360 + 1762169 @@ -18018,8 +18586,8 @@ 10 - 129944 - 129945 + 129947 + 129948 10 @@ -18030,26 +18598,26 @@ nontype_template_parameters - 766287 + 766248 id - 766287 + 766248 type_template_type_constraint - 27153 + 27115 id - 13383 + 13364 constraint - 26013 + 25976 @@ -18063,22 +18631,22 @@ 1 2 - 10220 + 10205 2 3 - 903 + 902 3 5 - 1032 + 1031 5 14 - 1118 + 1117 14 @@ -18099,12 +18667,12 @@ 1 2 - 24873 + 24837 2 3 - 1140 + 1138 @@ -18114,15 +18682,15 @@ mangled_name - 7852416 + 7853951 id - 7852416 + 7853951 mangled_name - 6364268 + 6364346 is_complete @@ -18140,7 +18708,7 @@ 1 2 - 7852416 + 7853951 @@ -18156,7 +18724,7 @@ 1 2 - 7852416 + 7853951 @@ -18172,12 +18740,12 @@ 1 2 - 6036174 + 6036261 2 1120 - 328093 + 328084 @@ -18193,7 +18761,7 @@ 1 2 - 6364268 + 6364346 @@ -18212,8 +18780,8 @@ 124 - 62939 - 62940 + 62953 + 62954 124 @@ -18233,8 +18801,8 @@ 124 - 51010 - 51011 + 51012 + 51013 124 @@ -18245,59 +18813,59 @@ is_pod_class - 593760 + 593798 id - 593760 + 593798 is_standard_layout_class - 1124418 + 1124307 id - 1124418 + 1124307 is_complete - 1346294 + 1346155 id - 1346294 + 1346155 is_class_template - 232173 + 232144 id - 232173 + 232144 class_instantiation - 1126076 + 1125965 to - 1123034 + 1122924 from - 71803 + 71794 @@ -18311,7 +18879,7 @@ 1 2 - 1120901 + 1120790 2 @@ -18332,42 +18900,42 @@ 1 2 - 20501 + 20499 2 3 - 12886 + 12884 3 4 - 7108 + 7107 4 5 - 4658 + 4657 5 7 - 6073 + 6072 7 10 - 5714 + 5713 10 17 - 5904 + 5903 17 51 - 5397 + 5396 51 @@ -18382,11 +18950,11 @@ class_template_argument - 2898672 + 2898347 type_id - 1367112 + 1366971 index @@ -18394,7 +18962,7 @@ arg_type - 822099 + 822016 @@ -18408,27 +18976,27 @@ 1 2 - 579362 + 579310 2 3 - 410289 + 410247 3 4 - 251049 + 251017 4 7 - 103100 + 103087 7 113 - 23311 + 23308 @@ -18444,22 +19012,22 @@ 1 2 - 607902 + 607846 2 3 - 424294 + 424251 3 4 - 251883 + 251851 4 113 - 83031 + 83021 @@ -18504,7 +19072,7 @@ 11968 - 129429 + 129432 42 @@ -18550,7 +19118,7 @@ 10413 - 44533 + 44535 31 @@ -18567,27 +19135,27 @@ 1 2 - 513716 + 513672 2 3 - 167647 + 167626 3 5 - 75088 + 75079 5 47 - 61737 + 61729 47 - 12618 - 3908 + 12619 + 3907 @@ -18603,17 +19171,17 @@ 1 2 - 723815 + 723744 2 3 - 79915 + 79905 3 22 - 18368 + 18365 @@ -18623,11 +19191,11 @@ class_template_argument_value - 510086 + 510060 type_id - 205812 + 205802 index @@ -18635,7 +19203,7 @@ arg_value - 509949 + 509924 @@ -18649,12 +19217,12 @@ 1 2 - 155799 + 155791 2 3 - 43370 + 43368 3 @@ -18675,17 +19243,17 @@ 1 2 - 147929 + 147921 2 3 - 40474 + 40472 3 45 - 15535 + 15534 45 @@ -18818,7 +19386,7 @@ 1 2 - 509813 + 509787 2 @@ -18839,7 +19407,7 @@ 1 2 - 509949 + 509924 @@ -18849,15 +19417,15 @@ is_proxy_class_for - 48439 + 48433 id - 48439 + 48433 templ_param_id - 45767 + 45761 @@ -18871,7 +19439,7 @@ 1 2 - 48439 + 48433 @@ -18887,7 +19455,7 @@ 1 2 - 45048 + 45043 2 @@ -18902,19 +19470,19 @@ type_mentions - 5903894 + 5907630 id - 5903894 + 5907630 type_id - 276913 + 277788 location - 5847585 + 5851321 kind @@ -18932,7 +19500,7 @@ 1 2 - 5903894 + 5907630 @@ -18948,7 +19516,7 @@ 1 2 - 5903894 + 5907630 @@ -18964,7 +19532,7 @@ 1 2 - 5903894 + 5907630 @@ -18980,22 +19548,22 @@ 1 2 - 136795 + 137233 2 3 - 31203 + 31204 3 4 - 11272 + 11653 4 5 - 14921 + 14975 5 @@ -19010,12 +19578,12 @@ 12 28 - 21074 + 21075 28 8941 - 19876 + 19877 @@ -19031,22 +19599,22 @@ 1 2 - 136795 + 137233 2 3 - 31203 + 31204 3 4 - 11272 + 11653 4 5 - 14921 + 14975 5 @@ -19061,12 +19629,12 @@ 12 28 - 21074 + 21075 28 8941 - 19876 + 19877 @@ -19082,7 +19650,7 @@ 1 2 - 276913 + 277788 @@ -19098,12 +19666,12 @@ 1 2 - 5801896 + 5805631 2 4 - 45689 + 45690 @@ -19119,12 +19687,12 @@ 1 2 - 5801896 + 5805631 2 4 - 45689 + 45690 @@ -19140,7 +19708,7 @@ 1 2 - 5847585 + 5851321 @@ -19154,8 +19722,8 @@ 12 - 108414 - 108415 + 108481 + 108482 54 @@ -19170,8 +19738,8 @@ 12 - 5085 - 5086 + 5101 + 5102 54 @@ -19186,8 +19754,8 @@ 12 - 107380 - 107381 + 107447 + 107448 54 @@ -19198,26 +19766,26 @@ is_function_template - 1331336 + 1331300 id - 1331336 + 1331300 function_instantiation - 973633 + 973788 to - 973633 + 973788 from - 182645 + 182704 @@ -19231,7 +19799,7 @@ 1 2 - 973633 + 973788 @@ -19247,17 +19815,17 @@ 1 2 - 110589 + 110583 2 3 - 42791 + 42788 3 9 - 14377 + 14444 9 @@ -19277,11 +19845,11 @@ function_template_argument - 2484813 + 2484687 function_id - 1453296 + 1453222 index @@ -19289,7 +19857,7 @@ arg_type - 298004 + 297989 @@ -19303,22 +19871,22 @@ 1 2 - 783015 + 782976 2 3 - 413158 + 413137 3 4 - 171811 + 171802 4 15 - 85309 + 85305 @@ -19334,22 +19902,22 @@ 1 2 - 802162 + 802122 2 3 - 411251 + 411230 3 4 - 169631 + 169622 4 9 - 70250 + 70247 @@ -19487,32 +20055,32 @@ 1 2 - 174775 + 174766 2 3 - 26335 + 26334 3 4 - 19998 + 19997 4 6 - 22656 + 22654 6 11 - 23235 + 23234 11 76 - 23371 + 23370 79 @@ -19533,17 +20101,17 @@ 1 2 - 256814 + 256801 2 3 - 32127 + 32125 3 15 - 9062 + 9061 @@ -19553,11 +20121,11 @@ function_template_argument_value - 452781 + 452758 function_id - 196784 + 196774 index @@ -19565,7 +20133,7 @@ arg_value - 450090 + 450067 @@ -19579,17 +20147,17 @@ 1 2 - 151404 + 151396 2 3 - 42893 + 42891 3 8 - 2487 + 2486 @@ -19605,17 +20173,17 @@ 1 2 - 144488 + 144480 2 3 - 36692 + 36690 3 54 - 14854 + 14853 54 @@ -19758,7 +20326,7 @@ 1 2 - 447398 + 447375 2 @@ -19779,7 +20347,7 @@ 1 2 - 450090 + 450067 @@ -19789,26 +20357,26 @@ is_variable_template - 58632 + 58631 id - 58632 + 58631 variable_instantiation - 422779 + 423017 to - 422779 + 423017 from - 35304 + 35303 @@ -19822,7 +20390,7 @@ 1 2 - 422779 + 423017 @@ -19853,7 +20421,7 @@ 4 6 - 2994 + 2993 6 @@ -19883,19 +20451,19 @@ variable_template_argument - 768462 + 768941 variable_id - 400947 + 401186 index - 1996 + 1995 arg_type - 256112 + 256355 @@ -19909,17 +20477,17 @@ 1 2 - 156561 + 156557 2 3 - 189745 + 189989 3 4 - 36427 + 36426 4 @@ -19940,22 +20508,22 @@ 1 2 - 171407 + 171402 2 3 - 180014 + 180259 3 4 - 33682 + 33681 4 17 - 15843 + 15842 @@ -19999,13 +20567,13 @@ 124 - 1959 - 1960 + 1961 + 1962 124 - 3214 - 3215 + 3216 + 3217 124 @@ -20050,8 +20618,8 @@ 124 - 745 - 746 + 747 + 748 124 @@ -20073,12 +20641,12 @@ 1 2 - 175399 + 175519 2 3 - 44660 + 44784 3 @@ -20088,7 +20656,7 @@ 6 206 - 14471 + 14470 @@ -20104,12 +20672,12 @@ 1 2 - 227794 + 228037 2 3 - 24700 + 24699 3 @@ -20124,19 +20692,19 @@ variable_template_argument_value - 19960 + 19959 variable_id - 14845 + 14844 index - 499 + 498 arg_value - 19960 + 19959 @@ -20150,12 +20718,12 @@ 1 2 - 13348 + 13347 2 3 - 1497 + 1496 @@ -20171,12 +20739,12 @@ 1 2 - 10479 + 10478 2 3 - 3992 + 3991 4 @@ -20259,7 +20827,7 @@ 1 2 - 19960 + 19959 @@ -20275,7 +20843,7 @@ 1 2 - 19960 + 19959 @@ -20289,7 +20857,7 @@ to - 4990 + 4989 from @@ -20353,11 +20921,11 @@ template_template_argument - 9675 + 9674 type_id - 6115 + 6114 index @@ -20365,7 +20933,7 @@ arg_type - 9083 + 9082 @@ -20379,7 +20947,7 @@ 1 2 - 5017 + 5016 2 @@ -20410,7 +20978,7 @@ 1 2 - 5038 + 5037 2 @@ -20563,7 +21131,7 @@ 1 2 - 9052 + 9050 3 @@ -20584,7 +21152,7 @@ 1 2 - 9062 + 9061 2 @@ -20735,19 +21303,19 @@ concept_templates - 3614 + 3609 concept_id - 3614 + 3609 name - 3614 + 3609 location - 3614 + 3609 @@ -20761,7 +21329,7 @@ 1 2 - 3614 + 3609 @@ -20777,7 +21345,7 @@ 1 2 - 3614 + 3609 @@ -20793,7 +21361,7 @@ 1 2 - 3614 + 3609 @@ -20809,7 +21377,7 @@ 1 2 - 3614 + 3609 @@ -20825,7 +21393,7 @@ 1 2 - 3614 + 3609 @@ -20841,7 +21409,7 @@ 1 2 - 3614 + 3609 @@ -20851,15 +21419,15 @@ concept_instantiation - 90433 + 90305 to - 90433 + 90305 from - 3442 + 3437 @@ -20873,7 +21441,7 @@ 1 2 - 90433 + 90305 @@ -20904,12 +21472,12 @@ 4 5 - 129 + 128 5 6 - 301 + 300 6 @@ -20929,37 +21497,37 @@ 12 15 - 215 + 214 15 19 - 215 + 214 19 25 - 258 + 257 25 37 - 258 + 257 38 49 - 258 + 257 50 72 - 258 + 257 78 387 - 215 + 214 @@ -20969,30 +21537,30 @@ is_type_constraint - 36900 + 36848 concept_id - 36900 + 36848 concept_template_argument - 113047 + 112887 concept_id - 76383 + 76275 index - 129 + 128 arg_type - 21430 + 21399 @@ -21006,17 +21574,17 @@ 1 2 - 46475 + 46409 2 3 - 24679 + 24644 3 7 - 5228 + 5221 @@ -21032,17 +21600,17 @@ 1 2 - 50090 + 50019 2 3 - 22377 + 22345 3 7 - 3916 + 3910 @@ -21140,42 +21708,42 @@ 1 2 - 10392 + 10377 2 3 - 2969 + 2965 3 4 - 1054 + 1052 4 5 - 1355 + 1353 5 6 - 1161 + 1160 6 9 - 1613 + 1611 9 14 - 1979 + 1976 14 259 - 903 + 902 @@ -21191,17 +21759,17 @@ 1 2 - 18030 + 18005 2 3 - 3270 + 3265 3 4 - 129 + 128 @@ -21342,15 +21910,15 @@ routinetypes - 604322 + 604495 id - 604322 + 604495 return_type - 283865 + 283851 @@ -21364,7 +21932,7 @@ 1 2 - 604322 + 604495 @@ -21380,17 +21948,17 @@ 1 2 - 234226 + 234078 2 3 - 35091 + 35225 3 - 4676 - 14547 + 4677 + 14546 @@ -21400,11 +21968,11 @@ routinetypeargs - 1176651 + 1178520 routine - 415070 + 416002 index @@ -21412,7 +21980,7 @@ type_id - 111582 + 112074 @@ -21426,22 +21994,22 @@ 1 2 - 82502 + 82939 2 3 - 126013 + 126069 3 4 - 107443 + 107880 4 5 - 49283 + 49284 5 @@ -21451,7 +22019,7 @@ 7 19 - 16663 + 16664 @@ -21467,27 +22035,27 @@ 1 2 - 88492 + 88929 2 3 - 138647 + 138703 3 4 - 114196 + 114633 4 5 - 40733 + 40734 5 10 - 32891 + 32892 10 @@ -21571,18 +22139,18 @@ 54 - 3793 - 3794 + 3801 + 3802 54 - 6107 - 6108 + 6116 + 6117 54 - 7622 - 7623 + 7639 + 7640 54 @@ -21662,13 +22230,13 @@ 54 - 787 - 788 + 788 + 789 54 - 1174 - 1175 + 1182 + 1183 54 @@ -21685,17 +22253,17 @@ 1 2 - 33218 + 33273 2 3 - 15193 + 15574 3 4 - 13233 + 13287 4 @@ -21715,7 +22283,7 @@ 8 13 - 9529 + 9530 13 @@ -21724,7 +22292,7 @@ 26 - 918 + 926 6099 @@ -21741,7 +22309,7 @@ 1 2 - 78908 + 79399 2 @@ -21766,19 +22334,19 @@ ptrtomembers - 9728 + 9726 id - 9728 + 9726 type_id - 7974 + 7973 class_id - 4869 + 4868 @@ -21792,7 +22360,7 @@ 1 2 - 9728 + 9726 @@ -21808,7 +22376,7 @@ 1 2 - 9728 + 9726 @@ -21824,7 +22392,7 @@ 1 2 - 7752 + 7751 2 @@ -21845,7 +22413,7 @@ 1 2 - 7752 + 7751 2 @@ -21970,11 +22538,11 @@ typespecifiers - 854272 + 854164 type_id - 849128 + 849020 spec_id @@ -21992,7 +22560,7 @@ 1 2 - 843984 + 843877 2 @@ -22063,11 +22631,11 @@ funspecifiers - 9714441 + 9714180 func_id - 4008855 + 4008747 spec_id @@ -22085,27 +22653,27 @@ 1 2 - 1527070 + 1527029 2 3 - 506237 + 506223 3 4 - 1036925 + 1036897 4 5 - 692863 + 692845 5 8 - 245758 + 245751 @@ -22221,11 +22789,11 @@ varspecifiers - 3075347 + 3075514 var_id - 2314869 + 2315056 spec_id @@ -22243,17 +22811,17 @@ 1 2 - 1658058 + 1658263 2 3 - 553642 + 553627 3 5 - 103168 + 103165 @@ -22282,8 +22850,8 @@ 124 - 1332 - 1333 + 1334 + 1335 124 @@ -22319,15 +22887,15 @@ explicit_specifier_exprs - 41292 + 41291 func_id - 41292 + 41291 constant - 41292 + 41291 @@ -22341,7 +22909,7 @@ 1 2 - 41292 + 41291 @@ -22357,7 +22925,7 @@ 1 2 - 41292 + 41291 @@ -22367,11 +22935,11 @@ attributes - 653817 + 653799 id - 653817 + 653799 kind @@ -22387,7 +22955,7 @@ location - 647704 + 647686 @@ -22401,7 +22969,7 @@ 1 2 - 653817 + 653799 @@ -22417,7 +22985,7 @@ 1 2 - 653817 + 653799 @@ -22433,7 +23001,7 @@ 1 2 - 653817 + 653799 @@ -22449,7 +23017,7 @@ 1 2 - 653817 + 653799 @@ -22852,7 +23420,7 @@ 1 2 - 641841 + 641823 2 @@ -22873,7 +23441,7 @@ 1 2 - 647704 + 647686 @@ -22889,7 +23457,7 @@ 1 2 - 642589 + 642572 2 @@ -22910,7 +23478,7 @@ 1 2 - 647704 + 647686 @@ -22920,11 +23488,11 @@ attribute_args - 82562 + 82563 id - 82562 + 82563 kind @@ -22932,7 +23500,7 @@ attribute - 71259 + 71260 index @@ -22940,7 +23508,7 @@ location - 57184 + 57185 @@ -22954,7 +23522,7 @@ 1 2 - 82562 + 82563 @@ -22970,7 +23538,7 @@ 1 2 - 82562 + 82563 @@ -22986,7 +23554,7 @@ 1 2 - 82562 + 82563 @@ -23002,7 +23570,7 @@ 1 2 - 82562 + 82563 @@ -23122,7 +23690,7 @@ 1 2 - 65790 + 65791 2 @@ -23148,7 +23716,7 @@ 1 2 - 69743 + 69744 2 @@ -23169,7 +23737,7 @@ 1 2 - 68215 + 68216 2 @@ -23190,7 +23758,7 @@ 1 2 - 68747 + 68748 2 @@ -23375,7 +23943,7 @@ 1 2 - 41506 + 41507 2 @@ -23448,7 +24016,7 @@ 1 2 - 56935 + 56936 2 @@ -23619,15 +24187,15 @@ attribute_arg_constant - 71856 + 71889 arg - 71856 + 71889 constant - 71856 + 71889 @@ -23641,7 +24209,7 @@ 1 2 - 71856 + 71889 @@ -23657,7 +24225,7 @@ 1 2 - 71856 + 71889 @@ -23768,15 +24336,15 @@ typeattributes - 96307 + 96304 type_id - 94560 + 94558 spec_id - 32435 + 32434 @@ -23790,7 +24358,7 @@ 1 2 - 92814 + 92811 2 @@ -23811,17 +24379,17 @@ 1 2 - 27944 + 27943 2 9 - 2495 + 2494 11 58 - 1996 + 1995 @@ -23831,15 +24399,15 @@ funcattributes - 843562 + 843539 func_id - 799026 + 799005 spec_id - 616766 + 616749 @@ -23853,12 +24421,12 @@ 1 2 - 758981 + 758961 2 7 - 40044 + 40043 @@ -23874,12 +24442,12 @@ 1 2 - 571731 + 571715 2 213 - 45034 + 45033 @@ -23952,7 +24520,7 @@ namespaceattributes - 5996 + 5995 namespace_id @@ -23960,7 +24528,7 @@ spec_id - 5996 + 5995 @@ -24000,7 +24568,7 @@ 1 2 - 5996 + 5995 @@ -24010,15 +24578,15 @@ stmtattributes - 2216 + 2213 stmt_id - 2216 + 2213 spec_id - 559 + 558 @@ -24032,7 +24600,7 @@ 1 2 - 2216 + 2213 @@ -24048,7 +24616,7 @@ 1 2 - 215 + 214 2 @@ -24058,7 +24626,7 @@ 3 4 - 43 + 42 9 @@ -24068,7 +24636,7 @@ 13 16 - 43 + 42 @@ -24078,15 +24646,15 @@ unspecifiedtype - 7172900 + 7174204 type_id - 7172900 + 7174204 unspecified_type_id - 3962323 + 3962840 @@ -24100,7 +24668,7 @@ 1 2 - 7172900 + 7174204 @@ -24116,22 +24684,22 @@ 1 2 - 2480537 + 2481094 2 3 - 1116765 + 1116611 3 7 - 302644 + 302636 7 537 - 62375 + 62498 @@ -24141,19 +24709,19 @@ member - 4189618 + 4189506 parent - 543288 + 543273 index - 29690 + 29689 child - 4185003 + 4184890 @@ -24167,52 +24735,52 @@ 1 2 - 128991 + 128988 2 3 - 83333 + 83331 3 4 - 32435 + 32434 4 5 - 44910 + 44908 5 6 - 42415 + 42414 6 7 - 33932 + 33931 7 9 - 42290 + 42289 9 13 - 41167 + 41166 13 18 - 41292 + 41291 18 42 - 40793 + 40792 42 @@ -24233,57 +24801,57 @@ 1 2 - 128742 + 128738 2 3 - 83458 + 83455 3 4 - 32185 + 32184 4 5 - 45034 + 45033 5 6 - 42539 + 42538 6 7 - 32809 + 32808 7 9 - 42664 + 42663 9 13 - 41541 + 41540 13 18 - 41417 + 41416 18 42 - 40918 + 40917 42 265 - 11976 + 11975 @@ -24299,7 +24867,7 @@ 1 2 - 6487 + 6486 2 @@ -24329,7 +24897,7 @@ 26 36 - 2495 + 2494 36 @@ -24365,7 +24933,7 @@ 1 2 - 5489 + 5488 2 @@ -24431,7 +24999,7 @@ 1 2 - 4185003 + 4184890 @@ -24447,7 +25015,7 @@ 1 2 - 4180387 + 4180274 2 @@ -24462,15 +25030,15 @@ enclosingfunction - 114813 + 114807 child - 114813 + 114807 parent - 71341 + 71337 @@ -24484,7 +25052,7 @@ 1 2 - 114813 + 114807 @@ -24500,7 +25068,7 @@ 1 2 - 49332 + 49329 2 @@ -24510,12 +25078,12 @@ 3 4 - 15365 + 15364 4 37 - 2010 + 2009 @@ -24525,15 +25093,15 @@ derivations - 476902 + 476878 derivation - 476902 + 476878 sub - 455166 + 455143 index @@ -24541,11 +25109,11 @@ super - 235555 + 235543 location - 35398 + 35396 @@ -24559,7 +25127,7 @@ 1 2 - 476902 + 476878 @@ -24575,7 +25143,7 @@ 1 2 - 476902 + 476878 @@ -24591,7 +25159,7 @@ 1 2 - 476902 + 476878 @@ -24607,7 +25175,7 @@ 1 2 - 476902 + 476878 @@ -24623,12 +25191,12 @@ 1 2 - 438642 + 438620 2 9 - 16523 + 16522 @@ -24644,12 +25212,12 @@ 1 2 - 438642 + 438620 2 8 - 16523 + 16522 @@ -24665,12 +25233,12 @@ 1 2 - 438642 + 438620 2 9 - 16523 + 16522 @@ -24686,12 +25254,12 @@ 1 2 - 438642 + 438620 2 8 - 16523 + 16522 @@ -24846,7 +25414,7 @@ 1 2 - 225743 + 225732 2 @@ -24867,7 +25435,7 @@ 1 2 - 225743 + 225732 2 @@ -24888,7 +25456,7 @@ 1 2 - 235112 + 235100 2 @@ -24909,7 +25477,7 @@ 1 2 - 230206 + 230194 2 @@ -24930,7 +25498,7 @@ 1 2 - 26505 + 26504 2 @@ -24966,7 +25534,7 @@ 1 2 - 26505 + 26504 2 @@ -25002,7 +25570,7 @@ 1 2 - 35398 + 35396 @@ -25018,7 +25586,7 @@ 1 2 - 28720 + 28718 2 @@ -25043,11 +25611,11 @@ derspecifiers - 478674 + 478649 der_id - 476459 + 476435 spec_id @@ -25065,7 +25633,7 @@ 1 2 - 474245 + 474221 2 @@ -25111,11 +25679,11 @@ direct_base_offsets - 449987 + 449965 der_id - 449987 + 449965 offset @@ -25133,7 +25701,7 @@ 1 2 - 449987 + 449965 @@ -25330,19 +25898,19 @@ frienddecls - 700465 + 700430 id - 700465 + 700430 type_id - 42416 + 42414 decl_id - 77848 + 77742 location @@ -25360,7 +25928,7 @@ 1 2 - 700465 + 700430 @@ -25376,7 +25944,7 @@ 1 2 - 700465 + 700430 @@ -25392,7 +25960,7 @@ 1 2 - 700465 + 700430 @@ -25413,7 +25981,7 @@ 2 3 - 13968 + 13967 3 @@ -25423,7 +25991,7 @@ 7 12 - 3441 + 3440 12 @@ -25469,7 +26037,7 @@ 2 3 - 13968 + 13967 3 @@ -25479,7 +26047,7 @@ 7 12 - 3441 + 3440 12 @@ -25520,7 +26088,7 @@ 1 2 - 41053 + 41051 2 @@ -25541,17 +26109,17 @@ 1 2 - 48071 + 47864 2 3 - 5962 + 6064 3 8 - 5996 + 5995 8 @@ -25582,17 +26150,17 @@ 1 2 - 48071 + 47864 2 3 - 5962 + 6064 3 8 - 5996 + 5995 8 @@ -25623,7 +26191,7 @@ 1 2 - 77167 + 77060 2 @@ -25665,7 +26233,7 @@ 1 2 - 5962 + 5961 2 @@ -25690,7 +26258,7 @@ 2 - 2132 + 2129 340 @@ -25701,19 +26269,19 @@ comments - 11233402 + 11233100 id - 11233402 + 11233100 contents - 4303640 + 4303524 location - 11233402 + 11233100 @@ -25727,7 +26295,7 @@ 1 2 - 11233402 + 11233100 @@ -25743,7 +26311,7 @@ 1 2 - 11233402 + 11233100 @@ -25759,17 +26327,17 @@ 1 2 - 3928890 + 3928784 2 6 - 322978 + 322970 6 34447 - 51771 + 51770 @@ -25785,17 +26353,17 @@ 1 2 - 3928890 + 3928784 2 6 - 322978 + 322970 6 34447 - 51771 + 51770 @@ -25811,7 +26379,7 @@ 1 2 - 11233402 + 11233100 @@ -25827,7 +26395,7 @@ 1 2 - 11233402 + 11233100 @@ -25837,15 +26405,15 @@ commentbinding - 3914793 + 3914688 id - 3350796 + 3350706 element - 3749249 + 3749148 @@ -25859,12 +26427,12 @@ 1 2 - 3289170 + 3289081 2 1706 - 61626 + 61625 @@ -25880,12 +26448,12 @@ 1 2 - 3583705 + 3583609 2 3 - 165543 + 165539 @@ -25895,15 +26463,15 @@ exprconv - 9633084 + 9633168 converted - 9632979 + 9633062 conversion - 9633084 + 9633168 @@ -25917,7 +26485,7 @@ 1 2 - 9632873 + 9632957 2 @@ -25938,7 +26506,7 @@ 1 2 - 9633084 + 9633168 @@ -25948,30 +26516,30 @@ compgenerated - 9892394 + 9895967 id - 9892394 + 9895967 synthetic_destructor_call - 1671701 + 1669328 element - 1244965 + 1243197 i - 387 + 386 destructor_call - 1671701 + 1669328 @@ -25985,17 +26553,17 @@ 1 2 - 828685 + 827509 2 3 - 409480 + 408898 3 19 - 6799 + 6789 @@ -26011,17 +26579,17 @@ 1 2 - 828685 + 827509 2 3 - 409480 + 408898 3 19 - 6799 + 6789 @@ -26037,17 +26605,17 @@ 1 2 - 43 + 42 2 3 - 86 + 85 3 4 - 86 + 85 13 @@ -26103,17 +26671,17 @@ 1 2 - 43 + 42 2 3 - 86 + 85 3 4 - 86 + 85 13 @@ -26169,7 +26737,7 @@ 1 2 - 1671701 + 1669328 @@ -26185,7 +26753,7 @@ 1 2 - 1671701 + 1669328 @@ -26195,15 +26763,15 @@ namespaces - 8650 + 8649 id - 8650 + 8649 name - 4573 + 4572 @@ -26217,7 +26785,7 @@ 1 2 - 8650 + 8649 @@ -26233,7 +26801,7 @@ 1 2 - 3739 + 3738 2 @@ -26253,26 +26821,26 @@ namespace_inline - 499 + 498 id - 499 + 498 namespacembrs - 2037673 + 2038492 parentid - 3992 + 3991 memberid - 2037673 + 2038492 @@ -26286,7 +26854,7 @@ 1 2 - 499 + 498 2 @@ -26296,7 +26864,7 @@ 3 4 - 499 + 498 4 @@ -26344,8 +26912,8 @@ 249 - 15606 - 15607 + 15613 + 15614 124 @@ -26362,7 +26930,7 @@ 1 2 - 2037673 + 2038492 @@ -26372,11 +26940,11 @@ exprparents - 19454210 + 19454457 expr_id - 19454210 + 19454457 child_index @@ -26384,7 +26952,7 @@ parent_id - 12939983 + 12940148 @@ -26398,7 +26966,7 @@ 1 2 - 19454210 + 19454457 @@ -26414,7 +26982,7 @@ 1 2 - 19454210 + 19454457 @@ -26532,17 +27100,17 @@ 1 2 - 7394754 + 7394848 2 3 - 5082678 + 5082743 3 712 - 462550 + 462556 @@ -26558,17 +27126,17 @@ 1 2 - 7394754 + 7394848 2 3 - 5082678 + 5082743 3 712 - 462550 + 462556 @@ -26578,11 +27146,11 @@ expr_isload - 6909332 + 6899311 expr_id - 6909332 + 6899311 @@ -26667,11 +27235,11 @@ iscall - 5802824 + 5800192 caller - 5802824 + 5800192 kind @@ -26689,7 +27257,7 @@ 1 2 - 5802824 + 5800192 @@ -26713,8 +27281,8 @@ 21 - 268054 - 268055 + 268315 + 268316 21 @@ -26725,11 +27293,11 @@ numtemplatearguments - 627369 + 627727 expr_id - 627369 + 627727 num @@ -26747,7 +27315,7 @@ 1 2 - 627369 + 627727 @@ -26766,8 +27334,8 @@ 124 - 1263 - 1264 + 1266 + 1267 124 @@ -26831,23 +27399,23 @@ namequalifiers - 3041979 + 3037638 id - 3041979 + 3037638 qualifiableelement - 3041979 + 3037638 qualifyingelement - 47486 + 47419 location - 552457 + 551672 @@ -26861,7 +27429,7 @@ 1 2 - 3041979 + 3037638 @@ -26877,7 +27445,7 @@ 1 2 - 3041979 + 3037638 @@ -26893,7 +27461,7 @@ 1 2 - 3041979 + 3037638 @@ -26909,7 +27477,7 @@ 1 2 - 3041979 + 3037638 @@ -26925,7 +27493,7 @@ 1 2 - 3041979 + 3037638 @@ -26941,7 +27509,7 @@ 1 2 - 3041979 + 3037638 @@ -26957,27 +27525,27 @@ 1 2 - 31543 + 31498 2 3 - 8176 + 8164 3 5 - 4109 + 4103 5 - 6811 - 3571 + 6810 + 3566 19018 41956 - 86 + 85 @@ -26993,27 +27561,27 @@ 1 2 - 31543 + 31498 2 3 - 8176 + 8164 3 5 - 4109 + 4103 5 - 6811 - 3571 + 6810 + 3566 19018 41956 - 86 + 85 @@ -27029,22 +27597,22 @@ 1 2 - 34404 + 34356 2 3 - 7358 + 7348 3 6 - 3571 + 3566 6 20057 - 2151 + 2148 @@ -27060,22 +27628,22 @@ 1 2 - 79137 + 79046 2 6 - 38105 + 38030 6 7 - 399001 + 398435 7 192 - 36212 + 36160 @@ -27091,22 +27659,22 @@ 1 2 - 79137 + 79046 2 6 - 38105 + 38030 6 7 - 399001 + 398435 7 192 - 36212 + 36160 @@ -27122,22 +27690,22 @@ 1 2 - 111541 + 111383 2 4 - 13297 + 13278 4 5 - 415311 + 414721 5 33 - 12307 + 12289 @@ -27147,15 +27715,15 @@ varbind - 8254629 + 8254733 expr - 8254629 + 8254733 var - 1050375 + 1050389 @@ -27169,7 +27737,7 @@ 1 2 - 8254629 + 8254733 @@ -27185,52 +27753,52 @@ 1 2 - 171535 + 171538 2 3 - 188700 + 188703 3 4 - 145647 + 145649 4 5 - 116636 + 116637 5 6 - 83150 + 83152 6 7 - 65817 + 65818 7 9 - 80815 + 80816 9 13 - 81575 + 81576 13 27 - 79127 + 79128 27 5137 - 37368 + 37369 @@ -27240,15 +27808,15 @@ funbind - 5812528 + 5809904 expr - 5810054 + 5807433 fun - 275948 + 275686 @@ -27262,12 +27830,12 @@ 1 2 - 5807579 + 5804962 2 3 - 2474 + 2470 @@ -27283,27 +27851,27 @@ 1 2 - 181448 + 181298 2 3 - 38837 + 38782 3 4 - 17191 + 17167 4 8 - 22742 + 22710 8 37798 - 15728 + 15727 @@ -27313,11 +27881,11 @@ expr_allocator - 45244 + 45241 expr - 45244 + 45241 func @@ -27339,7 +27907,7 @@ 1 2 - 45244 + 45241 @@ -27355,7 +27923,7 @@ 1 2 - 45244 + 45241 @@ -27439,11 +28007,11 @@ expr_deallocator - 53829 + 53826 expr - 53829 + 53826 func @@ -27465,7 +28033,7 @@ 1 2 - 53829 + 53826 @@ -27481,7 +28049,7 @@ 1 2 - 53829 + 53826 @@ -27586,15 +28154,15 @@ expr_cond_guard - 897879 + 897887 cond - 897879 + 897887 guard - 897879 + 897887 @@ -27608,7 +28176,7 @@ 1 2 - 897879 + 897887 @@ -27624,7 +28192,7 @@ 1 2 - 897879 + 897887 @@ -27634,15 +28202,15 @@ expr_cond_true - 897876 + 897883 cond - 897876 + 897883 true - 897876 + 897883 @@ -27656,7 +28224,7 @@ 1 2 - 897876 + 897883 @@ -27672,7 +28240,7 @@ 1 2 - 897876 + 897883 @@ -27682,15 +28250,15 @@ expr_cond_false - 897879 + 897887 cond - 897879 + 897887 false - 897879 + 897887 @@ -27704,7 +28272,7 @@ 1 2 - 897879 + 897887 @@ -27720,7 +28288,7 @@ 1 2 - 897879 + 897887 @@ -27730,15 +28298,15 @@ values - 13474601 + 13474772 id - 13474601 + 13474772 str - 114566 + 114567 @@ -27752,7 +28320,7 @@ 1 2 - 13474601 + 13474772 @@ -27768,7 +28336,7 @@ 1 2 - 78302 + 78303 2 @@ -27783,7 +28351,7 @@ 6 52 - 8628 + 8629 52 @@ -27798,11 +28366,11 @@ valuetext - 6647456 + 6647555 id - 6647456 + 6647555 text @@ -27820,7 +28388,7 @@ 1 2 - 6647456 + 6647555 @@ -27861,15 +28429,15 @@ valuebind - 13583183 + 13583356 val - 13474601 + 13474772 expr - 13583183 + 13583356 @@ -27883,12 +28451,12 @@ 1 2 - 13384046 + 13384216 2 6 - 90554 + 90555 @@ -27904,7 +28472,7 @@ 1 2 - 13583183 + 13583356 @@ -27914,11 +28482,11 @@ fieldoffsets - 1497674 + 1499494 id - 1497674 + 1499494 byteoffset @@ -27940,7 +28508,7 @@ 1 2 - 1497674 + 1499494 @@ -27956,7 +28524,7 @@ 1 2 - 1497674 + 1499494 @@ -28001,7 +28569,7 @@ 250 - 5950 + 5966 1089 @@ -28018,7 +28586,7 @@ 1 2 - 30386 + 30387 2 @@ -28072,8 +28640,8 @@ 54 - 27146 - 27147 + 27179 + 27180 54 @@ -28115,19 +28683,19 @@ bitfield - 30314 + 30313 id - 30314 + 30313 bits - 3493 + 3492 declared_bits - 3493 + 3492 @@ -28141,7 +28709,7 @@ 1 2 - 30314 + 30313 @@ -28157,7 +28725,7 @@ 1 2 - 30314 + 30313 @@ -28173,7 +28741,7 @@ 1 2 - 998 + 997 2 @@ -28188,7 +28756,7 @@ 4 5 - 499 + 498 5 @@ -28224,7 +28792,7 @@ 1 2 - 3493 + 3492 @@ -28240,7 +28808,7 @@ 1 2 - 998 + 997 2 @@ -28255,7 +28823,7 @@ 4 5 - 499 + 498 5 @@ -28291,7 +28859,7 @@ 1 2 - 3493 + 3492 @@ -28301,23 +28869,23 @@ initialisers - 2251321 + 2247637 init - 2251321 + 2247637 var - 981178 + 979696 expr - 2251321 + 2247637 location - 516961 + 516295 @@ -28331,7 +28899,7 @@ 1 2 - 2251321 + 2247637 @@ -28347,7 +28915,7 @@ 1 2 - 2251321 + 2247637 @@ -28363,7 +28931,7 @@ 1 2 - 2251321 + 2247637 @@ -28379,17 +28947,17 @@ 1 2 - 870758 + 869453 2 15 - 37448 + 37398 16 25 - 72972 + 72843 @@ -28405,17 +28973,17 @@ 1 2 - 870758 + 869453 2 15 - 37448 + 37398 16 25 - 72972 + 72843 @@ -28431,7 +28999,7 @@ 1 2 - 981170 + 979688 2 @@ -28452,7 +29020,7 @@ 1 2 - 2251321 + 2247637 @@ -28468,7 +29036,7 @@ 1 2 - 2251321 + 2247637 @@ -28484,7 +29052,7 @@ 1 2 - 2251321 + 2247637 @@ -28500,22 +29068,22 @@ 1 2 - 415111 + 414608 2 3 - 33614 + 33555 3 13 - 42070 + 42013 13 111925 - 26165 + 26119 @@ -28531,17 +29099,17 @@ 1 2 - 444412 + 443873 2 3 - 34524 + 34463 3 12238 - 38025 + 37958 @@ -28557,22 +29125,22 @@ 1 2 - 415111 + 414608 2 3 - 33614 + 33555 3 13 - 42070 + 42013 13 111925 - 26165 + 26119 @@ -28582,26 +29150,26 @@ braced_initialisers - 68438 + 68305 init - 68438 + 68305 expr_ancestor - 1677683 + 1675301 exp - 1677683 + 1675301 ancestor - 839659 + 838467 @@ -28615,7 +29183,7 @@ 1 2 - 1677683 + 1675301 @@ -28631,17 +29199,17 @@ 1 2 - 17084 + 17059 2 3 - 812505 + 811351 3 19 - 10069 + 10055 @@ -28651,11 +29219,11 @@ exprs - 25210567 + 25210887 id - 25210567 + 25210887 kind @@ -28663,7 +29231,7 @@ location - 10585854 + 10585988 @@ -28677,7 +29245,7 @@ 1 2 - 25210567 + 25210887 @@ -28693,7 +29261,7 @@ 1 2 - 25210567 + 25210887 @@ -28871,22 +29439,22 @@ 1 2 - 8903885 + 8903998 2 3 - 820608 + 820618 3 16 - 797198 + 797208 16 71733 - 64161 + 64162 @@ -28902,17 +29470,17 @@ 1 2 - 9043287 + 9043402 2 3 - 774272 + 774282 3 32 - 768294 + 768303 @@ -28922,19 +29490,19 @@ expr_reuse - 847039 + 845836 reuse - 847039 + 845836 original - 847039 + 845836 value_category - 43 + 42 @@ -28948,7 +29516,7 @@ 1 2 - 847039 + 845836 @@ -28964,7 +29532,7 @@ 1 2 - 847039 + 845836 @@ -28980,7 +29548,7 @@ 1 2 - 847039 + 845836 @@ -28996,7 +29564,7 @@ 1 2 - 847039 + 845836 @@ -29048,15 +29616,15 @@ expr_types - 25210567 + 25210887 id - 25210567 + 25210887 typeid - 214202 + 214205 value_category @@ -29074,7 +29642,7 @@ 1 2 - 25210567 + 25210887 @@ -29090,7 +29658,7 @@ 1 2 - 25210567 + 25210887 @@ -29131,7 +29699,7 @@ 8 14 - 17386 + 17387 14 @@ -29141,17 +29709,17 @@ 24 49 - 16067 + 16068 49 134 - 16177 + 16178 134 441505 - 13825 + 13826 @@ -29167,7 +29735,7 @@ 1 2 - 185913 + 185915 2 @@ -29235,15 +29803,15 @@ new_allocated_type - 46198 + 46195 expr - 46198 + 46195 type_id - 27391 + 27390 @@ -29257,7 +29825,7 @@ 1 2 - 46198 + 46195 @@ -29273,12 +29841,12 @@ 1 2 - 11515 + 11514 2 3 - 14479 + 14478 3 @@ -29293,15 +29861,15 @@ new_array_allocated_type - 6653 + 6641 expr - 6653 + 6641 type_id - 2843 + 2838 @@ -29315,7 +29883,7 @@ 1 2 - 6653 + 6641 @@ -29336,17 +29904,17 @@ 2 3 - 2510 + 2505 3 5 - 219 + 218 6 15 - 73 + 72 @@ -29356,19 +29924,19 @@ aggregate_field_init - 5717380 + 5717381 aggregate - 1243068 + 1243069 initializer - 5717202 + 5717203 field - 3227 + 3228 position @@ -29390,7 +29958,7 @@ 1 2 - 19690 + 19691 2 @@ -29441,7 +30009,7 @@ 1 2 - 19686 + 19687 2 @@ -29492,7 +30060,7 @@ 1 2 - 19690 + 19691 2 @@ -29543,7 +30111,7 @@ 1 2 - 1242986 + 1242987 2 @@ -29564,7 +30132,7 @@ 1 2 - 5717202 + 5717203 @@ -29580,7 +30148,7 @@ 1 2 - 5717024 + 5717025 2 @@ -29601,7 +30169,7 @@ 1 2 - 5717202 + 5717203 @@ -29617,7 +30185,7 @@ 1 2 - 5717202 + 5717203 @@ -29633,7 +30201,7 @@ 1 2 - 1433 + 1434 2 @@ -29689,7 +30257,7 @@ 1 2 - 1433 + 1434 2 @@ -29745,7 +30313,7 @@ 1 2 - 3213 + 3214 2 @@ -29766,7 +30334,7 @@ 1 2 - 3201 + 3202 2 @@ -29840,8 +30408,8 @@ 2 - 1243068 - 1243069 + 1243069 + 1243070 1 @@ -29911,8 +30479,8 @@ 2 - 1243068 - 1243069 + 1243069 + 1243070 1 @@ -29982,8 +30550,8 @@ 2 - 1283 - 1284 + 1284 + 1285 1 @@ -30024,8 +30592,8 @@ 1 - 1242670 - 1242671 + 1242671 + 1242672 1 @@ -30045,8 +30613,8 @@ 1 - 5716492 - 5716493 + 5716493 + 5716494 1 @@ -30066,8 +30634,8 @@ 1 - 3035 - 3036 + 3036 + 3037 1 @@ -30099,15 +30667,15 @@ aggregate_array_init - 1349246 + 1349502 aggregate - 152356 + 152357 initializer - 1349246 + 1349502 element_index @@ -30168,7 +30736,7 @@ 58 62923 - 1762 + 1763 @@ -30219,7 +30787,7 @@ 58 62923 - 1762 + 1763 @@ -30270,7 +30838,7 @@ 58 62923 - 1762 + 1763 @@ -30286,7 +30854,7 @@ 1 2 - 152356 + 152357 @@ -30302,7 +30870,7 @@ 1 2 - 1349246 + 1349502 @@ -30318,7 +30886,7 @@ 1 2 - 1349246 + 1349502 @@ -30334,7 +30902,7 @@ 1 2 - 1349246 + 1349502 @@ -30350,7 +30918,7 @@ 1 2 - 1349246 + 1349502 @@ -30390,7 +30958,7 @@ 37 - 152356 + 152357 2151 @@ -30431,7 +30999,7 @@ 37 - 152356 + 152357 2151 @@ -30514,7 +31082,7 @@ 37 - 152357 + 152358 2151 @@ -30555,7 +31123,7 @@ 37 - 152357 + 152358 2151 @@ -30617,8 +31185,8 @@ 1 - 152353 - 152354 + 152354 + 152355 1 @@ -30638,8 +31206,8 @@ 1 - 1349230 - 1349231 + 1349486 + 1349487 1 @@ -30692,15 +31260,15 @@ condition_decl_bind - 408920 + 408340 expr - 408920 + 408340 decl - 408920 + 408340 @@ -30714,7 +31282,7 @@ 1 2 - 408920 + 408340 @@ -30730,7 +31298,7 @@ 1 2 - 408920 + 408340 @@ -30740,15 +31308,15 @@ typeid_bind - 47901 + 47899 expr - 47901 + 47899 type_id - 15944 + 15943 @@ -30762,7 +31330,7 @@ 1 2 - 47901 + 47899 @@ -30778,12 +31346,12 @@ 1 2 - 2964 + 2963 2 3 - 12571 + 12570 3 @@ -30798,15 +31366,15 @@ uuidof_bind - 26677 + 26695 expr - 26677 + 26695 type_id - 26425 + 26443 @@ -30820,7 +31388,7 @@ 1 2 - 26677 + 26695 @@ -30836,12 +31404,12 @@ 1 2 - 26214 + 26232 2 4 - 211 + 210 @@ -30851,11 +31419,11 @@ sizeof_bind - 242026 + 242030 expr - 242026 + 242030 type_id @@ -30873,7 +31441,7 @@ 1 2 - 242026 + 242030 @@ -30982,11 +31550,11 @@ lambdas - 19057 + 19023 expr - 19057 + 19023 default_capture @@ -31012,7 +31580,7 @@ 1 2 - 19057 + 19023 @@ -31028,7 +31596,7 @@ 1 2 - 19057 + 19023 @@ -31044,7 +31612,7 @@ 1 2 - 19057 + 19023 @@ -31228,23 +31796,23 @@ lambda_capture - 31965 + 31909 id - 31965 + 31909 lambda - 15491 + 15463 index - 138 + 137 field - 31965 + 31909 captured_by_reference @@ -31256,7 +31824,7 @@ location - 17944 + 17912 @@ -31270,7 +31838,7 @@ 1 2 - 31965 + 31909 @@ -31286,7 +31854,7 @@ 1 2 - 31965 + 31909 @@ -31302,7 +31870,7 @@ 1 2 - 31965 + 31909 @@ -31318,7 +31886,7 @@ 1 2 - 31965 + 31909 @@ -31334,7 +31902,7 @@ 1 2 - 31965 + 31909 @@ -31350,7 +31918,7 @@ 1 2 - 31965 + 31909 @@ -31366,27 +31934,27 @@ 1 2 - 8212 + 8198 2 3 - 3541 + 3535 3 4 - 1657 + 1654 4 6 - 1259 + 1256 6 18 - 820 + 819 @@ -31402,27 +31970,27 @@ 1 2 - 8212 + 8198 2 3 - 3541 + 3535 3 4 - 1657 + 1654 4 6 - 1259 + 1256 6 18 - 820 + 819 @@ -31438,27 +32006,27 @@ 1 2 - 8212 + 8198 2 3 - 3541 + 3535 3 4 - 1657 + 1654 4 6 - 1259 + 1256 6 18 - 820 + 819 @@ -31474,12 +32042,12 @@ 1 2 - 14248 + 14223 2 3 - 1242 + 1240 @@ -31495,7 +32063,7 @@ 1 2 - 15369 + 15342 2 @@ -31516,22 +32084,22 @@ 1 2 - 8805 + 8790 2 3 - 3696 + 3689 3 4 - 1389 + 1386 4 7 - 1291 + 1289 7 @@ -31978,7 +32546,7 @@ 1 2 - 31965 + 31909 @@ -31994,7 +32562,7 @@ 1 2 - 31965 + 31909 @@ -32010,7 +32578,7 @@ 1 2 - 31965 + 31909 @@ -32026,7 +32594,7 @@ 1 2 - 31965 + 31909 @@ -32042,7 +32610,7 @@ 1 2 - 31965 + 31909 @@ -32058,7 +32626,7 @@ 1 2 - 31965 + 31909 @@ -32316,17 +32884,17 @@ 1 2 - 15694 + 15666 2 6 - 1437 + 1435 6 68 - 812 + 810 @@ -32342,17 +32910,17 @@ 1 2 - 16271 + 16242 2 13 - 1470 + 1467 13 68 - 203 + 202 @@ -32368,12 +32936,12 @@ 1 2 - 17253 + 17223 2 8 - 690 + 689 @@ -32389,17 +32957,17 @@ 1 2 - 15694 + 15666 2 6 - 1437 + 1435 6 68 - 812 + 810 @@ -32415,7 +32983,7 @@ 1 2 - 17920 + 17888 2 @@ -32436,7 +33004,7 @@ 1 2 - 17944 + 17912 @@ -32446,15 +33014,15 @@ fold - 1247 + 1246 expr - 1247 + 1246 operator - 86 + 85 is_left_fold @@ -32472,7 +33040,7 @@ 1 2 - 1247 + 1246 @@ -32488,7 +33056,7 @@ 1 2 - 1247 + 1246 @@ -32504,7 +33072,7 @@ 1 2 - 43 + 42 2 @@ -32530,7 +33098,7 @@ 1 2 - 86 + 85 @@ -32572,11 +33140,11 @@ stmts - 6368836 + 6358201 id - 6368836 + 6358201 kind @@ -32584,7 +33152,7 @@ location - 2684483 + 2679769 @@ -32598,7 +33166,7 @@ 1 2 - 6368836 + 6358201 @@ -32614,7 +33182,7 @@ 1 2 - 6368836 + 6358201 @@ -32713,13 +33281,13 @@ 8 - 119871 - 119872 + 119906 + 119907 8 - 200105 - 200106 + 200140 + 200141 8 @@ -32824,13 +33392,13 @@ 8 - 49039 - 49040 + 49040 + 49041 8 - 86405 - 86406 + 86406 + 86407 8 @@ -32852,22 +33420,22 @@ 1 2 - 2224993 + 2221080 2 3 - 182231 + 181910 3 10 - 202173 + 201818 10 1789 - 75084 + 74960 @@ -32883,12 +33451,12 @@ 1 2 - 2601527 + 2596951 2 10 - 82955 + 82817 @@ -32898,15 +33466,15 @@ type_vla - 1 + 3 type_id - 1 + 3 decl - 1 + 3 @@ -32920,7 +33488,7 @@ 1 2 - 1 + 3 @@ -32936,7 +33504,7 @@ 1 2 - 1 + 3 @@ -33053,15 +33621,15 @@ if_then - 990214 + 990227 if_stmt - 990214 + 990227 then_id - 990214 + 990227 @@ -33075,7 +33643,7 @@ 1 2 - 990214 + 990227 @@ -33091,7 +33659,7 @@ 1 2 - 990214 + 990227 @@ -33101,15 +33669,15 @@ if_else - 437107 + 436486 if_stmt - 437107 + 436486 else_id - 437107 + 436486 @@ -33123,7 +33691,7 @@ 1 2 - 437107 + 436486 @@ -33139,7 +33707,7 @@ 1 2 - 437107 + 436486 @@ -33197,15 +33765,15 @@ constexpr_if_then - 106037 + 106035 constexpr_if_stmt - 106037 + 106035 then_id - 106037 + 106035 @@ -33219,7 +33787,7 @@ 1 2 - 106037 + 106035 @@ -33235,7 +33803,7 @@ 1 2 - 106037 + 106035 @@ -33245,15 +33813,15 @@ constexpr_if_else - 76097 + 76095 constexpr_if_stmt - 76097 + 76095 else_id - 76097 + 76095 @@ -33267,7 +33835,7 @@ 1 2 - 76097 + 76095 @@ -33283,7 +33851,7 @@ 1 2 - 76097 + 76095 @@ -33389,15 +33957,15 @@ while_body - 39647 + 39648 while_stmt - 39647 + 39648 body_id - 39647 + 39648 @@ -33411,7 +33979,7 @@ 1 2 - 39647 + 39648 @@ -33427,7 +33995,7 @@ 1 2 - 39647 + 39648 @@ -33437,15 +34005,15 @@ do_body - 233641 + 233644 do_stmt - 233641 + 233644 body_id - 233641 + 233644 @@ -33459,7 +34027,7 @@ 1 2 - 233641 + 233644 @@ -33475,7 +34043,7 @@ 1 2 - 233641 + 233644 @@ -33533,19 +34101,19 @@ switch_case - 836152 + 834964 switch_stmt - 411868 + 411283 index - 387 + 386 case_id - 836152 + 834964 @@ -33564,12 +34132,12 @@ 2 3 - 408985 + 408404 3 19 - 2861 + 2857 @@ -33590,12 +34158,12 @@ 2 3 - 408985 + 408404 3 19 - 2861 + 2857 @@ -33753,7 +34321,7 @@ 1 2 - 836152 + 834964 @@ -33769,7 +34337,7 @@ 1 2 - 836152 + 834964 @@ -33779,15 +34347,15 @@ switch_body - 411868 + 411283 switch_stmt - 411868 + 411283 body_id - 411868 + 411283 @@ -33801,7 +34369,7 @@ 1 2 - 411868 + 411283 @@ -33817,7 +34385,7 @@ 1 2 - 411868 + 411283 @@ -33875,15 +34443,15 @@ for_condition - 76341 + 76342 for_stmt - 76341 + 76342 condition_id - 76341 + 76342 @@ -33897,7 +34465,7 @@ 1 2 - 76341 + 76342 @@ -33913,7 +34481,7 @@ 1 2 - 76341 + 76342 @@ -33923,15 +34491,15 @@ for_update - 73386 + 73387 for_stmt - 73386 + 73387 update_id - 73386 + 73387 @@ -33945,7 +34513,7 @@ 1 2 - 73386 + 73387 @@ -33961,7 +34529,7 @@ 1 2 - 73386 + 73387 @@ -33971,15 +34539,15 @@ for_body - 84389 + 84390 for_stmt - 84389 + 84390 body_id - 84389 + 84390 @@ -33993,7 +34561,7 @@ 1 2 - 84389 + 84390 @@ -34009,7 +34577,7 @@ 1 2 - 84389 + 84390 @@ -34019,19 +34587,19 @@ stmtparents - 5628263 + 5618647 id - 5628263 + 5618647 index - 15775 + 15747 parent - 2381441 + 2377536 @@ -34045,7 +34613,7 @@ 1 2 - 5628263 + 5618647 @@ -34061,7 +34629,7 @@ 1 2 - 5628263 + 5618647 @@ -34077,52 +34645,52 @@ 1 2 - 5182 + 5173 2 3 - 1291 + 1289 3 4 - 284 + 283 4 5 - 2006 + 2002 7 8 - 1315 + 1313 8 12 - 1023 + 1021 12 29 - 1389 + 1386 29 39 - 1186 + 1183 42 78 - 1194 + 1192 78 - 209668 - 901 + 209703 + 900 @@ -34138,52 +34706,52 @@ 1 2 - 5182 + 5173 2 3 - 1291 + 1289 3 4 - 284 + 283 4 5 - 2006 + 2002 7 8 - 1315 + 1313 8 12 - 1023 + 1021 12 29 - 1389 + 1386 29 39 - 1186 + 1183 42 78 - 1194 + 1192 78 - 209668 - 901 + 209703 + 900 @@ -34199,32 +34767,32 @@ 1 2 - 1358987 + 1356881 2 3 - 517368 + 516458 3 4 - 151516 + 151250 4 6 - 155724 + 155450 6 16 - 178868 + 178553 16 1943 - 18976 + 18942 @@ -34240,32 +34808,32 @@ 1 2 - 1358987 + 1356881 2 3 - 517368 + 516458 3 4 - 151516 + 151250 4 6 - 155724 + 155450 6 16 - 178868 + 178553 16 1943 - 18976 + 18942 @@ -34275,30 +34843,30 @@ ishandler - 43781 + 43779 block - 43781 + 43779 stmt_decl_bind - 725870 + 724593 stmt - 715301 + 714043 num - 73 + 72 decl - 725870 + 724593 @@ -34312,12 +34880,12 @@ 1 2 - 707836 + 706591 2 10 - 7465 + 7452 @@ -34333,12 +34901,12 @@ 1 2 - 707836 + 706591 2 10 - 7465 + 7452 @@ -34466,7 +35034,7 @@ 1 2 - 725870 + 724593 @@ -34482,7 +35050,7 @@ 1 2 - 725870 + 724593 @@ -34492,19 +35060,19 @@ stmt_decl_entry_bind - 725870 + 724593 stmt - 715301 + 714043 num - 73 + 72 decl_entry - 725870 + 724593 @@ -34518,12 +35086,12 @@ 1 2 - 707836 + 706591 2 10 - 7465 + 7452 @@ -34539,12 +35107,12 @@ 1 2 - 707836 + 706591 2 10 - 7465 + 7452 @@ -34672,7 +35240,7 @@ 1 2 - 725870 + 724593 @@ -34688,7 +35256,7 @@ 1 2 - 725870 + 724593 @@ -34698,15 +35266,15 @@ blockscope - 1644335 + 1644291 block - 1644335 + 1644291 enclosing - 1427145 + 1427106 @@ -34720,7 +35288,7 @@ 1 2 - 1644335 + 1644291 @@ -34736,17 +35304,17 @@ 1 2 - 1294535 + 1294500 2 4 - 117265 + 117262 4 29 - 15344 + 15343 @@ -34756,19 +35324,19 @@ jumpinfo - 348320 + 348325 id - 348320 + 348325 str - 28948 + 28949 target - 72706 + 72707 @@ -34782,7 +35350,7 @@ 1 2 - 348320 + 348325 @@ -34798,7 +35366,7 @@ 1 2 - 348320 + 348325 @@ -34814,7 +35382,7 @@ 2 3 - 13596 + 13597 3 @@ -34860,7 +35428,7 @@ 1 2 - 23190 + 23191 2 @@ -34891,7 +35459,7 @@ 2 3 - 36210 + 36211 3 @@ -34927,7 +35495,7 @@ 1 2 - 72706 + 72707 @@ -34937,11 +35505,11 @@ preprocdirects - 5408430 + 5408285 id - 5408430 + 5408285 kind @@ -34949,7 +35517,7 @@ location - 5405187 + 5405041 @@ -34963,7 +35531,7 @@ 1 2 - 5408430 + 5408285 @@ -34979,7 +35547,7 @@ 1 2 - 5408430 + 5408285 @@ -35127,7 +35695,7 @@ 1 2 - 5405062 + 5404916 27 @@ -35148,7 +35716,7 @@ 1 2 - 5405187 + 5405041 @@ -35158,15 +35726,15 @@ preprocpair - 1141217 + 1141186 begin - 888971 + 888947 elseelifend - 1141217 + 1141186 @@ -35180,17 +35748,17 @@ 1 2 - 649575 + 649558 2 3 - 230414 + 230407 3 9 - 8982 + 8981 @@ -35206,7 +35774,7 @@ 1 2 - 1141217 + 1141186 @@ -35216,41 +35784,41 @@ preproctrue - 439371 + 439359 branch - 439371 + 439359 preprocfalse - 285304 + 285296 branch - 285304 + 285296 preproctext - 4352418 + 4352301 id - 4352418 + 4352301 head - 2955088 + 2955008 body - 1683382 + 1683337 @@ -35264,7 +35832,7 @@ 1 2 - 4352418 + 4352301 @@ -35280,7 +35848,7 @@ 1 2 - 4352418 + 4352301 @@ -35296,12 +35864,12 @@ 1 2 - 2756485 + 2756411 2 798 - 198602 + 198597 @@ -35317,12 +35885,12 @@ 1 2 - 2873875 + 2873798 2 5 - 81212 + 81210 @@ -35338,17 +35906,17 @@ 1 2 - 1535178 + 1535137 2 10 - 127245 + 127242 10 13606 - 20958 + 20957 @@ -35364,12 +35932,12 @@ 1 2 - 1539420 + 1539379 2 12 - 126871 + 126867 12 @@ -35384,15 +35952,15 @@ includes - 318638 + 318598 id - 318638 + 318598 included - 58695 + 58688 @@ -35406,7 +35974,7 @@ 1 2 - 318638 + 318598 @@ -35422,12 +35990,12 @@ 1 2 - 29046 + 29043 2 3 - 9442 + 9441 3 @@ -35437,7 +36005,7 @@ 4 6 - 5355 + 5354 6 @@ -35447,7 +36015,7 @@ 11 47 - 4404 + 4403 47 @@ -35510,11 +36078,11 @@ link_parent - 30398238 + 30401054 element - 3866121 + 3866469 link_target @@ -35532,17 +36100,17 @@ 1 2 - 530459 + 530500 2 9 - 26948 + 26947 9 10 - 3308712 + 3309021 @@ -35561,48 +36129,48 @@ 34 - 97375 - 97376 + 97389 + 97390 34 - 97494 - 97495 + 97508 + 97509 34 - 97547 - 97548 + 97561 + 97562 34 - 97574 - 97575 + 97588 + 97589 34 - 97596 - 97597 + 97610 + 97611 34 - 97628 - 97629 + 97642 + 97643 34 - 99635 - 99636 + 99649 + 99650 34 - 103015 - 103016 + 103029 + 103030 34 - 104379 - 104380 + 104395 + 104396 34 diff --git a/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/old.dbscheme b/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/old.dbscheme new file mode 100644 index 000000000000..1a6854060d5d --- /dev/null +++ b/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/old.dbscheme @@ -0,0 +1,2450 @@ +/*- 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 + * + * 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 +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_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 -*/ + +/** + * 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 +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * 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( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +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 +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +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_default 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 + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // 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 +); + +builtin_functions( + int id: @function 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: 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_default 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 + | @decltype; + +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_default 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_default 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_default 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/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..a42ce5fc9432 --- /dev/null +++ b/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/semmlecode.cpp.dbscheme @@ -0,0 +1,2469 @@ + +/*- 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 + * + * 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 +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_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 -*/ + +/** + * 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 +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * 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( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +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 +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +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_default 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 + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // 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 +); + +builtin_functions( + int id: @function 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: 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_default 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 + | @decltype; + +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_default 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_default 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_default 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 +); + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: string 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/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/upgrade.properties b/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/upgrade.properties new file mode 100644 index 000000000000..52b67d65af75 --- /dev/null +++ b/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/upgrade.properties @@ -0,0 +1,2 @@ +description: Add databaseMetadata and overlayChangedFiles relations +compatibility: full diff --git a/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/old.dbscheme b/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/old.dbscheme new file mode 100644 index 000000000000..2121ffec11fa --- /dev/null +++ b/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/old.dbscheme @@ -0,0 +1,2437 @@ +/*- 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 + * + * 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 -*/ + +/** + * 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 +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * 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( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +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 +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +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_default 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 + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // 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 +); + +builtin_functions( + int id: @function 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: 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_default 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 + | @decltype; + +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_default 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_default 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_default 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/2121ffec11fac265524955fee1775217364d4ca4/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..1a6854060d5d --- /dev/null +++ b/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/semmlecode.cpp.dbscheme @@ -0,0 +1,2450 @@ +/*- 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 + * + * 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 +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_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 -*/ + +/** + * 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 +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * 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( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +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 +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +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_default 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 + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // 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 +); + +builtin_functions( + int id: @function 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: 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_default 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 + | @decltype; + +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_default 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_default 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_default 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/2121ffec11fac265524955fee1775217364d4ca4/upgrade.properties b/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/upgrade.properties new file mode 100644 index 000000000000..046b67dcbf3f --- /dev/null +++ b/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/upgrade.properties @@ -0,0 +1,2 @@ +description: Support expanded compilation argument lists +compatibility: backwards diff --git a/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/old.dbscheme b/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/old.dbscheme new file mode 100644 index 000000000000..c16b29b27f71 --- /dev/null +++ b/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/old.dbscheme @@ -0,0 +1,2436 @@ +/*- 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 + * + * 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 -*/ + +/** + * 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 +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * 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( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +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 +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +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_default 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 + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // 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 +); + +builtin_functions( + int id: @function 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: 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_default 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_default 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_default 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_default 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/c16b29b27f71247023321cc0d0360998b318837c/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..2121ffec11fa --- /dev/null +++ b/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/semmlecode.cpp.dbscheme @@ -0,0 +1,2437 @@ +/*- 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 + * + * 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 -*/ + +/** + * 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 +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * 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( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +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 +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +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_default 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 + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // 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 +); + +builtin_functions( + int id: @function 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 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +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 +| 11 = @scalable_vector // Arm SVE +; + +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 +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: 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_default 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 + | @decltype; + +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_default 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_default 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_default 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/c16b29b27f71247023321cc0d0360998b318837c/upgrade.properties b/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/upgrade.properties new file mode 100644 index 000000000000..a951593a337a --- /dev/null +++ b/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/upgrade.properties @@ -0,0 +1,2 @@ +description: Fix decltype qualifier issue +compatibility: full diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 880cab8a58de..a6caf3c6a6bd 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.5.7 + +No user-facing changes. + +## 1.5.6 + +No user-facing changes. + +## 1.5.5 + +No user-facing changes. + +## 1.5.4 + +No user-facing changes. + ## 1.5.3 No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/1.5.4.md b/cpp/ql/src/change-notes/released/1.5.4.md new file mode 100644 index 000000000000..5ff5ac8ebb7c --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.5.4.md @@ -0,0 +1,3 @@ +## 1.5.4 + +No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/1.5.5.md b/cpp/ql/src/change-notes/released/1.5.5.md new file mode 100644 index 000000000000..76d0ac894891 --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.5.5.md @@ -0,0 +1,3 @@ +## 1.5.5 + +No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/1.5.6.md b/cpp/ql/src/change-notes/released/1.5.6.md new file mode 100644 index 000000000000..17fb577dc9e3 --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.5.6.md @@ -0,0 +1,3 @@ +## 1.5.6 + +No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/1.5.7.md b/cpp/ql/src/change-notes/released/1.5.7.md new file mode 100644 index 000000000000..c60c55034a6b --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.5.7.md @@ -0,0 +1,3 @@ +## 1.5.7 + +No user-facing changes. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 232224b0e267..227ac5febefb 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.3 +lastReleaseVersion: 1.5.7 diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-125/DangerousWorksWithMultibyteOrWideCharacters.ql b/cpp/ql/src/experimental/Security/CWE/CWE-125/DangerousWorksWithMultibyteOrWideCharacters.ql index 74ac8e6da661..c562e28326bc 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-125/DangerousWorksWithMultibyteOrWideCharacters.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-125/DangerousWorksWithMultibyteOrWideCharacters.ql @@ -1,5 +1,5 @@ /** - * @name Dangerous use convert function. + * @name Dangerous use convert function * @description Using convert function with an invalid length argument can result in an out-of-bounds access error or unexpected result. * @kind problem * @id cpp/dangerous-use-convert-function diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-190/DangerousUseOfTransformationAfterOperation.ql b/cpp/ql/src/experimental/Security/CWE/CWE-190/DangerousUseOfTransformationAfterOperation.ql index e848b97ef8f7..47ece4a2aaea 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-190/DangerousUseOfTransformationAfterOperation.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-190/DangerousUseOfTransformationAfterOperation.ql @@ -1,5 +1,5 @@ /** - * @name Dangerous use of transformation after operation. + * @name Dangerous use of transformation after operation * @description By using the transformation after the operation, you are doing a pointless and dangerous action. * @kind problem * @id cpp/dangerous-use-of-transformation-after-operation diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-200/ExposureSensitiveInformationUnauthorizedActor.ql b/cpp/ql/src/experimental/Security/CWE/CWE-200/ExposureSensitiveInformationUnauthorizedActor.ql index 61708ce5da0d..7d810d6317d8 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-200/ExposureSensitiveInformationUnauthorizedActor.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-200/ExposureSensitiveInformationUnauthorizedActor.ql @@ -1,5 +1,5 @@ /** - * @name Writing to a file without setting permissions. + * @name Writing to a file without setting permissions * @description Lack of restriction on file access rights can be unsafe. * @kind problem * @id cpp/work-with-file-without-permissions-rights diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-243/IncorrectChangingWorkingDirectory.ql b/cpp/ql/src/experimental/Security/CWE/CWE-243/IncorrectChangingWorkingDirectory.ql index 9d61418fd776..5ee6a8db1a4d 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-243/IncorrectChangingWorkingDirectory.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-243/IncorrectChangingWorkingDirectory.ql @@ -1,5 +1,5 @@ /** - * @name Find work with changing working directories, with security errors. + * @name Find work with changing working directories, with security errors * @description Not validating the return value or pinning the directory can be unsafe. * @kind problem * @id cpp/work-with-changing-working-directories diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-266/IncorrectPrivilegeAssignment.ql b/cpp/ql/src/experimental/Security/CWE/CWE-266/IncorrectPrivilegeAssignment.ql index a8f931555991..6bb6a48a9ebe 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-266/IncorrectPrivilegeAssignment.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-266/IncorrectPrivilegeAssignment.ql @@ -1,5 +1,5 @@ /** - * @name Find the wrong use of the umask function. + * @name Find the wrong use of the umask function * @description Incorrectly evaluated argument to the umask function may have security implications. * @kind problem * @id cpp/wrong-use-of-the-umask diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-377/InsecureTemporaryFile.ql b/cpp/ql/src/experimental/Security/CWE/CWE-377/InsecureTemporaryFile.ql index f62222eb5b93..cecb280a3c21 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-377/InsecureTemporaryFile.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-377/InsecureTemporaryFile.ql @@ -1,5 +1,5 @@ /** - * @name Insecure generation of filenames. + * @name Insecure generation of filenames * @description Using a predictable filename when creating a temporary file can lead to an attacker-controlled input. * @kind problem * @id cpp/insecure-generation-of-filename diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-476/DangerousUseOfExceptionBlocks.ql b/cpp/ql/src/experimental/Security/CWE/CWE-476/DangerousUseOfExceptionBlocks.ql index 4eb24c143220..d6d1a31b3421 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-476/DangerousUseOfExceptionBlocks.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-476/DangerousUseOfExceptionBlocks.ql @@ -1,5 +1,5 @@ /** - * @name Dangerous use of exception blocks. + * @name Dangerous use of exception blocks * @description When clearing the data in the catch block, you must be sure that the memory was allocated before the exception. * @kind problem * @id cpp/dangerous-use-of-exception-blocks diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.ql b/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.ql index a5270518894a..066475c35cb4 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.ql @@ -1,5 +1,5 @@ /** - * @name Dangerous use SSL_shutdown. + * @name Dangerous use SSL_shutdown * @description Incorrect closing of the connection leads to the creation of different states for the server and client, which can be exploited by an attacker. * @kind problem * @id cpp/dangerous-use-of-ssl-shutdown diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 178947f2549a..e74997f97a24 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.5.3 +version: 1.5.7 groups: - cpp - queries diff --git a/cpp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql b/cpp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql index a15a584e13d0..7c547d7f0676 100644 --- a/cpp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql +++ b/cpp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture content based summary models. + * @name Capture content based summary models * @description Finds applicable content based summary models to be used by other queries. * @kind diagnostic * @id cpp/utils/modelgenerator/contentbased-summary-models diff --git a/cpp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql b/cpp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql index 813eece65b96..8631ec6ddd63 100644 --- a/cpp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql +++ b/cpp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture neutral models. + * @name Capture neutral models * @description Finds neutral models to be used by other queries. * @kind diagnostic * @id cpp/utils/modelgenerator/neutral-models diff --git a/cpp/ql/src/utils/modelgenerator/CaptureSinkModels.ql b/cpp/ql/src/utils/modelgenerator/CaptureSinkModels.ql index 1ed9b0320709..84bff3f39945 100644 --- a/cpp/ql/src/utils/modelgenerator/CaptureSinkModels.ql +++ b/cpp/ql/src/utils/modelgenerator/CaptureSinkModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture sink models. + * @name Capture sink models * @description Finds public methods that act as sinks as they flow into a known sink. * @kind diagnostic * @id cpp/utils/modelgenerator/sink-models diff --git a/cpp/ql/src/utils/modelgenerator/CaptureSourceModels.ql b/cpp/ql/src/utils/modelgenerator/CaptureSourceModels.ql index 4f86fb6b6fb1..a45b96474b4f 100644 --- a/cpp/ql/src/utils/modelgenerator/CaptureSourceModels.ql +++ b/cpp/ql/src/utils/modelgenerator/CaptureSourceModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture source models. + * @name Capture source models * @description Finds APIs that act as sources as they expose already known sources. * @kind diagnostic * @id cpp/utils/modelgenerator/source-models diff --git a/cpp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql b/cpp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql index a023afabd31c..baf4c55ecdc3 100644 --- a/cpp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql +++ b/cpp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture summary models. + * @name Capture summary models * @description Finds applicable summary models to be used by other queries. * @kind diagnostic * @id cpp/utils/modelgenerator/summary-models diff --git a/cpp/ql/src/utils/modelgenerator/internal/CaptureModels.qll b/cpp/ql/src/utils/modelgenerator/internal/CaptureModels.qll index ea6ab058134f..28892c5b8207 100644 --- a/cpp/ql/src/utils/modelgenerator/internal/CaptureModels.qll +++ b/cpp/ql/src/utils/modelgenerator/internal/CaptureModels.qll @@ -190,7 +190,7 @@ module ModelGeneratorCommonInput implements ModelGeneratorCommonInputSig; (const T &); ; Argument[*0]; ReturnValue; value; manual | +| 33 | Summary: ; ; false; pthread_create; ; ; Argument[@3]; Argument[2].Parameter[@0]; value; manual | +| 34 | Summary: ; ; false; ymlStepGenerated; ; ; Argument[0]; ReturnValue; taint; df-generated | +| 35 | Summary: ; ; false; ymlStepManual; ; ; Argument[0]; ReturnValue; taint; manual | +| 36 | Summary: ; ; false; ymlStepManual_with_body; ; ; Argument[0]; ReturnValue; taint; manual | +| 37 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual | edges -| asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | asio_streams.cpp:56:18:56:23 | [summary] to write: ReturnValue in buffer | provenance | MaD:36 | +| asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | asio_streams.cpp:56:18:56:23 | [summary] to write: ReturnValue in buffer | provenance | MaD:37 | | asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:91:7:91:17 | recv_buffer | provenance | Src:MaD:17 | | asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:93:29:93:39 | *recv_buffer | provenance | Src:MaD:17 Sink:MaD:2 | | asio_streams.cpp:97:37:97:44 | call to source | asio_streams.cpp:98:7:98:14 | send_str | provenance | TaintFunction | @@ -45,10 +46,10 @@ edges | asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:101:7:101:17 | send_buffer | provenance | | | asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:103:29:103:39 | *send_buffer | provenance | Sink:MaD:2 | | asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | provenance | | -| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:36 | -| test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | test.cpp:4:5:4:17 | [summary] to write: ReturnValue in ymlStepManual | provenance | MaD:34 | -| test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | provenance | MaD:33 | -| test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | provenance | MaD:35 | +| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:37 | +| test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | test.cpp:4:5:4:17 | [summary] to write: ReturnValue in ymlStepManual | provenance | MaD:35 | +| test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | provenance | MaD:34 | +| test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | provenance | MaD:36 | | test.cpp:7:47:7:52 | value2 | test.cpp:7:64:7:69 | value2 | provenance | | | test.cpp:7:64:7:69 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | provenance | | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:10:10:10:18 | call to ymlSource | provenance | Src:MaD:16 | @@ -60,15 +61,15 @@ edges | test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | | | test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:18:10:18:10 | y | provenance | Sink:MaD:1 | | test.cpp:17:24:17:24 | x | test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | provenance | | -| test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | MaD:34 | +| test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | MaD:35 | | test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | | | test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:22:10:22:10 | z | provenance | Sink:MaD:1 | | test.cpp:21:27:21:27 | x | test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | provenance | | -| test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | MaD:33 | +| test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | MaD:34 | | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | | | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:26:10:26:11 | y2 | provenance | Sink:MaD:1 | | test.cpp:25:35:25:35 | x | test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | provenance | | -| test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | MaD:35 | +| test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | MaD:36 | | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | provenance | | | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:33:10:33:11 | z2 | provenance | Sink:MaD:1 | | test.cpp:32:41:32:41 | x | test.cpp:7:47:7:52 | value2 | provenance | | @@ -76,7 +77,7 @@ edges | test.cpp:46:30:46:32 | *arg [x] | test.cpp:47:12:47:19 | *arg [x] | provenance | | | test.cpp:47:12:47:19 | *arg [x] | test.cpp:48:13:48:13 | *s [x] | provenance | | | test.cpp:48:13:48:13 | *s [x] | test.cpp:48:16:48:16 | x | provenance | Sink:MaD:1 | -| test.cpp:52:5:52:18 | [summary param] *3 in pthread_create [x] | test.cpp:52:5:52:18 | [summary] to write: Argument[2].Parameter[*0] in pthread_create [x] | provenance | MaD:32 | +| test.cpp:52:5:52:18 | [summary param] *3 in pthread_create [x] | test.cpp:52:5:52:18 | [summary] to write: Argument[2].Parameter[*0] in pthread_create [x] | provenance | MaD:33 | | test.cpp:52:5:52:18 | [summary] to write: Argument[2].Parameter[*0] in pthread_create [x] | test.cpp:46:30:46:32 | *arg [x] | provenance | | | test.cpp:56:2:56:2 | *s [post update] [x] | test.cpp:59:55:59:64 | *& ... [x] | provenance | | | test.cpp:56:2:56:18 | ... = ... | test.cpp:56:2:56:2 | *s [post update] [x] | provenance | | @@ -103,6 +104,13 @@ edges | test.cpp:101:26:101:26 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | | test.cpp:103:63:103:63 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | | test.cpp:104:62:104:62 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | +| test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:111:3:111:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | provenance | MaD:32 | +| test.cpp:114:10:114:18 | call to ymlSource | test.cpp:114:10:114:18 | call to ymlSource | provenance | Src:MaD:16 | +| test.cpp:114:10:114:18 | call to ymlSource | test.cpp:118:44:118:44 | *x | provenance | | +| test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | provenance | | +| test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | test.cpp:119:10:119:11 | y2 | provenance | Sink:MaD:1 | +| test.cpp:118:44:118:44 | *x | test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | provenance | | +| test.cpp:118:44:118:44 | *x | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | provenance | MaD:32 | | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | provenance | MaD:18 | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:22:15:22:29 | *call to GetCommandLineA | provenance | Src:MaD:3 | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:24:8:24:11 | * ... | provenance | | @@ -314,6 +322,14 @@ nodes | test.cpp:101:26:101:26 | x | semmle.label | x | | test.cpp:103:63:103:63 | x | semmle.label | x | | test.cpp:104:62:104:62 | x | semmle.label | x | +| test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | semmle.label | [summary param] *0 in callWithNonTypeTemplate | +| test.cpp:111:3:111:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | semmle.label | [summary] to write: ReturnValue in callWithNonTypeTemplate | +| test.cpp:114:10:114:18 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:114:10:114:18 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | +| test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | +| test.cpp:118:44:118:44 | *x | semmle.label | *x | +| test.cpp:119:10:119:11 | y2 | semmle.label | y2 | | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | semmle.label | [summary param] *0 in CommandLineToArgvA | | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | semmle.label | [summary] to write: ReturnValue[**] in CommandLineToArgvA | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | semmle.label | *call to GetCommandLineA | @@ -472,6 +488,7 @@ subpaths | test.cpp:21:27:21:27 | x | test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | test.cpp:21:10:21:25 | call to ymlStepGenerated | | test.cpp:25:35:25:35 | x | test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | | test.cpp:32:41:32:41 | x | test.cpp:7:47:7:52 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | +| test.cpp:118:44:118:44 | *x | test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:111:3:111:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | | windows.cpp:27:36:27:38 | *cmd | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | | windows.cpp:537:40:537:41 | *& ... | windows.cpp:473:17:473:37 | [summary param] *1 in RtlCopyVolatileMemory | windows.cpp:473:17:473:37 | [summary param] *0 in RtlCopyVolatileMemory [Return] | windows.cpp:537:27:537:37 | RtlCopyVolatileMemory output argument | | windows.cpp:542:38:542:39 | *& ... | windows.cpp:479:17:479:35 | [summary param] *1 in RtlCopyDeviceMemory | windows.cpp:479:17:479:35 | [summary param] *0 in RtlCopyDeviceMemory [Return] | windows.cpp:542:25:542:35 | RtlCopyDeviceMemory output argument | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml b/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml index f0df3e749e69..8e200aabfbd6 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml @@ -17,4 +17,5 @@ extensions: - ["", "", False, "ymlStepGenerated", "", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["", "", False, "ymlStepManual_with_body", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["", "", False, "ymlStepGenerated_with_body", "", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["", "", False, "callWithArgument", "", "", "Argument[1]", "Argument[0].Parameter[0]", "value", "manual"] \ No newline at end of file + - ["", "", False, "callWithArgument", "", "", "Argument[1]", "Argument[0].Parameter[0]", "value", "manual"] + - ["", "", False, "callWithNonTypeTemplate", "(const T &)", "", "Argument[*0]", "ReturnValue", "value", "manual"] \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected b/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected index 0cc01c8165e1..e28349b71590 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected @@ -13,3 +13,5 @@ | test.cpp:75:11:75:11 | y | test-sink | | test.cpp:83:11:83:11 | y | test-sink | | test.cpp:89:11:89:11 | y | test-sink | +| test.cpp:116:10:116:11 | y1 | test-sink | +| test.cpp:119:10:119:11 | y2 | test-sink | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/sources.expected b/cpp/ql/test/library-tests/dataflow/external-models/sources.expected index 401fffdbd594..cb7e06b801d0 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/sources.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/sources.expected @@ -2,6 +2,7 @@ | test.cpp:10:10:10:18 | call to ymlSource | local | | test.cpp:56:8:56:16 | call to ymlSource | local | | test.cpp:94:10:94:18 | call to ymlSource | local | +| test.cpp:114:10:114:18 | call to ymlSource | local | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | local | | windows.cpp:34:17:34:38 | *call to GetEnvironmentStringsA | local | | windows.cpp:39:36:39:38 | GetEnvironmentVariableA output argument | local | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/test.cpp b/cpp/ql/test/library-tests/dataflow/external-models/test.cpp index f357b934b2fb..af11ff958f59 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/test.cpp +++ b/cpp/ql/test/library-tests/dataflow/external-models/test.cpp @@ -102,4 +102,19 @@ void test_callWithArgument() { } callWithArgument(StructWithOperatorCall_has_constructor_2(), x); callWithArgument(StructWithOperatorCall_no_constructor_2(), x); -} \ No newline at end of file +} + +template +T callWithNonTypeTemplate(const T&); + +template +T callWithNonTypeTemplate(const T&); + +void test_callWithNonTypeTemplate() { + int x = ymlSource(); + int y1 = callWithNonTypeTemplate<10, int>(x); + ymlSink(y1); // $ MISSING: ir + + int y2 = callWithNonTypeTemplate(x); + ymlSink(y2); // $ ir +} diff --git a/cpp/ql/test/library-tests/dataflow/fields/dataflow-consistency.expected b/cpp/ql/test/library-tests/dataflow/fields/dataflow-consistency.expected index 4021dbc492a9..1b0b906af52a 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/dataflow-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/dataflow-consistency.expected @@ -142,6 +142,7 @@ postWithInFlow | simple.cpp:92:7:92:7 | i [post update] | PostUpdateNode should not be the target of local flow. | | simple.cpp:118:7:118:7 | i [post update] | PostUpdateNode should not be the target of local flow. | | simple.cpp:124:5:124:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. | +| simple.cpp:167:9:167:9 | x [post update] | PostUpdateNode should not be the target of local flow. | viableImplInCallContextTooLarge uniqueParameterNodeAtPosition uniqueParameterNodePosition diff --git a/cpp/ql/test/library-tests/dataflow/fields/partial-definition-diff.expected b/cpp/ql/test/library-tests/dataflow/fields/partial-definition-diff.expected index 8137e350d853..6cce6ac4f893 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/partial-definition-diff.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/partial-definition-diff.expected @@ -308,3 +308,5 @@ WARNING: module 'DataFlow' has been deprecated and may be removed in future (par | simple.cpp:124:5:124:6 | * ... | AST only | | simple.cpp:131:14:131:14 | a | IR only | | simple.cpp:136:10:136:10 | a | IR only | +| simple.cpp:167:9:167:9 | x | AST only | +| simple.cpp:168:8:168:12 | u_int | IR only | diff --git a/cpp/ql/test/library-tests/dataflow/fields/partial-definition-ir.expected b/cpp/ql/test/library-tests/dataflow/fields/partial-definition-ir.expected index 8df575d8e167..b09f949271db 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/partial-definition-ir.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/partial-definition-ir.expected @@ -670,6 +670,8 @@ | simple.cpp:131:14:131:14 | a | | simple.cpp:135:20:135:20 | q | | simple.cpp:136:10:136:10 | a | +| simple.cpp:167:3:167:7 | u_int | +| simple.cpp:168:8:168:12 | u_int | | struct_init.c:15:8:15:9 | ab | | struct_init.c:15:12:15:12 | a | | struct_init.c:16:8:16:9 | ab | diff --git a/cpp/ql/test/library-tests/dataflow/fields/partial-definition.expected b/cpp/ql/test/library-tests/dataflow/fields/partial-definition.expected index 397e069c1669..127cbadd9719 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/partial-definition.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/partial-definition.expected @@ -597,6 +597,8 @@ WARNING: module 'DataFlow' has been deprecated and may be removed in future (par | simple.cpp:118:7:118:7 | i | | simple.cpp:124:5:124:6 | * ... | | simple.cpp:135:20:135:20 | q | +| simple.cpp:167:3:167:7 | u_int | +| simple.cpp:167:9:167:9 | x | | struct_init.c:15:8:15:9 | ab | | struct_init.c:15:12:15:12 | a | | struct_init.c:16:8:16:9 | ab | diff --git a/cpp/ql/test/library-tests/dataflow/fields/simple.cpp b/cpp/ql/test/library-tests/dataflow/fields/simple.cpp index 3b8d882bc2be..d220b416e1a9 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/simple.cpp +++ b/cpp/ql/test/library-tests/dataflow/fields/simple.cpp @@ -136,4 +136,36 @@ void alias_with_fields(bool b) { sink(a.i); // $ MISSING: ast,ir } +template +union U_with_two_instantiations_of_different_size { + int x; + T y; +}; + +struct LargeStruct { + int data[64]; +}; + +void test_union_with_two_instantiations_of_different_sizes() { + // A union's fields is partitioned into "chunks" for field-flow in order to + // improve performance (so that a write to a field of a union does not flow + // to too many reads that don't happen at runtime). The partitioning is based + // the size of the types in the union. So a write to a field of size k only + // flows to a read of size k. + // Since field-flow is based on uninstantiated types a field can have + // multiple sizes if the union is instantiated with types of + // different sizes. So to compute the partition we pick the maximum size. + // Because of this there are `Content`s corresponding to the union + // `U_with_two_instantiations_of_different_size`: The one for size + // `sizeof(int)`, and the one for size `sizeof(LargeStruct)` (because + // `LargeStruct` is larger than `int`). So the write to `x` writes to the + // `Content` for size `sizeof(int)`, and the read of `y` reads from the + // `Content` for size `sizeof(LargeStruct)`. + U_with_two_instantiations_of_different_size u_int; + U_with_two_instantiations_of_different_size u_very_large; + + u_int.x = user_input(); + sink(u_int.y); // $ MISSING: ir +} + } // namespace Simple \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected index e8f0a8e34b25..0f4d67f2695f 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected @@ -7988,6 +7988,26 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | taint.cpp:841:21:841:35 | call to indirect_source | taint.cpp:843:16:843:17 | fp | | | taint.cpp:842:11:842:12 | ref arg fp | taint.cpp:843:16:843:17 | fp | | | taint.cpp:842:15:842:16 | | taint.cpp:842:11:842:12 | ref arg fp | TAINT | +| taint.cpp:851:10:851:15 | call to source | taint.cpp:852:18:852:18 | s | | +| taint.cpp:851:10:851:15 | call to source | taint.cpp:854:18:854:18 | s | | +| taint.cpp:852:10:852:16 | call to toupper | taint.cpp:853:7:853:7 | u | | +| taint.cpp:854:10:854:16 | call to tolower | taint.cpp:855:7:855:7 | l | | +| taint.cpp:861:24:861:27 | size | taint.cpp:866:16:866:19 | size | | +| taint.cpp:862:12:862:26 | call to indirect_source | taint.cpp:866:12:866:12 | s | | +| taint.cpp:863:7:863:9 | out | taint.cpp:864:12:864:14 | out | | +| taint.cpp:864:12:864:14 | out | taint.cpp:866:23:866:23 | p | | +| taint.cpp:864:12:864:14 | out | taint.cpp:867:8:867:8 | p | | +| taint.cpp:865:9:865:16 | size_out | taint.cpp:866:27:866:34 | size_out | | +| taint.cpp:866:11:866:12 | ref arg & ... | taint.cpp:866:12:866:12 | s [inner post update] | | +| taint.cpp:866:12:866:12 | s | taint.cpp:866:11:866:12 | & ... | | +| taint.cpp:866:15:866:19 | ref arg & ... | taint.cpp:866:16:866:19 | size [inner post update] | | +| taint.cpp:866:16:866:19 | size | taint.cpp:866:15:866:19 | & ... | | +| taint.cpp:866:22:866:23 | ref arg & ... | taint.cpp:866:23:866:23 | p [inner post update] | | +| taint.cpp:866:22:866:23 | ref arg & ... | taint.cpp:867:8:867:8 | p | | +| taint.cpp:866:23:866:23 | p | taint.cpp:866:22:866:23 | & ... | | +| taint.cpp:866:26:866:34 | ref arg & ... | taint.cpp:866:27:866:34 | size_out [inner post update] | | +| taint.cpp:866:27:866:34 | size_out | taint.cpp:866:26:866:34 | & ... | | +| taint.cpp:867:8:867:8 | p | taint.cpp:867:7:867:8 | * ... | TAINT | | thread.cpp:10:27:10:27 | s | thread.cpp:10:27:10:27 | s | | | thread.cpp:10:27:10:27 | s | thread.cpp:11:8:11:8 | s | | | thread.cpp:14:26:14:26 | s | thread.cpp:15:8:15:8 | s | | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp index 0c09665de1cd..70d5b8c7b001 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp @@ -842,4 +842,27 @@ int f7(void) fprintf(fp, ""); indirect_sink(fp); // $ ir MISSING: ast return 0; +} + +int toupper(int); +int tolower(int); + +void test_toupper_and_tolower() { + int s = source(); + int u = toupper(s); + sink(u); // $ ir MISSING: ast + int l = tolower(s); + sink(l); // $ ir MISSING: ast +} + +typedef int iconv_t; +size_t iconv(iconv_t cd, char **, size_t *, char **, size_t *); + +void test_iconv(size_t size) { + char* s = indirect_source(); + char out[10]; + char* p = out; + size_t size_out; + iconv(0, &s, &size, &p, &size_out); + sink(*p); // $ ast,ir } \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected index 846359fd6b23..e0002aa9c03f 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected @@ -1,19448 +1,142 @@ signatureMatches -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ASN1_STRING_type_new | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ASN1_tag2bit | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ASN1_tag2str | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | EVP_PKEY_asn1_get0 | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | Jim_ReturnCode | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | Jim_SignalId | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | OBJ_nid2ln | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | OBJ_nid2obj | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | OBJ_nid2sn | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | OSSL_STORE_INFO_type_string | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | OSSL_trace_get_category_name | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | PKCS12_init | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | Symbol_Nth | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_PURPOSE_get0 | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_PURPOSE_get_by_id | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_TRUST_get0 | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __btowc | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __current_locale_name | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __fdopendir | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __get_errlist | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __get_errname | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __math_invalid_i | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __math_invalidf_i | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __p_class | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __p_rcode | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __p_type | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __pkey_get | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __sigdescr_np | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __strerrordesc_np | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | _tolower | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | _toupper | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | btowc | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | c_tolower | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | c_toupper | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | curlx_sitouz | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | evp_pkey_type2name | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | inet6_option_space | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isalnum | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isalpha | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isblank | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | iscntrl | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isdigit | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isgraph | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | islower | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isprint | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ispunct | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isspace | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isupper | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isxdigit | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ossl_tolower | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ossl_toupper | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | sigabbrev_np | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | sqlite3_compileoption_get | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | sqlite3_errstr | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | strerrorname_np | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | support_report_failure | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | svcudp_create | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | tls13_alert_code | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | toascii | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | tolower | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | toupper | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uabs | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv__accept | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_err_name | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_get_osfhandle | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_strerror | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_translate_sys_error | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | zError | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | __pthread_cleanup_class | __setdoit | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | ASN1_STRING_type_new | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | ASN1_tag2bit | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | ASN1_tag2str | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | EVP_PKEY_asn1_get0 | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | Jim_ReturnCode | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | Jim_SignalId | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | OBJ_nid2ln | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | OBJ_nid2obj | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | OBJ_nid2sn | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | OSSL_STORE_INFO_type_string | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | OSSL_trace_get_category_name | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | PKCS12_init | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | Symbol_Nth | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_PURPOSE_get0 | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_PURPOSE_get_by_id | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_TRUST_get0 | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_TRUST_get_by_id | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __btowc | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __current_locale_name | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __fdopendir | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __get_errlist | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __get_errname | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __math_invalid_i | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __math_invalidf_i | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __p_class | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __p_rcode | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __p_type | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __pkey_get | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __sigdescr_np | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __strerrordesc_np | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | _tolower | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | _toupper | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | btowc | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | c_tolower | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | c_toupper | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | curlx_sitouz | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | evp_pkey_type2name | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | inet6_option_space | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isalnum | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isalpha | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isblank | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | iscntrl | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isdigit | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isgraph | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | islower | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isprint | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | ispunct | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isspace | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isupper | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isxdigit | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | ossl_cmp_bodytype_to_string | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | ossl_tolower | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | ossl_toupper | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | sigabbrev_np | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | sqlite3_compileoption_get | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | sqlite3_errstr | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | strerrorname_np | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | support_report_failure | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | svcudp_create | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | tls13_alert_code | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | toascii | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | tolower | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | toupper | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | uabs | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv__accept | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_err_name | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_get_osfhandle | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_strerror | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_translate_sys_error | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | zError | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | __pthread_cleanup_class | __setdoit | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ASN1_STRING_type_new | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ASN1_tag2bit | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ASN1_tag2str | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | EVP_PKEY_asn1_get0 | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | Jim_ReturnCode | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | Jim_SignalId | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | OBJ_nid2ln | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | OBJ_nid2obj | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | OBJ_nid2sn | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | OSSL_STORE_INFO_type_string | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | OSSL_trace_get_category_name | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | PKCS12_init | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | Symbol_Nth | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_PURPOSE_get0 | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_PURPOSE_get_by_id | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_TRUST_get0 | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __btowc | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __current_locale_name | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __fdopendir | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __get_errlist | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __get_errname | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __math_invalid_i | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __math_invalidf_i | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __p_class | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __p_rcode | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __p_type | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __pkey_get | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __sigdescr_np | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __strerrordesc_np | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | _tolower | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | _toupper | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | btowc | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | c_tolower | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | c_toupper | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | curlx_sitouz | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | evp_pkey_type2name | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | inet6_option_space | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isalnum | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isalpha | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isblank | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | iscntrl | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isdigit | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isgraph | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | islower | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isprint | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ispunct | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isspace | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isupper | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isxdigit | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ossl_tolower | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ossl_toupper | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | sigabbrev_np | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | sqlite3_compileoption_get | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | sqlite3_errstr | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | strerrorname_np | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | support_report_failure | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | svcudp_create | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | tls13_alert_code | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | toascii | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | tolower | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | toupper | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uabs | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv__accept | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_err_name | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_get_osfhandle | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_strerror | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_translate_sys_error | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | zError | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | __pthread_cleanup_class | __setdoit | 0 | -| arrayassignment.cpp:124:6:124:9 | sink | (int *) | | rresvport | 0 | -| atl.cpp:71:5:71:17 | _U_STRINGorID | (UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:71:5:71:17 | _U_STRINGorID | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | Jim_IntHashFunction | 0 | -| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | __sleep | 0 | -| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | curlx_uitous | 0 | -| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | la_version | 0 | -| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | ssl3_get_cipher | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Strsafe | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Symbol_new | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | UI_create_method | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __basename | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __gettext | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __hash_string | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __strdup | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __textdomain | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __tzstring | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | a64l | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | charmap_opendir | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | ether_aton | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | getdate | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | inetstr2int | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | last_component | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | opt_path_end | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | opt_progname | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | repertoire_read | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | sgetsgent | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | sgetspent | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | strhash | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | uc_script_byname | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | uv__strdup | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | xstrdup | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | EVP_PKEY_meth_get0 | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | __libc_malloc | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | __libc_valloc | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | _dl_early_allocate | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztosi | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztosz | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztoui | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztoul | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | malloc | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | ossl_get_extension_type | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | ossl_param_bytes_to_blocks | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | ossl_quic_sstream_new | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | ssl_cert_new | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | support_next_to_fault_allocate | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | support_next_to_fault_allocate_before | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | support_stack_alloc | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | xalloc_sigstack | 0 | -| atl.cpp:206:10:206:17 | InsertAt | (BLAKE2B_CTX *,const void *,size_t) | | ossl_blake2b_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_personal | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_salt | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (BLAKE2S_CTX *,const void *,size_t) | | ossl_blake2s_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_personal | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_salt | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (CCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ccm128_aad | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (CCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ccm128_tag | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FFC_PARAMS *,const unsigned char *,size_t) | | ossl_ffc_params_set_seed | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,const char *,size_t) | | _IO_new_do_write | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,const void *,size_t) | | _IO_default_xsputn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,const void *,size_t) | | _IO_new_file_xsputn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,const void *,size_t) | | _IO_wdefault_xsputn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,const void *,size_t) | | _IO_wfile_xsputn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,const void *,size_t) | | __printf_buffer_as_file_xsputn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,const void *,size_t) | | __wprintf_buffer_as_file_xsputn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,void *,size_t) | | _IO_default_xsgetn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,void *,size_t) | | _IO_file_xsgetn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,void *,size_t) | | _IO_file_xsgetn_mmap | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,void *,size_t) | | _IO_wdefault_xsgetn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_aad | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_setiv | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (GCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_gcm128_tag | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (MD5_CTX *,const void *,size_t) | | MD5_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (MD5_SHA1_CTX *,const void *,size_t) | | ossl_md5_sha1_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_JSON_ENC *,const char *,size_t) | | ossl_json_str_len | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_JSON_ENC *,const void *,size_t) | | ossl_json_str_hex | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_entropy | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_user_entropy | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_ptr | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string_or_ptr | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_PARAM *,void *,size_t) | | ossl_param_set_secure_block | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_default | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_multiblock | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (POLY1305 *,const unsigned char *,size_t) | | Poly1305_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_generic_initiv | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_hw_tdes_ede3_initkey | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (PROV_GCM_CTX *,const unsigned char *,size_t) | | ossl_gcm_aad_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (QUIC_PN,unsigned char *,size_t) | | ossl_quic_wire_encode_pkt_hdr_pn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (QUIC_RXFC *,OSSL_STATM *,size_t) | | ossl_quic_rstream_new | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (QUIC_TLS *,const unsigned char *,size_t) | | ossl_quic_tls_set_transport_params | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (RAND_POOL *,const unsigned char *,size_t) | | ossl_rand_pool_adin_mix_in | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (RAND_POOL *,size_t,size_t) | | ossl_rand_pool_add_end | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (RIPEMD160_CTX *,const void *,size_t) | | RIPEMD160_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (RIPEMD160_CTX *,const void *,size_t) | | ripemd160_block_data_order | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT **,const unsigned char **,size_t) | | o2i_SCT | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT *,const unsigned char **,size_t) | | o2i_SCT_signature | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT *,const unsigned char *,size_t) | | SCT_set1_extensions | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT *,const unsigned char *,size_t) | | SCT_set1_log_id | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT *,const unsigned char *,size_t) | | SCT_set1_signature | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT *,unsigned char *,size_t) | | SCT_set0_extensions | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT *,unsigned char *,size_t) | | SCT_set0_log_id | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT *,unsigned char *,size_t) | | SCT_set0_signature | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SHA256_CTX *,const void *,size_t) | | SHA224_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SHA256_CTX *,const void *,size_t) | | SHA256_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SHA512_CTX *,const void *,size_t) | | SHA384_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SHA512_CTX *,const void *,size_t) | | SHA512_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SHA_CTX *,const void *,size_t) | | SHA1_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SIPHASH *,const unsigned char *,size_t) | | SipHash_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SIPHASH *,unsigned char *,size_t) | | SipHash_Final | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SIV128_CONTEXT *,const unsigned char *,size_t) | | ossl_siv128_set_tag | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SIV128_CONTEXT *,unsigned char *,size_t) | | ossl_siv128_get_tag | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_priv | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_pub | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SM3_CTX *,const void *,size_t) | | ossl_sm3_block_data_order | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SM3_CTX *,const void *,size_t) | | ossl_sm3_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL *,const unsigned char *,size_t) | | SSL_set1_client_cert_type | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL *,const unsigned char *,size_t) | | SSL_set1_server_cert_type | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL *,const unsigned char *,size_t) | | SSL_set_quic_tls_transport_params | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL *,size_t,size_t) | | SSL_set_block_padding_ex | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_CONNECTION *,TLS_RECORD *,size_t) | | ssl_release_record | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_CONNECTION *,const unsigned char *,size_t) | | lookup_sess_in_cache | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_client_cert_type | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_server_cert_type | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_CTX *,size_t,size_t) | | SSL_CTX_set_block_padding_ex | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_alpn_selected | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_master_key | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_SESSION *,const void *,size_t) | | SSL_SESSION_set1_ticket_appdata | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (Strtab *,const char *,size_t) | | strtabadd | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_BitUpdate | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WPACKET *,BUF_MEM *,size_t) | | WPACKET_init_len | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WPACKET *,const unsigned char *,size_t) | | ossl_quic_wire_encode_frame_new_token | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WPACKET *,const void *,size_t) | | WPACKET_memcpy | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WPACKET *,int,size_t) | | WPACKET_memset | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WPACKET *,uint64_t,size_t) | | WPACKET_put_bytes__ | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WPACKET *,unsigned char *,size_t) | | WPACKET_init_der | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WPACKET *,unsigned char *,size_t) | | dtls_raw_hello_verify_request | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_add1_host | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (__printf_buffer *,char,size_t) | | __printf_buffer_pad_1 | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (__printf_buffer *,const char *,size_t) | | __printf_buffer_write | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (__printf_buffer_snprintf *,char *,size_t) | | __printf_buffer_snprintf_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (__wprintf_buffer *,const wchar_t *,size_t) | | __wprintf_buffer_write | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (__wprintf_buffer *,wchar_t,size_t) | | __wprintf_buffer_pad_1 | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (alloc_buffer,const void *,size_t) | | __libc_alloc_buffer_copy_bytes | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (argp_fmtstream *,argp_fmtstream_t,size_t) | | __argp_fmtstream_ensure | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (argp_fmtstream_t,const char *,size_t) | | __argp_fmtstream_write | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char **,size_t *,size_t) | | Curl_str_number | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | Curl_strntolower | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | Curl_strntoupper | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | uv__strscpy | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *,size_t,size_t) | | __getcwd_chk | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *__restrict__,const char *__restrict__,size_t) | | __strlcat | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *__restrict__,const char *__restrict__,size_t) | | __strlcpy | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const EVP_MD *,const unsigned char *,size_t) | | OSSL_STORE_SEARCH_by_key_fingerprint | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const OSSL_CMP_CTX *,char *,size_t) | | OSSL_CMP_CTX_snprint_PKIStatus | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const OSSL_CMP_PKISI *,char *,size_t) | | OSSL_CMP_snprint_PKIStatusInfo | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const OSSL_NAMEMAP *,int,size_t) | | ossl_namemap_num2name | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const OSSL_PARAM *,char **,size_t) | | OSSL_PARAM_get_utf8_string | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const SSL *,unsigned char *,size_t) | | SSL_get_client_random | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const SSL *,unsigned char *,size_t) | | SSL_get_server_random | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | __libc_ns_makecanon | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | __realpath_chk | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | getpass_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | ns_makecanon | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,const char *,size_t) | | c_strncasecmp | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,void *,size_t) | | uv__random_readpath | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const charmap_t *,const char *,size_t) | | charmap_find_symbol | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const charmap_t *,const char *,size_t) | | charmap_find_value | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const repertoire_t *,const char *,size_t) | | repertoire_find_value | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const unsigned char *,char *,size_t) | | ___ns_name_ntop | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const void *,size_t,size_t) | | support_blob_repeat_allocate | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const void *,size_t,size_t) | | support_blob_repeat_allocate_shared | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const_nis_name,char *,size_t) | | nis_domain_of_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const_nis_name,char *,size_t) | | nis_leaf_of_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const_nis_name,char *,size_t) | | nis_name_of_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int *,int *,size_t) | | EVP_PBE_get | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | Curl_strerror | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | __strerror_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | __ttyname_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | uv_err_name_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | uv_strerror_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,const void *,size_t) | | _nl_intern_locale_data | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,const void *,size_t) | | writeall | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,void *,size_t) | | __readall | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (locale_file *,const uint32_t *,size_t) | | add_locale_uint32_array | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (ns_rr_cursor *,const unsigned char *,size_t) | | __ns_rr_cursor_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (pthread_attr_t *,void *,size_t) | | __pthread_attr_setstack | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (scratch_buffer *,size_t,size_t) | | __libc_scratch_buffer_set_array_size | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (unsigned int,char *,size_t) | | __initstate | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (void **,size_t,size_t) | | __posix_memalign | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (void *,size_t,size_t) | | Curl_hash_str | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (void *,size_t,size_t) | | __libc_reallocarray | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (wchar_t *,const wchar_t *,size_t) | | __wmemcpy | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (wchar_t *,const wchar_t *,size_t) | | __wmemmove | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcat | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcpy | 2 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | EVP_PKEY_meth_get0 | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | __libc_malloc | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | __libc_valloc | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | _dl_early_allocate | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztosi | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztosz | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztoui | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztoul | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | malloc | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | ossl_get_extension_type | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | ossl_param_bytes_to_blocks | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | ossl_quic_sstream_new | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | ssl_cert_new | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | support_next_to_fault_allocate | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | support_next_to_fault_allocate_before | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | support_stack_alloc | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | xalloc_sigstack | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | Jim_IntHashFunction | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | Jim_IntHashFunction | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | __sleep | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | __sleep | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | curlx_uitous | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | curlx_uitous | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | la_version | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | la_version | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | ssl3_get_cipher | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | ssl3_get_cipher | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | EVP_PKEY_meth_get0 | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | EVP_PKEY_meth_get0 | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | __libc_malloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | __libc_malloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | __libc_valloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | __libc_valloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | _dl_early_allocate | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | _dl_early_allocate | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosi | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosi | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosz | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosz | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoui | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoui | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoul | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoul | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | malloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | malloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_get_extension_type | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_get_extension_type | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_param_bytes_to_blocks | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_param_bytes_to_blocks | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_quic_sstream_new | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_quic_sstream_new | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ssl_cert_new | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ssl_cert_new | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | support_next_to_fault_allocate | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | support_next_to_fault_allocate | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | support_next_to_fault_allocate_before | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | support_next_to_fault_allocate_before | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | support_stack_alloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | support_stack_alloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | xalloc_sigstack | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | xalloc_sigstack | 0 | -| atl.cpp:409:10:409:10 | operator= | (const CComBSTR &) | CComBSTR | Append | 0 | -| atl.cpp:409:10:409:10 | operator= | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | -| atl.cpp:411:5:411:12 | CComBSTR | (const CComBSTR &) | CComBSTR | Append | 0 | -| atl.cpp:411:5:411:12 | CComBSTR | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ASN1_tag2str | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | Jim_SignalId | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | PKCS12_init | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | Symbol_Nth | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __btowc | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __current_locale_name | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __fdopendir | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __get_errlist | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __get_errname | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __math_invalid_i | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __math_invalidf_i | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __p_class | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __p_rcode | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __p_type | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __pkey_get | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __sigdescr_np | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __strerrordesc_np | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | _tolower | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | _toupper | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | btowc | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | c_tolower | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | c_toupper | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | curlx_sitouz | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | inet6_option_space | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isalnum | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isalpha | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isblank | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | iscntrl | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isdigit | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isgraph | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | islower | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isprint | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ispunct | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isspace | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isupper | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isxdigit | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ossl_tolower | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ossl_toupper | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | sigabbrev_np | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | sqlite3_errstr | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | strerrorname_np | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | support_report_failure | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | svcudp_create | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | tls13_alert_code | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | toascii | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | tolower | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | toupper | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uabs | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv__accept | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_err_name | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_strerror | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | zError | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:413:5:413:12 | CComBSTR | (__wprintf_buffer *,const wchar_t *) | | __wprintf_buffer_puts_1 | 1 | -| atl.cpp:413:5:413:12 | CComBSTR | (const wchar_t *,const wchar_t *) | | __wcscoll | 1 | -| atl.cpp:413:5:413:12 | CComBSTR | (const wchar_t *,const wchar_t *) | | wcspbrk | 1 | -| atl.cpp:413:5:413:12 | CComBSTR | (const wchar_t *,const wchar_t *) | | wcsstr | 1 | -| atl.cpp:413:5:413:12 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:413:5:413:12 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (CONF *,const char *) | | _CONF_new_section | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (DSO *,const char *) | | DSO_convert_filename | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (DSO *,const char *) | | DSO_set_filename | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (GlobalConfig *,const char *) | | setvariable | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL *,const char *) | | SSL_add1_host | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL *,const char *) | | SSL_set1_host | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (UI *,const char *) | | UI_add_error_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (UI *,const char *) | | UI_add_info_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (UI *,const char *) | | UI_dup_error_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (UI *,const char *) | | UI_dup_info_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (X509 *,const char *) | | x509_ctrl_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (char **,const char *) | | Curl_setstropt | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (char **,const char *) | | __strsep | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (char *,const char *) | | xstrdup | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | Configcmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | Curl_timestrcmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | DES_crypt | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __bindtextdomain | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __dgettext | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __gconv_compare_alias | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strcasestr | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strcspn_generic | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strcspn_sse42 | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strpbrk_generic | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strspn_generic | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strspn_sse42 | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strstr_generic | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strverscmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | advance | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | c_strcasecmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | charmap_aliases | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | charmap_open | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | chroot_canon | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | get_passwd | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | gzopen | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | gzopen64 | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | iconv_open | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | openssl_fopen | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | sqlite3_strglob | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | sqlite3_stricmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | step | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | tempnam | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | xfopen | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const mntent *,const char *) | | __hasmntopt | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const nis_error,const char *) | | nis_sperror | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (curl_off_t *,const char *) | | str2offset | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (curl_slist **,const char *) | | add2list | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (curl_slist *,const char *) | | curl_slist_append | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (gzFile,const char *) | | gzputs | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | BIO_meth_new | 0 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | BIO_meth_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | _IO_new_fdopen | 0 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | _IO_new_fdopen | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | gzdopen | 0 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | gzdopen | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | setlocale | 0 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | setlocale | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | xsetlocale | 0 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | xsetlocale | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (lemon *,const char *) | | file_makename | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (long *,const char *) | | secs2ms | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (long *,const char *) | | str2num | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (long *,const char *) | | str2unum | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (size_t *,const char *) | | next_protos_parse | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (slist_wc **,const char *) | | easysrc_add | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (slist_wc *,const char *) | | slist_wc_append | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (stringtable *,const char *) | | stringtable_add | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (unsigned long *,const char *) | | set_cert_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (unsigned long *,const char *) | | set_name_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| atl.cpp:415:5:415:12 | CComBSTR | (LPCOLESTR) | CComBSTR | Append | 0 | -| atl.cpp:415:5:415:12 | CComBSTR | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (LPCSTR) | CComBSTR | Append | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (LPCSTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Strsafe | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Symbol_new | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | UI_create_method | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __basename | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __gettext | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __hash_string | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __strdup | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __textdomain | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __tzstring | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | a64l | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | charmap_opendir | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | ether_aton | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | getdate | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | inetstr2int | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | last_component | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | opt_path_end | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | opt_progname | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | repertoire_read | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | sgetsgent | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | sgetspent | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | strhash | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | uc_script_byname | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | uv__strdup | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | xstrdup | 0 | -| atl.cpp:417:5:417:12 | CComBSTR | (CComBSTR &&) | CComBSTR | CComBSTR | 0 | -| atl.cpp:420:13:420:18 | Append | (const CComBSTR &) | CComBSTR | Append | 0 | -| atl.cpp:420:13:420:18 | Append | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | -| atl.cpp:421:13:421:18 | Append | (wchar_t) | | operator+= | 0 | -| atl.cpp:421:13:421:18 | Append | (wchar_t) | | wcwidth | 0 | -| atl.cpp:421:13:421:18 | Append | (wchar_t) | CComBSTR | Append | 0 | -| atl.cpp:421:13:421:18 | Append | (wchar_t) | CSimpleStringT | operator+= | 0 | -| atl.cpp:422:13:422:18 | Append | (char) | | Curl_raw_tolower | 0 | -| atl.cpp:422:13:422:18 | Append | (char) | | Curl_raw_toupper | 0 | -| atl.cpp:422:13:422:18 | Append | (char) | | findshortopt | 0 | -| atl.cpp:422:13:422:18 | Append | (char) | | operator+= | 0 | -| atl.cpp:422:13:422:18 | Append | (char) | CComBSTR | Append | 0 | -| atl.cpp:422:13:422:18 | Append | (char) | CSimpleStringT | operator+= | 0 | -| atl.cpp:423:13:423:18 | Append | (LPCOLESTR) | CComBSTR | Append | 0 | -| atl.cpp:423:13:423:18 | Append | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:424:13:424:18 | Append | (LPCSTR) | CComBSTR | Append | 0 | -| atl.cpp:424:13:424:18 | Append | (LPCSTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | Strsafe | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | Symbol_new | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | UI_create_method | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __basename | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __gettext | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __hash_string | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __strdup | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __textdomain | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __tzstring | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | a64l | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | charmap_opendir | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | ether_aton | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | getdate | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | inetstr2int | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | last_component | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | opt_path_end | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | opt_progname | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | repertoire_read | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | sgetsgent | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | sgetspent | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | strhash | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | uc_script_byname | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | uv__strdup | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | xstrdup | 0 | -| atl.cpp:425:13:425:18 | Append | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| atl.cpp:425:13:425:18 | Append | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | BN_clear_bit | 1 | -| atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | BN_mask_bits | 1 | -| atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | BN_set_bit | 1 | -| atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | BN_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | bn_expand2 | 1 | -| atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | bn_wexpand | 1 | -| atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| atl.cpp:425:13:425:18 | Append | (BIO *,int) | | BIO_clear_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (BIO *,int) | | BIO_find_type | 1 | -| atl.cpp:425:13:425:18 | Append | (BIO *,int) | | BIO_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (BIO *,int) | | BIO_set_init | 1 | -| atl.cpp:425:13:425:18 | Append | (BIO *,int) | | BIO_set_retry_reason | 1 | -| atl.cpp:425:13:425:18 | Append | (BIO *,int) | | BIO_set_shutdown | 1 | -| atl.cpp:425:13:425:18 | Append | (BIO *,int) | | TXT_DB_read | 1 | -| atl.cpp:425:13:425:18 | Append | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (CURL *,int) | | curl_easy_pause | 1 | -| atl.cpp:425:13:425:18 | Append | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| atl.cpp:425:13:425:18 | Append | (DH *,int) | | DH_clear_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (DH *,int) | | DH_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (DSA *,int) | | DSA_clear_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (DSA *,int) | | DSA_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| atl.cpp:425:13:425:18 | Append | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| atl.cpp:425:13:425:18 | Append | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| atl.cpp:425:13:425:18 | Append | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| atl.cpp:425:13:425:18 | Append | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| atl.cpp:425:13:425:18 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| atl.cpp:425:13:425:18 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| atl.cpp:425:13:425:18 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_default_pbackfail | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_fwide | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_init | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_init_internal | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_new_file_attach | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_new_file_overflow | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_old_init | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_sputbackc | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_str_overflow | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_str_pbackfail | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| atl.cpp:425:13:425:18 | Append | (FTS *,int) | | fts_children | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| atl.cpp:425:13:425:18 | Append | (LPCOLESTR,int) | CComBSTR | Append | 0 | -| atl.cpp:425:13:425:18 | Append | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| atl.cpp:425:13:425:18 | Append | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| atl.cpp:425:13:425:18 | Append | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| atl.cpp:425:13:425:18 | Append | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| atl.cpp:425:13:425:18 | Append | (RSA *,int) | | RSA_clear_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (RSA *,int) | | RSA_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| atl.cpp:425:13:425:18 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| atl.cpp:425:13:425:18 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| atl.cpp:425:13:425:18 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_key_update | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_purpose | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_read_ahead | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_security_level | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_shutdown | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_trust | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_verify_depth | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | ssl_md | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| atl.cpp:425:13:425:18 | Append | (X509 *,int) | | X509_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (X509 *,int) | | X509_self_signed | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| atl.cpp:425:13:425:18 | Append | (_Float128,int) | | __ldexpf128 | 1 | -| atl.cpp:425:13:425:18 | Append | (_Float128,int) | | __scalbnf128 | 1 | -| atl.cpp:425:13:425:18 | Append | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| atl.cpp:425:13:425:18 | Append | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| atl.cpp:425:13:425:18 | Append | (acttab *,int) | | acttab_insert | 1 | -| atl.cpp:425:13:425:18 | Append | (addrinfo *,int) | | support_format_addrinfo | 1 | -| atl.cpp:425:13:425:18 | Append | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| atl.cpp:425:13:425:18 | Append | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| atl.cpp:425:13:425:18 | Append | (char **,int) | | addrsort | 1 | -| atl.cpp:425:13:425:18 | Append | (char *,int) | | Curl_str2addr | 1 | -| atl.cpp:425:13:425:18 | Append | (char *,int) | | PEM_proc_type | 1 | -| atl.cpp:425:13:425:18 | Append | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:425:13:425:18 | Append | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| atl.cpp:425:13:425:18 | Append | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| atl.cpp:425:13:425:18 | Append | (const BIGNUM *,int) | | BN_get_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| atl.cpp:425:13:425:18 | Append | (const BIO *,int) | | BIO_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const BIO *,int) | | BIO_test_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const DH *,int) | | DH_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const DH *,int) | | DH_test_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (const DH *,int) | | ossl_dh_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const DSA *,int) | | DSA_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const DSA *,int) | | DSA_test_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (const DSA *,int) | | ossl_dsa_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| atl.cpp:425:13:425:18 | Append | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| atl.cpp:425:13:425:18 | Append | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| atl.cpp:425:13:425:18 | Append | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| atl.cpp:425:13:425:18 | Append | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| atl.cpp:425:13:425:18 | Append | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| atl.cpp:425:13:425:18 | Append | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| atl.cpp:425:13:425:18 | Append | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| atl.cpp:425:13:425:18 | Append | (const RSA *,int) | | RSA_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const RSA *,int) | | RSA_test_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (const RSA *,int) | | ossl_rsa_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const SSL *,int) | | SSL_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const UI *,int) | | UI_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509 *,int) | | X509_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509 *,int) | | X509_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:425:13:425:18 | Append | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | DH_meth_new | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | DSA_meth_new | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | Jim_StrDupLen | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | RSA_meth_new | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | ftok | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | gethostbyname2 | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | parse_yesno | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | res_gethostbyname2 | 1 | -| atl.cpp:425:13:425:18 | Append | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| atl.cpp:425:13:425:18 | Append | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| atl.cpp:425:13:425:18 | Append | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| atl.cpp:425:13:425:18 | Append | (const void *,int) | | inet6_rth_getaddr | 1 | -| atl.cpp:425:13:425:18 | Append | (double,int) | | __ldexp | 1 | -| atl.cpp:425:13:425:18 | Append | (double,int) | | __scalbn | 1 | -| atl.cpp:425:13:425:18 | Append | (double[],int) | | getloadavg | 1 | -| atl.cpp:425:13:425:18 | Append | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| atl.cpp:425:13:425:18 | Append | (fexcept_t *,int) | | fegetexceptflag | 1 | -| atl.cpp:425:13:425:18 | Append | (float,int) | | __ldexpf | 1 | -| atl.cpp:425:13:425:18 | Append | (float,int) | | __scalbnf | 1 | -| atl.cpp:425:13:425:18 | Append | (gzFile,int) | | gzflush | 1 | -| atl.cpp:425:13:425:18 | Append | (gzFile,int) | | gzputc | 1 | -| atl.cpp:425:13:425:18 | Append | (int *,int) | | X509_PURPOSE_set | 1 | -| atl.cpp:425:13:425:18 | Append | (int *,int) | | X509_TRUST_set | 1 | -| atl.cpp:425:13:425:18 | Append | (int *,int) | | __lll_unlock_elision | 1 | -| atl.cpp:425:13:425:18 | Append | (int,int) | | BN_security_bits | 1 | -| atl.cpp:425:13:425:18 | Append | (int,int) | | EVP_MD_meth_new | 1 | -| atl.cpp:425:13:425:18 | Append | (int,int) | | EVP_PKEY_meth_new | 1 | -| atl.cpp:425:13:425:18 | Append | (int,int) | | __isctype | 1 | -| atl.cpp:425:13:425:18 | Append | (int,int) | | acttab_alloc | 1 | -| atl.cpp:425:13:425:18 | Append | (int,int) | | div | 1 | -| atl.cpp:425:13:425:18 | Append | (int,int) | | inet6_rth_space | 1 | -| atl.cpp:425:13:425:18 | Append | (long double,int) | | __ldexpl | 1 | -| atl.cpp:425:13:425:18 | Append | (netlink_handle *,int) | | __netlink_request | 1 | -| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| atl.cpp:425:13:425:18 | Append | (ns_msg,int) | | ns_msg_getflag | 1 | -| atl.cpp:425:13:425:18 | Append | (obstack *,int) | | _obstack_newchunk | 1 | -| atl.cpp:425:13:425:18 | Append | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| atl.cpp:425:13:425:18 | Append | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| atl.cpp:425:13:425:18 | Append | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| atl.cpp:425:13:425:18 | Append | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| atl.cpp:425:13:425:18 | Append | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| atl.cpp:425:13:425:18 | Append | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| atl.cpp:425:13:425:18 | Append | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| atl.cpp:425:13:425:18 | Append | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| atl.cpp:425:13:425:18 | Append | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| atl.cpp:425:13:425:18 | Append | (rule *,int) | | Configlist_add | 1 | -| atl.cpp:425:13:425:18 | Append | (rule *,int) | | Configlist_addbasis | 1 | -| atl.cpp:425:13:425:18 | Append | (sigset_t *,int) | | sigaddset | 1 | -| atl.cpp:425:13:425:18 | Append | (sigset_t *,int) | | sigdelset | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| atl.cpp:425:13:425:18 | Append | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| atl.cpp:425:13:425:18 | Append | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| atl.cpp:425:13:425:18 | Append | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (timespec *,int) | | __timespec_get | 1 | -| atl.cpp:425:13:425:18 | Append | (timespec *,int) | | __timespec_getres | 1 | -| atl.cpp:425:13:425:18 | Append | (uint16_t,int) | | tls1_group_id2nid | 1 | -| atl.cpp:425:13:425:18 | Append | (unsigned char *,int) | | RAND_bytes | 1 | -| atl.cpp:425:13:425:18 | Append | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| atl.cpp:425:13:425:18 | Append | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| atl.cpp:425:13:425:18 | Append | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| atl.cpp:425:13:425:18 | Append | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| atl.cpp:425:13:425:18 | Append | (void *,int) | | DSO_dsobyaddr | 1 | -| atl.cpp:425:13:425:18 | Append | (void *,int) | | sqlite3_realloc | 1 | -| atl.cpp:425:13:425:18 | Append | (void *const *,int) | | __backtrace_symbols | 1 | -| atl.cpp:425:13:425:18 | Append | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:426:13:426:22 | AppendBSTR | (wchar_t *) | CStringT | CStringT | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIGNUM *,int) | | BN_clear_bit | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIGNUM *,int) | | BN_mask_bits | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIGNUM *,int) | | BN_set_bit | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIGNUM *,int) | | BN_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIGNUM *,int) | | bn_expand2 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIGNUM *,int) | | bn_wexpand | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | BIO_clear_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | BIO_find_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | BIO_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | BIO_set_init | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | BIO_set_retry_reason | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | BIO_set_shutdown | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | TXT_DB_read | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (CURL *,int) | | curl_easy_pause | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (DH *,int) | | DH_clear_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (DH *,int) | | DH_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (DSA *,int) | | DSA_clear_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (DSA *,int) | | DSA_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_default_pbackfail | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_fwide | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_init | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_init_internal | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_new_file_attach | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_new_file_overflow | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_old_init | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_sputbackc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_str_overflow | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_str_pbackfail | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FTS *,int) | | fts_children | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (RSA *,int) | | RSA_clear_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (RSA *,int) | | RSA_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_key_update | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_purpose | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_read_ahead | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_security_level | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_shutdown | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_trust | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_verify_depth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | ssl_md | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509 *,int) | | X509_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509 *,int) | | X509_self_signed | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (_Float128,int) | | __ldexpf128 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (_Float128,int) | | __scalbnf128 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (acttab *,int) | | acttab_insert | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (addrinfo *,int) | | support_format_addrinfo | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (char **,int) | | addrsort | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (char *,int) | | Curl_str2addr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (char *,int) | | PEM_proc_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const BIGNUM *,int) | | BN_get_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const BIO *,int) | | BIO_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const BIO *,int) | | BIO_test_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const DH *,int) | | DH_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const DH *,int) | | DH_test_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const DH *,int) | | ossl_dh_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const DSA *,int) | | DSA_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const DSA *,int) | | DSA_test_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const DSA *,int) | | ossl_dsa_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const RSA *,int) | | RSA_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const RSA *,int) | | RSA_test_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const RSA *,int) | | ossl_rsa_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const SSL *,int) | | SSL_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const UI *,int) | | UI_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509 *,int) | | X509_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509 *,int) | | X509_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | DH_meth_new | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | DH_meth_new | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | DSA_meth_new | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | DSA_meth_new | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | Jim_StrDupLen | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | Jim_StrDupLen | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | RSA_meth_new | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | RSA_meth_new | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | ftok | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | ftok | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | gethostbyname2 | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | gethostbyname2 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | parse_yesno | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | parse_yesno | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | res_gethostbyname2 | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | res_gethostbyname2 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const void *,int) | | inet6_rth_getaddr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (double,int) | | __ldexp | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (double,int) | | __scalbn | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (double[],int) | | getloadavg | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (fexcept_t *,int) | | fegetexceptflag | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (float,int) | | __ldexpf | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (float,int) | | __scalbnf | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (gzFile,int) | | gzflush | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (gzFile,int) | | gzputc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int *,int) | | X509_PURPOSE_set | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int *,int) | | X509_TRUST_set | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int *,int) | | __lll_unlock_elision | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | BN_security_bits | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | EVP_MD_meth_new | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | EVP_PKEY_meth_new | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | __isctype | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | acttab_alloc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | div | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | inet6_rth_space | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (long double,int) | | __ldexpl | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (netlink_handle *,int) | | __netlink_request | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (ns_msg,int) | | ns_msg_getflag | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (obstack *,int) | | _obstack_newchunk | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (rule *,int) | | Configlist_add | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (rule *,int) | | Configlist_addbasis | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sigset_t *,int) | | sigaddset | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sigset_t *,int) | | sigdelset | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (timespec *,int) | | __timespec_get | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (timespec *,int) | | __timespec_getres | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (uint16_t,int) | | tls1_group_id2nid | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (unsigned char *,int) | | RAND_bytes | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (void *,int) | | DSO_dsobyaddr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (void *,int) | | sqlite3_realloc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (void *const *,int) | | __backtrace_symbols | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:428:13:428:23 | ArrayToBSTR | (const SAFEARRAY *) | CComSafeArray | Add | 0 | -| atl.cpp:428:13:428:23 | ArrayToBSTR | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | -| atl.cpp:428:13:428:23 | ArrayToBSTR | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | -| atl.cpp:430:10:430:15 | Attach | (wchar_t *) | CStringT | CStringT | 0 | -| atl.cpp:440:10:440:19 | LoadString | (ASN1_STRING *,unsigned int) | | ossl_asn1_string_set_bits_left | 1 | -| atl.cpp:440:10:440:19 | LoadString | (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 | -| atl.cpp:440:10:440:19 | LoadString | (EC_KEY *,unsigned int) | | EC_KEY_set_enc_flags | 1 | -| atl.cpp:440:10:440:19 | LoadString | (EVP_ENCODE_CTX *,unsigned int) | | evp_encode_ctx_set_flags | 1 | -| atl.cpp:440:10:440:19 | LoadString | (FFC_PARAMS *,unsigned int) | | ossl_ffc_params_set_flags | 1 | -| atl.cpp:440:10:440:19 | LoadString | (HINSTANCE,UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:440:10:440:19 | LoadString | (HINSTANCE,UINT) | CComBSTR | LoadString | 1 | -| atl.cpp:440:10:440:19 | LoadString | (OSSL_PARAM *,unsigned int) | | OSSL_PARAM_set_uint | 1 | -| atl.cpp:440:10:440:19 | LoadString | (QUIC_DEMUX *,unsigned int) | | ossl_quic_demux_set_mtu | 1 | -| atl.cpp:440:10:440:19 | LoadString | (QUIC_OBJ *,unsigned int) | | ossl_quic_obj_set_blocking_mode | 1 | -| atl.cpp:440:10:440:19 | LoadString | (RAND_POOL *,unsigned int) | | ossl_rand_pool_bytes_needed | 1 | -| atl.cpp:440:10:440:19 | LoadString | (SSL *,unsigned int) | | SSL_set_hostflags | 1 | -| atl.cpp:440:10:440:19 | LoadString | (SSL_CONF_CTX *,unsigned int) | | SSL_CONF_CTX_clear_flags | 1 | -| atl.cpp:440:10:440:19 | LoadString | (SSL_CONF_CTX *,unsigned int) | | SSL_CONF_CTX_set_flags | 1 | -| atl.cpp:440:10:440:19 | LoadString | (TS_RESP_CTX *,unsigned int) | | TS_RESP_CTX_set_clock_precision_digits | 1 | -| atl.cpp:440:10:440:19 | LoadString | (WPACKET *,unsigned int) | | WPACKET_set_flags | 1 | -| atl.cpp:440:10:440:19 | LoadString | (X509_STORE_CTX *,unsigned int) | | X509_STORE_CTX_set_current_reasons | 1 | -| atl.cpp:440:10:440:19 | LoadString | (X509_VERIFY_PARAM *,unsigned int) | | X509_VERIFY_PARAM_set_hostflags | 1 | -| atl.cpp:440:10:440:19 | LoadString | (char *,unsigned int) | | __nis_default_access | 1 | -| atl.cpp:440:10:440:19 | LoadString | (char *,unsigned int) | | utf8_fromunicode | 1 | -| atl.cpp:440:10:440:19 | LoadString | (char *,unsigned int) | | uv_buf_init | 1 | -| atl.cpp:440:10:440:19 | LoadString | (const uv__io_t *,unsigned int) | | uv__io_active | 1 | -| atl.cpp:440:10:440:19 | LoadString | (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 | -| atl.cpp:440:10:440:19 | LoadString | (const_nis_name,unsigned int) | | __create_ib_request | 1 | -| atl.cpp:440:10:440:19 | LoadString | (grouping_iterator *,unsigned int) | | __grouping_iterator_init_none | 1 | -| atl.cpp:440:10:440:19 | LoadString | (gzFile,unsigned int) | | gzbuffer | 1 | -| atl.cpp:440:10:440:19 | LoadString | (res_state,unsigned int) | | __res_get_nsaddr | 1 | -| atl.cpp:440:10:440:19 | LoadString | (unsigned int,unsigned int) | | __gnu_dev_makedev | 1 | -| atl.cpp:440:10:440:19 | LoadString | (unsigned int,unsigned int) | | gnu_dev_makedev | 1 | -| atl.cpp:440:10:440:19 | LoadString | (z_streamp,unsigned int) | | inflate_fast | 1 | -| atl.cpp:441:10:441:19 | LoadString | (UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:441:10:441:19 | LoadString | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | Jim_IntHashFunction | 0 | -| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | __sleep | 0 | -| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | curlx_uitous | 0 | -| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | la_version | 0 | -| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | ssl3_get_cipher | 0 | -| atl.cpp:449:15:449:24 | operator+= | (const CComBSTR &) | CComBSTR | Append | 0 | -| atl.cpp:449:15:449:24 | operator+= | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | -| atl.cpp:450:15:450:24 | operator+= | (LPCOLESTR) | CComBSTR | Append | 0 | -| atl.cpp:450:15:450:24 | operator+= | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:540:5:540:17 | CComSafeArray | (const SAFEARRAY *) | CComSafeArray | Add | 0 | -| atl.cpp:540:5:540:17 | CComSafeArray | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | -| atl.cpp:540:5:540:17 | CComSafeArray | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | -| atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | Add | 0 | -| atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | -| atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | -| atl.cpp:546:13:546:15 | Add | (Curl_easy *,bool) | | Curl_creader_set_rewind | 1 | -| atl.cpp:546:13:546:15 | Add | (Curl_easy *,bool) | | Curl_set_in_callback | 1 | -| atl.cpp:546:13:546:15 | Add | (const T &,BOOL) | CComSafeArray | Add | 0 | -| atl.cpp:546:13:546:15 | Add | (const T &,BOOL) | CComSafeArray | Add | 1 | -| atl.cpp:546:13:546:15 | Add | (curl_socket_t[2],bool) | | Curl_eventfd | 1 | -| atl.cpp:546:13:546:15 | Add | (support_fuse *,bool) | | support_fuse_filter_forget | 1 | -| atl.cpp:546:13:546:15 | Add | (void *,bool) | | _dl_allocate_tls_init | 1 | -| atl.cpp:546:13:546:15 | Add | (void *,bool) | | _dl_deallocate_tls | 1 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | __fdelt_chk | 0 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | __math_invalid_li | 0 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | __math_invalidf_li | 0 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | curlx_sltosi | 0 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | curlx_sltoui | 0 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | curlx_sltous | 0 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | l64a | 0 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | ulabs | 0 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,CURLcode,bool) | | Curl_http_done | 2 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 2 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 2 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 2 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 2 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,curltime *,bool) | | Curl_timeleft | 2 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 2 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 2 | -| atl.cpp:565:13:565:17 | SetAt | (GlobalConfig *,timeval *,bool) | | progress_meter | 2 | -| atl.cpp:565:13:565:17 | SetAt | (link_map *,Dl_serinfo *,bool) | | _dl_rtld_di_serinfo | 2 | -| atl.cpp:565:13:565:17 | SetAt | (link_map *,link_map_public *,bool) | | _dl_close_worker | 2 | -| atl.cpp:565:13:565:17 | SetAt | (size_t,char *[],bool) | | add_locales_to_archive | 2 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | __fdelt_chk | 0 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | __math_invalid_li | 0 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | __math_invalidf_li | 0 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | curlx_sltosi | 0 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | curlx_sltoui | 0 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | curlx_sltous | 0 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | l64a | 0 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | ulabs | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | ASN1_tag2str | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | Jim_SignalId | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | PKCS12_init | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | Symbol_Nth | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __btowc | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __current_locale_name | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __fdopendir | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __get_errlist | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __get_errname | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __math_invalid_i | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __math_invalidf_i | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __p_class | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __p_rcode | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __p_type | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __pkey_get | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __sigdescr_np | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __strerrordesc_np | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | _tolower | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | _toupper | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | btowc | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | c_tolower | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | c_toupper | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | curlx_sitouz | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | inet6_option_space | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isalnum | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isalpha | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isblank | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | iscntrl | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isdigit | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isgraph | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | islower | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isprint | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | ispunct | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isspace | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isupper | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isxdigit | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | ossl_tolower | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | ossl_toupper | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | sigabbrev_np | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | sqlite3_errstr | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | strerrorname_np | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | support_report_failure | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | svcudp_create | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | tls13_alert_code | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | toascii | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | tolower | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | toupper | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | uabs | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | uv__accept | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_err_name | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_strerror | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | zError | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | | operator+= | 0 | -| atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:617:10:617:21 | AddExtension | (PCXSTR) | | operator+= | 0 | -| atl.cpp:617:10:617:21 | AddExtension | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:617:10:617:21 | AddExtension | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:618:10:618:15 | Append | (PCXSTR) | | operator+= | 0 | -| atl.cpp:618:10:618:15 | Append | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:618:10:618:15 | Append | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:621:10:621:16 | Combine | (PCXSTR,PCXSTR) | CStringT | Replace | 0 | -| atl.cpp:621:10:621:16 | Combine | (PCXSTR,PCXSTR) | CStringT | Replace | 1 | -| atl.cpp:621:10:621:16 | Combine | (const CStringT &,PCXSTR) | | operator+ | 1 | -| atl.cpp:621:10:621:16 | Combine | (int,PCXSTR) | CStringT | Insert | 1 | -| atl.cpp:622:24:622:35 | CommonPrefix | (PCXSTR) | | operator+= | 0 | -| atl.cpp:622:24:622:35 | CommonPrefix | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:622:24:622:35 | CommonPrefix | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:659:25:659:34 | operator+= | (PCXSTR) | | operator+= | 0 | -| atl.cpp:659:25:659:34 | operator+= | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:659:25:659:34 | operator+= | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | ASN1_tag2str | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | Jim_SignalId | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | PKCS12_init | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | Symbol_Nth | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __btowc | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __current_locale_name | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __fdopendir | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __get_errlist | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __get_errname | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __math_invalid_i | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __math_invalidf_i | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __p_class | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __p_rcode | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __p_type | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __pkey_get | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __sigdescr_np | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __strerrordesc_np | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | _tolower | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | _toupper | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | btowc | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | c_tolower | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | c_toupper | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | curlx_sitouz | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | inet6_option_space | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isalnum | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isalpha | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isblank | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | iscntrl | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isdigit | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isgraph | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | islower | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isprint | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | ispunct | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isspace | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isupper | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isxdigit | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | ossl_tolower | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | ossl_toupper | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | sigabbrev_np | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | sqlite3_errstr | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | strerrorname_np | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | support_report_failure | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | svcudp_create | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | tls13_alert_code | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | toascii | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | tolower | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | toupper | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | uabs | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | uv__accept | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_err_name | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_strerror | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | zError | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:765:10:765:12 | Add | (const deque &,const Allocator &) | deque | deque | 1 | -| atl.cpp:765:10:765:12 | Add | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| atl.cpp:765:10:765:12 | Add | (const list &,const Allocator &) | list | list | 1 | -| atl.cpp:765:10:765:12 | Add | (const vector &,const Allocator &) | vector | vector | 1 | -| atl.cpp:765:10:765:12 | Add | (deque &&,const Allocator &) | deque | deque | 1 | -| atl.cpp:765:10:765:12 | Add | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| atl.cpp:765:10:765:12 | Add | (list &&,const Allocator &) | list | list | 1 | -| atl.cpp:765:10:765:12 | Add | (vector &&,const Allocator &) | vector | vector | 1 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ASN1_tag2str | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | Jim_SignalId | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | PKCS12_init | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | Symbol_Nth | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __btowc | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __current_locale_name | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __fdopendir | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __get_errlist | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __get_errname | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __math_invalid_i | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __math_invalidf_i | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __p_class | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __p_rcode | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __p_type | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __pkey_get | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __sigdescr_np | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __strerrordesc_np | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | _tolower | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | _toupper | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | btowc | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | c_tolower | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | c_toupper | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | curlx_sitouz | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | inet6_option_space | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isalnum | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isalpha | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isblank | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | iscntrl | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isdigit | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isgraph | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | islower | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isprint | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ispunct | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isspace | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isupper | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isxdigit | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ossl_tolower | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ossl_toupper | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | sigabbrev_np | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | sqlite3_errstr | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | strerrorname_np | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | support_report_failure | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | svcudp_create | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | tls13_alert_code | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | toascii | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | tolower | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | toupper | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uabs | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv__accept | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_err_name | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_strerror | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | zError | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:776:10:776:14 | SetAt | (const deque &,const Allocator &) | deque | deque | 1 | -| atl.cpp:776:10:776:14 | SetAt | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| atl.cpp:776:10:776:14 | SetAt | (const list &,const Allocator &) | list | list | 1 | -| atl.cpp:776:10:776:14 | SetAt | (const vector &,const Allocator &) | vector | vector | 1 | -| atl.cpp:776:10:776:14 | SetAt | (deque &&,const Allocator &) | deque | deque | 1 | -| atl.cpp:776:10:776:14 | SetAt | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| atl.cpp:776:10:776:14 | SetAt | (list &&,const Allocator &) | list | list | 1 | -| atl.cpp:776:10:776:14 | SetAt | (vector &&,const Allocator &) | vector | vector | 1 | -| atl.cpp:777:10:777:19 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | deque | deque | 2 | -| atl.cpp:777:10:777:19 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | forward_list | forward_list | 2 | -| atl.cpp:777:10:777:19 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | list | list | 2 | -| atl.cpp:777:10:777:19 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | deque | deque | 1 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | deque | deque | 2 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | forward_list | forward_list | 1 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | forward_list | forward_list | 2 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | list | list | 1 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | list | list | 2 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | vector | vector | 1 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | vector | vector | 2 | -| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | BN_num_bits_word | 0 | -| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | BUF_MEM_new_ex | 0 | -| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | curlx_ultouc | 0 | -| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | curlx_ultous | 0 | -| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | next_prime | 0 | -| atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (hash_table *,unsigned long) | | init_hash | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (u_long,unsigned long) | | __p_option | 1 | -| atl.cpp:825:17:825:25 | CreateUrl | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | -| atl.cpp:825:17:825:25 | CreateUrl | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | -| atl.cpp:825:17:825:25 | CreateUrl | (BIO *,X509 *,unsigned long) | | ossl_x509_print_ex_brief | 2 | -| atl.cpp:825:17:825:25 | CreateUrl | (BIO *,X509_CRL *,unsigned long) | | X509_CRL_print_ex | 2 | -| atl.cpp:825:17:825:25 | CreateUrl | (BIO *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex | 2 | -| atl.cpp:825:17:825:25 | CreateUrl | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | -| atl.cpp:825:17:825:25 | CreateUrl | (const char *,const char *,unsigned long) | | __ngettext | 2 | -| atl.cpp:825:17:825:25 | CreateUrl | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Strsafe | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Symbol_new | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | UI_create_method | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __basename | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __gettext | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __hash_string | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __strdup | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __textdomain | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __tzstring | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | a64l | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | charmap_opendir | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | ether_aton | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | getdate | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | inetstr2int | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | last_component | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | opt_path_end | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | opt_progname | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | repertoire_read | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | sgetsgent | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | sgetspent | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | strhash | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | uc_script_byname | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | uv__strdup | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | xstrdup | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Strsafe | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Symbol_new | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | UI_create_method | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __basename | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __gettext | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __hash_string | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __strdup | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __textdomain | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __tzstring | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | a64l | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | charmap_opendir | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | ether_aton | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | getdate | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | inetstr2int | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | last_component | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | opt_path_end | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | opt_progname | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | repertoire_read | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | sgetsgent | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | sgetspent | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | strhash | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | uc_script_byname | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | uv__strdup | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | xstrdup | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Strsafe | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Symbol_new | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | UI_create_method | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __basename | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __gettext | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __hash_string | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __strdup | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __textdomain | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __tzstring | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | a64l | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | charmap_opendir | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | ether_aton | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | getdate | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | inetstr2int | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | last_component | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | opt_path_end | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | opt_progname | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | repertoire_read | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | sgetsgent | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | sgetspent | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | strhash | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | uc_script_byname | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | uv__strdup | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | xstrdup | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Strsafe | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Symbol_new | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | UI_create_method | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __basename | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __gettext | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __hash_string | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __strdup | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __textdomain | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __tzstring | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | a64l | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | charmap_opendir | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | ether_aton | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | getdate | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | inetstr2int | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | last_component | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | opt_path_end | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | opt_progname | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | repertoire_read | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | sgetsgent | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | sgetspent | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | strhash | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | uc_script_byname | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | uv__strdup | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | xstrdup | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Strsafe | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Symbol_new | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | UI_create_method | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __basename | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __gettext | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __hash_string | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __strdup | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __textdomain | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __tzstring | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | a64l | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | charmap_opendir | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | ether_aton | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | getdate | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | inetstr2int | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | last_component | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | opt_path_end | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | opt_progname | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | repertoire_read | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | sgetsgent | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | sgetspent | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | strhash | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | uc_script_byname | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | uv__strdup | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | xstrdup | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Strsafe | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Symbol_new | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | UI_create_method | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __basename | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __gettext | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __hash_string | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __strdup | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __textdomain | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __tzstring | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | a64l | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | charmap_opendir | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | ether_aton | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | getdate | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | inetstr2int | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | last_component | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | opt_path_end | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | opt_progname | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | repertoire_read | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | sgetsgent | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | sgetspent | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | strhash | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | uc_script_byname | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | uv__strdup | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | xstrdup | 0 | -| atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | -| atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | -| atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 2 | -| atl.cpp:915:5:915:18 | CSimpleStringT | (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:915:5:915:18 | CSimpleStringT | (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 2 | -| atl.cpp:916:5:916:18 | CSimpleStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:916:5:916:18 | CSimpleStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:916:5:916:18 | CSimpleStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | -| atl.cpp:916:5:916:18 | CSimpleStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | -| atl.cpp:916:5:916:18 | CSimpleStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:916:5:916:18 | CSimpleStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | | operator+= | 0 | -| atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | CSimpleStringT | CSimpleStringT | 0 | -| atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | CSimpleStringT | operator+= | 0 | -| atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | CStringT | CStringT | 0 | -| atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | CStringT | operator= | 0 | -| atl.cpp:921:10:921:15 | Append | (const CSimpleStringT &) | | operator+= | 0 | -| atl.cpp:921:10:921:15 | Append | (const CSimpleStringT &) | CSimpleStringT | CSimpleStringT | 0 | -| atl.cpp:921:10:921:15 | Append | (const CSimpleStringT &) | CSimpleStringT | operator+= | 0 | -| atl.cpp:921:10:921:15 | Append | (const CSimpleStringT &) | CStringT | CStringT | 0 | -| atl.cpp:921:10:921:15 | Append | (const CSimpleStringT &) | CStringT | operator= | 0 | -| atl.cpp:922:10:922:15 | Append | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| atl.cpp:922:10:922:15 | Append | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| atl.cpp:922:10:922:15 | Append | (BIGNUM *,int) | | BN_clear_bit | 1 | -| atl.cpp:922:10:922:15 | Append | (BIGNUM *,int) | | BN_mask_bits | 1 | -| atl.cpp:922:10:922:15 | Append | (BIGNUM *,int) | | BN_set_bit | 1 | -| atl.cpp:922:10:922:15 | Append | (BIGNUM *,int) | | BN_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (BIGNUM *,int) | | bn_expand2 | 1 | -| atl.cpp:922:10:922:15 | Append | (BIGNUM *,int) | | bn_wexpand | 1 | -| atl.cpp:922:10:922:15 | Append | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| atl.cpp:922:10:922:15 | Append | (BIO *,int) | | BIO_clear_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (BIO *,int) | | BIO_find_type | 1 | -| atl.cpp:922:10:922:15 | Append | (BIO *,int) | | BIO_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (BIO *,int) | | BIO_set_init | 1 | -| atl.cpp:922:10:922:15 | Append | (BIO *,int) | | BIO_set_retry_reason | 1 | -| atl.cpp:922:10:922:15 | Append | (BIO *,int) | | BIO_set_shutdown | 1 | -| atl.cpp:922:10:922:15 | Append | (BIO *,int) | | TXT_DB_read | 1 | -| atl.cpp:922:10:922:15 | Append | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (CURL *,int) | | curl_easy_pause | 1 | -| atl.cpp:922:10:922:15 | Append | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| atl.cpp:922:10:922:15 | Append | (DH *,int) | | DH_clear_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (DH *,int) | | DH_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (DSA *,int) | | DSA_clear_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (DSA *,int) | | DSA_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| atl.cpp:922:10:922:15 | Append | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| atl.cpp:922:10:922:15 | Append | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| atl.cpp:922:10:922:15 | Append | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| atl.cpp:922:10:922:15 | Append | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| atl.cpp:922:10:922:15 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| atl.cpp:922:10:922:15 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| atl.cpp:922:10:922:15 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_default_pbackfail | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_fwide | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_init | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_init_internal | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_new_file_attach | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_new_file_overflow | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_old_init | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_sputbackc | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_str_overflow | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_str_pbackfail | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| atl.cpp:922:10:922:15 | Append | (FTS *,int) | | fts_children | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| atl.cpp:922:10:922:15 | Append | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| atl.cpp:922:10:922:15 | Append | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| atl.cpp:922:10:922:15 | Append | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| atl.cpp:922:10:922:15 | Append | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| atl.cpp:922:10:922:15 | Append | (RSA *,int) | | RSA_clear_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (RSA *,int) | | RSA_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| atl.cpp:922:10:922:15 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| atl.cpp:922:10:922:15 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| atl.cpp:922:10:922:15 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_key_update | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_purpose | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_read_ahead | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_security_level | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_shutdown | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_trust | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_verify_depth | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | ssl_md | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| atl.cpp:922:10:922:15 | Append | (X509 *,int) | | X509_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (X509 *,int) | | X509_self_signed | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| atl.cpp:922:10:922:15 | Append | (_Float128,int) | | __ldexpf128 | 1 | -| atl.cpp:922:10:922:15 | Append | (_Float128,int) | | __scalbnf128 | 1 | -| atl.cpp:922:10:922:15 | Append | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| atl.cpp:922:10:922:15 | Append | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| atl.cpp:922:10:922:15 | Append | (acttab *,int) | | acttab_insert | 1 | -| atl.cpp:922:10:922:15 | Append | (addrinfo *,int) | | support_format_addrinfo | 1 | -| atl.cpp:922:10:922:15 | Append | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| atl.cpp:922:10:922:15 | Append | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| atl.cpp:922:10:922:15 | Append | (char **,int) | | addrsort | 1 | -| atl.cpp:922:10:922:15 | Append | (char *,int) | | Curl_str2addr | 1 | -| atl.cpp:922:10:922:15 | Append | (char *,int) | | PEM_proc_type | 1 | -| atl.cpp:922:10:922:15 | Append | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:922:10:922:15 | Append | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| atl.cpp:922:10:922:15 | Append | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| atl.cpp:922:10:922:15 | Append | (const BIGNUM *,int) | | BN_get_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| atl.cpp:922:10:922:15 | Append | (const BIO *,int) | | BIO_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const BIO *,int) | | BIO_test_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const DH *,int) | | DH_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const DH *,int) | | DH_test_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (const DH *,int) | | ossl_dh_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const DSA *,int) | | DSA_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const DSA *,int) | | DSA_test_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (const DSA *,int) | | ossl_dsa_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| atl.cpp:922:10:922:15 | Append | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| atl.cpp:922:10:922:15 | Append | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| atl.cpp:922:10:922:15 | Append | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| atl.cpp:922:10:922:15 | Append | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| atl.cpp:922:10:922:15 | Append | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| atl.cpp:922:10:922:15 | Append | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| atl.cpp:922:10:922:15 | Append | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| atl.cpp:922:10:922:15 | Append | (const RSA *,int) | | RSA_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const RSA *,int) | | RSA_test_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (const RSA *,int) | | ossl_rsa_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const SSL *,int) | | SSL_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const UI *,int) | | UI_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509 *,int) | | X509_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509 *,int) | | X509_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:922:10:922:15 | Append | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | DH_meth_new | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | DSA_meth_new | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | Jim_StrDupLen | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | RSA_meth_new | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | ftok | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | gethostbyname2 | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | parse_yesno | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | res_gethostbyname2 | 1 | -| atl.cpp:922:10:922:15 | Append | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| atl.cpp:922:10:922:15 | Append | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| atl.cpp:922:10:922:15 | Append | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| atl.cpp:922:10:922:15 | Append | (const void *,int) | | inet6_rth_getaddr | 1 | -| atl.cpp:922:10:922:15 | Append | (double,int) | | __ldexp | 1 | -| atl.cpp:922:10:922:15 | Append | (double,int) | | __scalbn | 1 | -| atl.cpp:922:10:922:15 | Append | (double[],int) | | getloadavg | 1 | -| atl.cpp:922:10:922:15 | Append | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| atl.cpp:922:10:922:15 | Append | (fexcept_t *,int) | | fegetexceptflag | 1 | -| atl.cpp:922:10:922:15 | Append | (float,int) | | __ldexpf | 1 | -| atl.cpp:922:10:922:15 | Append | (float,int) | | __scalbnf | 1 | -| atl.cpp:922:10:922:15 | Append | (gzFile,int) | | gzflush | 1 | -| atl.cpp:922:10:922:15 | Append | (gzFile,int) | | gzputc | 1 | -| atl.cpp:922:10:922:15 | Append | (int *,int) | | X509_PURPOSE_set | 1 | -| atl.cpp:922:10:922:15 | Append | (int *,int) | | X509_TRUST_set | 1 | -| atl.cpp:922:10:922:15 | Append | (int *,int) | | __lll_unlock_elision | 1 | -| atl.cpp:922:10:922:15 | Append | (int,int) | | BN_security_bits | 1 | -| atl.cpp:922:10:922:15 | Append | (int,int) | | EVP_MD_meth_new | 1 | -| atl.cpp:922:10:922:15 | Append | (int,int) | | EVP_PKEY_meth_new | 1 | -| atl.cpp:922:10:922:15 | Append | (int,int) | | __isctype | 1 | -| atl.cpp:922:10:922:15 | Append | (int,int) | | acttab_alloc | 1 | -| atl.cpp:922:10:922:15 | Append | (int,int) | | div | 1 | -| atl.cpp:922:10:922:15 | Append | (int,int) | | inet6_rth_space | 1 | -| atl.cpp:922:10:922:15 | Append | (long double,int) | | __ldexpl | 1 | -| atl.cpp:922:10:922:15 | Append | (netlink_handle *,int) | | __netlink_request | 1 | -| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| atl.cpp:922:10:922:15 | Append | (ns_msg,int) | | ns_msg_getflag | 1 | -| atl.cpp:922:10:922:15 | Append | (obstack *,int) | | _obstack_newchunk | 1 | -| atl.cpp:922:10:922:15 | Append | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| atl.cpp:922:10:922:15 | Append | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| atl.cpp:922:10:922:15 | Append | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| atl.cpp:922:10:922:15 | Append | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| atl.cpp:922:10:922:15 | Append | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| atl.cpp:922:10:922:15 | Append | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| atl.cpp:922:10:922:15 | Append | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| atl.cpp:922:10:922:15 | Append | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| atl.cpp:922:10:922:15 | Append | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| atl.cpp:922:10:922:15 | Append | (rule *,int) | | Configlist_add | 1 | -| atl.cpp:922:10:922:15 | Append | (rule *,int) | | Configlist_addbasis | 1 | -| atl.cpp:922:10:922:15 | Append | (sigset_t *,int) | | sigaddset | 1 | -| atl.cpp:922:10:922:15 | Append | (sigset_t *,int) | | sigdelset | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| atl.cpp:922:10:922:15 | Append | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| atl.cpp:922:10:922:15 | Append | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| atl.cpp:922:10:922:15 | Append | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (timespec *,int) | | __timespec_get | 1 | -| atl.cpp:922:10:922:15 | Append | (timespec *,int) | | __timespec_getres | 1 | -| atl.cpp:922:10:922:15 | Append | (uint16_t,int) | | tls1_group_id2nid | 1 | -| atl.cpp:922:10:922:15 | Append | (unsigned char *,int) | | RAND_bytes | 1 | -| atl.cpp:922:10:922:15 | Append | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| atl.cpp:922:10:922:15 | Append | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| atl.cpp:922:10:922:15 | Append | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| atl.cpp:922:10:922:15 | Append | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| atl.cpp:922:10:922:15 | Append | (void *,int) | | DSO_dsobyaddr | 1 | -| atl.cpp:922:10:922:15 | Append | (void *,int) | | sqlite3_realloc | 1 | -| atl.cpp:922:10:922:15 | Append | (void *const *,int) | | __backtrace_symbols | 1 | -| atl.cpp:922:10:922:15 | Append | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:923:10:923:15 | Append | (PCXSTR) | | operator+= | 0 | -| atl.cpp:923:10:923:15 | Append | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:923:10:923:15 | Append | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_OCTET_STRING **,const unsigned char *,int) | | ossl_cmp_asn1_octet_string_set1_bytes | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_OCTET_STRING *,const unsigned char *,int) | | ASN1_OCTET_STRING_set | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_STRING *,const void *,int) | | ASN1_STRING_set | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_STRING *,void *,int) | | ASN1_STRING_set0 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_TIME *,tm *,int) | | ossl_asn1_time_from_tm | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_TYPE *,unsigned char *,int) | | ASN1_TYPE_set_octetstring | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_item_embed_free | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_primitive_free | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIGNUM *,const BIGNUM *,int) | | BN_lshift | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIGNUM *,const BIGNUM *,int) | | BN_rshift | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIGNUM *,const BIGNUM *,int) | | BN_with_flags | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIGNUM *,const BIGNUM *,int) | | bn_lshift_fixed_top | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIGNUM *,const BIGNUM *,int) | | bn_rshift_fixed_top | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIGNUM *,const unsigned long *,int) | | bn_set_static_words | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIGNUM *,const unsigned long *,int) | | bn_set_words | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIO *,BIO *,int) | | OSSL_HTTP_REQ_CTX_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIO *,BIO *,int) | | SMIME_crlf_copy | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIO *,GENERAL_NAMES *,int) | | OSSL_GENERAL_NAMES_print | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIO *,char *,int) | | BIO_get_line | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIO *,const DSA *,int) | | DSA_print | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIO *,const RSA *,int) | | RSA_print | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EC_KEY *,const OSSL_PARAM[],int) | | ossl_ec_key_fromdata | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ENGINE *,ENGINE_DYNAMIC_ID,int) | | engine_add_dynamic_id | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_export_to_provider | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_find_operation_cache | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY *,EVP_PKEY *,int) | | evp_keymgmt_util_copy | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,EVP_PKEY *,int) | | EVP_PKEY_derive_set_peer_ex | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const char *,int) | | EVP_PKEY_CTX_set1_pbe_pass | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const char *,int) | | EVP_PKEY_CTX_set1_pbe_pass | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_hkdf_info | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_tls1_prf_seed | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_key | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_salt | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_scrypt_salt | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_tls1_prf_secret | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set_mac_key | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const void *,int) | | EVP_PKEY_CTX_set1_id | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,int *,int) | | EVP_PKEY_CTX_set0_keygen_info | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FFC_PARAMS *,unsigned int,int) | | ossl_ffc_params_enable_flags | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FILE *,_IO_marker *,int) | | _IO_seekmark | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FILE *,_IO_marker *,int) | | _IO_seekwmark | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FILE *,__FILE *,int) | | fwide | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FILE *,const DSA *,int) | | DSA_print_fp | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FILE *,const RSA *,int) | | RSA_print_fp | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FILE *,off64_t,int) | | _IO_cookie_seek | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FILE *,rule *,int) | | RulePrint | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FTS *,FTSENT *,int) | | fts_set | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetCommand | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetGlobalVariable | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetVariable | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,Jim_Obj *,int) | | Jim_ListGetIndex | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,Jim_Obj *,int) | | Jim_UnsetVariable | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewDictObj | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewListObj | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,char *,int) | | Jim_NewStringObjNoAlloc | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_GetGlobalVariableStr | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_GetGlobalVariableStr | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_GetVariableStr | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_GetVariableStr | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_ONEREQ *,X509_EXTENSION *,int) | | OCSP_ONEREQ_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_ONEREQ *,const ASN1_OBJECT *,int) | | OCSP_ONEREQ_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_REQUEST *,X509_EXTENSION *,int) | | OCSP_REQUEST_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_REQUEST *,const ASN1_OBJECT *,int) | | OCSP_REQUEST_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_SINGLERESP *,X509_EXTENSION *,int) | | OCSP_SINGLERESP_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_SINGLERESP *,const ASN1_OBJECT *,int) | | OCSP_SINGLERESP_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OPENSSL_STACK *,const void *,int) | | OPENSSL_sk_insert | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_referenceValue | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_secretValue | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_CMP_CTX *,int,int) | | OSSL_CMP_CTX_set_option | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | EC_GROUP_new_by_curve_name_ex | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | EC_GROUP_new_by_curve_name_ex | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | EC_KEY_new_by_curve_name_ex | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | EC_KEY_new_by_curve_name_ex | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | OSSL_PROVIDER_try_load | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | OSSL_PROVIDER_try_load | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_dsa_key_new | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_dsa_key_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_kem_key_new | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_kem_key_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_parse_query | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_parse_query | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_name | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_name | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_value | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_value | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_PROVIDER *,OSSL_PROVIDER **,int) | | ossl_provider_add_to_store | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_QRL_ENC_LEVEL_SET *,uint32_t,int) | | ossl_qrl_enc_level_set_get | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (PKCS7 *,stack_st_X509 *,int) | | PKCS7_get0_signers | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (POLICYINFO *,const ASN1_OBJECT *,int) | | ossl_policy_data_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (PROV_CTX *,const char *,int) | | ossl_prov_ctx_get_bool_param | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (PROV_CTX *,const char *,int) | | ossl_prov_ctx_get_bool_param | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (PROV_CTX *,const char *,int) | | ossl_prov_ml_dsa_new | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (PROV_CTX *,const char *,int) | | ossl_prov_ml_dsa_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (PROV_CTX *,const char *,int) | | ossl_prov_ml_kem_new | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (PROV_CTX *,const char *,int) | | ossl_prov_ml_kem_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (QLOG *,uint32_t,int) | | ossl_qlog_set_event_type_enabled | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (QUIC_RXFC *,uint64_t,int) | | ossl_quic_rxfc_on_rx_stream_frame | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (QUIC_STREAM_ITER *,QUIC_STREAM_MAP *,int) | | ossl_quic_stream_iter_init | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (QUIC_STREAM_MAP *,uint64_t,int) | | ossl_quic_stream_map_alloc | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (RSA *,const OSSL_PARAM[],int) | | ossl_rsa_fromdata | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL *,const unsigned char *,int) | | SSL_use_certificate_ASN1 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL *,const void *,int) | | SSL_write | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL *,void *,int) | | SSL_peek | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL *,void *,int) | | SSL_read | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL *,void *,int) | | SSL_set_session_ticket_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL_CIPHER *,const SSL_CIPHER *,int) | | OBJ_bsearch_ssl_cipher_id | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL_CONNECTION *,PACKET *,int) | | ssl_cache_cipherlist | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_close_construct_packet | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_set_handshake_header | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL_CONNECTION *,WPACKET *,int) | | tls_close_construct_packet | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL_CONNECTION *,int,int) | | ssl3_send_alert | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_MSG_IMPRINT *,unsigned char *,int) | | TS_MSG_IMPRINT_set_msg | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_REQ *,X509_EXTENSION *,int) | | TS_REQ_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_REQ *,const ASN1_OBJECT *,int) | | TS_REQ_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_TST_INFO *,X509_EXTENSION *,int) | | TS_TST_INFO_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_TST_INFO *,const ASN1_OBJECT *,int) | | TS_TST_INFO_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (X509 *,X509_EXTENSION *,int) | | X509_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (X509 *,int,int) | | X509_check_purpose | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (X509 *,int,int) | | X509_check_trust | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (X509_CRL *,X509_EXTENSION *,int) | | X509_CRL_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (X509_PUBKEY *,unsigned char *,int) | | X509_PUBKEY_set0_public_key | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (X509_REVOKED *,X509_EXTENSION *,int) | | X509_REVOKED_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (X509_STORE_CTX *,X509 *,int) | | ossl_x509_check_cert_time | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | -| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 0 | -| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (_Float128,_Float128,int) | | __kernel_sinf128 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (_Float128,_Float128,int) | | __kernel_tanf128 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (_IO_strfile *,const char *,int) | | _IO_str_init_readonly | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (_IO_strfile *,const char *,int) | | _IO_str_init_readonly | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (action *,FILE *,int) | | PrintAction | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (acttab *,int,int) | | acttab_action | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (char *,size_t,int) | | __argz_stringify | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const ASN1_VALUE *,const ASN1_TEMPLATE *,int) | | ossl_asn1_do_adb | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const BIGNUM *,int[],int) | | BN_GF2m_poly2arr | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const BIGNUM *,unsigned char *,int) | | BN_bn2binpad | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const BIGNUM *,unsigned char *,int) | | BN_bn2lebinpad | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const BIGNUM *,unsigned char *,int) | | BN_bn2nativepad | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2bin | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2lebin | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2native | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const CMS_ContentInfo *,BIO *,int) | | ossl_cms_DigestedData_do_final | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_signed_get_attr_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const OSSL_PARAM *,BIO *,int) | | OSSL_PARAM_print_to_bio | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const OSSL_PROVIDER *,const char *,int) | | OSSL_PROVIDER_conf_get_bool | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (const OSSL_PROVIDER *,const char *,int) | | OSSL_PROVIDER_conf_get_bool | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const SSL *,char *,int) | | SSL_get_shared_ciphers | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const SSL *,int,int) | | apps_ssl_info_callback | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const SSL_CIPHER *,char *,int) | | SSL_CIPHER_description | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509 *,const ASN1_OBJECT *,int) | | X509_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509 *,const stack_st_X509 *,int) | | OSSL_ESS_signing_cert_new_init | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509 *,int,int) | | X509_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509 *,int,int) | | X509_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_ACERT *,const ASN1_OBJECT *,int) | | X509_ACERT_get_attr_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_ACERT *,int,int) | | X509_ACERT_get_attr_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_CRL *,const ASN1_OBJECT *,int) | | X509_CRL_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_CRL *,const X509 *,int) | | OSSL_CMP_CRLSTATUS_create | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_NAME *,char *,int) | | X509_NAME_oneline | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_NAME *,const ASN1_OBJECT *,int) | | X509_NAME_get_index_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_NAME *,int,int) | | X509_NAME_get_index_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_REQ *,const ASN1_OBJECT *,int) | | X509_REQ_get_attr_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_REQ *,int,int) | | X509_REQ_get_attr_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_REVOKED *,const ASN1_OBJECT *,int) | | X509_REVOKED_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,char **,int) | | __strtol | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,char **,int) | | __strtoul | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | CRYPTO_strdup | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | CRYPTO_strdup | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | __dcgettext | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | __dcgettext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | sqlite3_strnicmp | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,int,int) | | __old_strpbrk_c2 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,long *,int) | | Jim_StringToWide | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,size_t *,int) | | _dl_sysdep_read_whole_file | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,sqlite3_filename,int) | | sqlite3_uri_key | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,void *,int) | | support_readdir_check | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,wordexp_t *,int) | | wordexp | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const cmsghdr *,uint8_t **,int) | | inet6_option_find | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_ATTRIBUTE *,const ASN1_OBJECT *,int) | | X509at_get_attr_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_ATTRIBUTE *,int,int) | | X509at_get_attr_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const void *,socklen_t,int) | | res_gethostbyaddr | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const wchar_t *,wchar_t **,int) | | __wcstol | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const wchar_t *,wchar_t **,int) | | __wcstoul | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (database_dyn *,size_t,int) | | mempool_alloc | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (database_dyn *,time_t,int) | | prune_cache | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (double,double,int) | | __kernel_standard | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (float,float,int) | | __kernel_standard_f | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (gconv_spec *,__gconv_t *,int) | | __gconv_open | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (gzFile,char *,int) | | gzgets | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (gzFile,int,int) | | gzsetparams | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (gzFile,off64_t,int) | | gzseek64 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (gzFile,off_t,int) | | gzseek | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (int *,short *,int) | | __lll_lock_elision | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (int,int,int) | | ASN1_object_size | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (int,int,int) | | EVP_CIPHER_meth_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (long double,long double,int) | | __kernel_sinl | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (long double,long double,int) | | __kernel_standard_l | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (long double,long double,int) | | __kernel_tanl | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (mp_srcptr,int,int) | | __mpn_construct_double | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (mp_srcptr,int,int) | | __mpn_construct_float | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (mp_srcptr,int,int) | | __mpn_construct_float128 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (regex_t *,const char *,int) | | jim_regcomp | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (regex_t *,const char *,int) | | jim_regcomp | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (requestlist *,requestlist *,int) | | __aio_remove_request | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3 *,const char *,int) | | sqlite3_overload_function | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3 *,const char *,int) | | sqlite3_overload_function | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3 *,int,int) | | sqlite3_limit | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_context *,const char *,int) | | sqlite3_result_error | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_context *,const char *,int) | | sqlite3_result_error | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_context *,const void *,int) | | sqlite3_result_error16 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_index_info *,int,int) | | sqlite3_vtab_in | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_stmt *,int,int) | | sqlite3_bind_int | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_stmt *,int,int) | | sqlite3_bind_zeroblob | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_stmt *,int,int) | | sqlite3_stmt_status | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_str *,const char *,int) | | sqlite3_str_append | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_str *,const char *,int) | | sqlite3_str_append | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3expert *,int,int) | | sqlite3_expert_report | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509 **,X509 *,int) | | ossl_x509_add_cert_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509 **,stack_st_X509 *,int) | | ossl_x509_add_certs_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509 *,ASIdentifiers *,int) | | X509v3_asid_validate_resource_set | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509 *,IPAddrBlocks *,int) | | X509v3_addr_validate_resource_set | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509 *,X509 *,int) | | X509_add_cert | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509 *,stack_st_X509 *,int) | | X509_add_certs | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509_ALGOR **,int,int) | | CMS_add_simple_smimecap | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509_ALGOR *,int,int) | | PKCS7_simple_smimecap | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509_EXTENSION **,X509_EXTENSION *,int) | | X509v3_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (td_thragent_t *,uint32_t *,int) | | _td_check_sizeof | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uint8_t[56],const gf,int) | | gf_serialize | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned char *,const char *,int) | | data_string | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned char *,const char *,int) | | data_string | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned char *,const unsigned char *,int) | | EVP_EncodeBlock | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned int,const char *,int) | | _IO_adjust_column | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned int,const char *,int) | | _IO_adjust_column | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned int,const wchar_t *,int) | | _IO_adjust_wcolumn | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned int,int,int) | | ossl_blob_length | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uv_stream_t *,int,int) | | uv__stream_open | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (void *,cmsghdr **,int) | | inet6_option_init | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (void *,const char *,int) | | CRYPTO_secure_free | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (void *,const char *,int) | | CRYPTO_secure_free | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (void *,socklen_t,int) | | inet6_opt_finish | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,const BIGNUM *,const BIGNUM *,int) | | ossl_rsa_check_pminusq_diff | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,int,int,int) | | BN_bntest_rand | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,int,int,int) | | BN_priv_rand | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,int,int,int) | | BN_pseudo_rand | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,int,int,int) | | BN_rand | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,CMS_ContentInfo *,BIO *,int) | | PEM_write_bio_CMS_stream | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,CMS_ContentInfo *,BIO *,int) | | SMIME_write_CMS | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,CMS_ContentInfo *,BIO *,int) | | i2d_CMS_bio_stream | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,PKCS7 *,BIO *,int) | | PEM_write_bio_PKCS7_stream | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,PKCS7 *,BIO *,int) | | SMIME_write_PKCS7 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,PKCS7 *,BIO *,int) | | i2d_PKCS7_bio_stream | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,X509_EXTENSION *,unsigned long,int) | | X509V3_EXT_print | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,const char *,const OCSP_REQUEST *,int) | | OCSP_sendreq_new | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,const unsigned char *,long,int) | | ASN1_parse | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,int,const ASN1_TYPE *,int) | | ossl_print_attribute_value | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,void *,int,int) | | app_http_tls_cb | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (CERT *,const int *,size_t,int) | | tls1_set_sigalgs | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (CERT *,const uint16_t *,size_t,int) | | tls1_set_raw_sigalgs | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (DH *,OSSL_PARAM_BLD *,OSSL_PARAM[],int) | | ossl_dh_key_todata | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (DSO *,const char *,DSO_METHOD *,int) | | DSO_load | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (ENGINE *,const char *,const char *,int) | | ENGINE_ctrl_cmd_string | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (ENGINE *,const char *,const char *,int) | | ENGINE_ctrl_cmd_string | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (ENGINE_TABLE **,int,const char *,int) | | ossl_engine_table_select | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (ENGINE_TABLE **,int,const char *,int) | | ossl_engine_table_select | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (EVP_PKEY_CTX *,const char *,int,int) | | app_keygen | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FFC_PARAMS *,const unsigned char *,size_t,int) | | ossl_ffc_params_set_validate_params | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,char *,char *,int) | | _IO_setb | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,const char *,const char *,int) | | _IO_new_file_fopen | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,const char *,const char *,int) | | _IO_new_file_fopen | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,lemon *,int *,int) | | print_stack_union | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,mntent *,char *,int) | | __getmntent_r | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,off64_t,int,int) | | _IO_file_seekoff_mmap | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,off64_t,int,int) | | _IO_new_file_seekoff | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,off64_t,int,int) | | _IO_str_seekoff | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,off64_t,int,int) | | _IO_wfile_seekoff | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,off64_t,int,int) | | _IO_wstr_seekoff | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,wchar_t *,wchar_t *,int) | | _IO_wsetb | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,Jim_Obj **,int) | | Jim_SubstObj | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,Jim_Obj *,int) | | Jim_ScanString | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_AppendString | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_AppendString | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_ListJoin | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_ListJoin | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (OSSL_CMP_CTX *,const OSSL_CMP_MSG *,ossl_cmp_allow_unprotected_cb_t,int) | | ossl_cmp_msg_check_update | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (OSSL_CMP_CTX *,const OSSL_CMP_PKISI *,const OSSL_CRMF_CERTID *,int) | | ossl_cmp_rp_new | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (OSSL_LIB_CTX *,const char *,OSSL_PARAM *,int) | | OSSL_PROVIDER_try_load_ex | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (OSSL_PARAM_BLD *,OSSL_PARAM *,const char *,int) | | ossl_param_build_set_int | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (OSSL_PARAM_BLD *,OSSL_PARAM *,const char *,int) | | ossl_param_build_set_int | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (RSA *,OSSL_PARAM_BLD *,OSSL_PARAM[],int) | | ossl_rsa_todata | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SIPHASH *,const unsigned char *,int,int) | | SipHash_Init | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SLH_DSA_KEY *,const OSSL_PARAM *,const OSSL_PARAM[],int) | | ossl_slh_dsa_key_fromdata | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SSL *,SSL_CTX *,const SSL_METHOD *,int) | | ossl_ssl_init | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SSL_CONNECTION *,WPACKET *,CERT_PKEY *,int) | | ssl3_output_cert_chain | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SSL_CONNECTION *,stack_st_X509 *,X509 *,int) | | ssl_security_cert_chain | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SXNET **,ASN1_INTEGER *,const char *,int) | | SXNET_add_id_INTEGER | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (SXNET **,ASN1_INTEGER *,const char *,int) | | SXNET_add_id_INTEGER | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SXNET **,const char *,const char *,int) | | SXNET_add_id_asc | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (SXNET **,const char *,const char *,int) | | SXNET_add_id_asc | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SXNET **,unsigned long,const char *,int) | | SXNET_add_id_ulong | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (SXNET **,unsigned long,const char *,int) | | SXNET_add_id_ulong | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (TS_RESP_CTX *,int,int,int) | | TS_RESP_CTX_set_accuracy | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (UI *,UI_STRING *,const char *,int) | | UI_set_result_ex | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (UI *,UI_STRING *,const char *,int) | | UI_set_result_ex | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (X509_NAME *,const X509_NAME_ENTRY *,int,int) | | X509_NAME_add_entry | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (X509_NAME_ENTRY *,int,const unsigned char *,int) | | X509_NAME_ENTRY_set_data | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (X509_STORE_CTX *,int,int,int) | | X509_STORE_CTX_purpose_inherit | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | -| atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | -| atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (_Float128,_Float128,_Float128,int) | | __lgamma_productf128 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (char *,int,const ASN1_OBJECT *,int) | | OBJ_obj2txt | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (cmsghdr *,const uint8_t *,int,int) | | inet6_option_append | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (cmsghdr *,int,int,int) | | inet6_option_alloc | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const DH *,unsigned char **,size_t,int) | | ossl_dh_key2buf | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const EVP_MD *,const X509 *,const stack_st_X509 *,int) | | OSSL_ESS_signing_cert_v2_new_init | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const X509_NAME *,const ASN1_OBJECT *,char *,int) | | X509_NAME_get_text_by_OBJ | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const X509_NAME *,int,char *,int) | | X509_NAME_get_text_by_NID | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,BIO *,BIO *,int) | | X509_CRL_load_http | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,BIO *,BIO *,int) | | X509_load_http | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,const char *,char **,int) | | idn2_register_ul | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,int,int,int) | | __old_strpbrk_c3 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,int,int,int) | | append_str | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 1 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,sqlite3_filename,const char *,int) | | sqlite3_uri_boolean | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,sqlite3_filename,const char *,int) | | sqlite3_uri_boolean | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,u_char *,unsigned char *,int) | | inet_nsap_addr | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,int,unsigned char *,int) | | ___res_send | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,RC2_KEY *,int) | | RC2_ecb_encrypt | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,const BF_KEY *,int) | | BF_ecb_encrypt | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,const CAST_KEY *,int) | | CAST_ecb_encrypt | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,const SEED_KEY_SCHEDULE *,int) | | SEED_ecb_encrypt | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 1 | -| atl.cpp:928:17:928:25 | CopyChars | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (double,double,double,int) | | __lgamma_product | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (int,ENGINE *,const unsigned char *,int) | | EVP_PKEY_new_mac_key | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (int,const char *,const timespec[2],int) | | __utimensat | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (int,const void *,const char *,int) | | Curl_ip2addr | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (int,const void *,const char *,int) | | Curl_ip2addr | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (int,int *,int *,int) | | sqlite3_status | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (int,int,const unsigned char *,int) | | PKCS5_pbe_set | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (int,sockaddr *,socklen_t *,int) | | xaccept4 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (int,sqlite3_int64 *,sqlite3_int64 *,int) | | sqlite3_status64 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (link_map *,r_scope_elem *[],int,int) | | _dl_relocate_object | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (link_map *,r_scope_elem *[],int,int) | | _dl_relocate_object_no_relro | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (long double,long double,long double,int) | | __lgamma_productl | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (sqlite3_blob *,const void *,int,int) | | sqlite3_blob_write | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (sqlite3_blob *,void *,int,int) | | sqlite3_blob_read | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (stack_st_PKCS12_SAFEBAG **,int,const unsigned char *,int) | | PKCS12_add_secret | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (uint8_t *,unsigned char *,uint64_t,int) | | ossl_quic_vlint_encode_n | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned char *,int,const char *,int) | | a2d_ASN1_OBJECT | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned char *,int,const char *,int) | | a2d_ASN1_OBJECT | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_PKCS1_type_1 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_PKCS1_type_2 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_X931 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_none | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned long *,unsigned long *,unsigned long *,int) | | bn_mul_low_normal | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned long long,char *,unsigned int,int) | | _itoa | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned long,BIGNUM *,BIGNUM *,int) | | BN_consttime_swap | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned long,char *,unsigned int,int) | | _fitoa_word | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned long,char *,unsigned int,int) | | _itoa_word | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (void *,const ASN1_ITEM *,int,int) | | PKCS12_item_pack_safebag | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 1 | -| atl.cpp:928:17:928:25 | CopyChars | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (void *,socklen_t,int,int) | | inet6_rth_init | 3 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_OCTET_STRING **,const unsigned char *,int) | | ossl_cmp_asn1_octet_string_set1_bytes | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_OCTET_STRING *,const unsigned char *,int) | | ASN1_OCTET_STRING_set | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_STRING *,const void *,int) | | ASN1_STRING_set | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_STRING *,void *,int) | | ASN1_STRING_set0 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_TIME *,tm *,int) | | ossl_asn1_time_from_tm | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_TYPE *,unsigned char *,int) | | ASN1_TYPE_set_octetstring | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_item_embed_free | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_primitive_free | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIGNUM *,const BIGNUM *,int) | | BN_lshift | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIGNUM *,const BIGNUM *,int) | | BN_rshift | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIGNUM *,const BIGNUM *,int) | | BN_with_flags | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIGNUM *,const BIGNUM *,int) | | bn_lshift_fixed_top | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIGNUM *,const BIGNUM *,int) | | bn_rshift_fixed_top | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIGNUM *,const unsigned long *,int) | | bn_set_static_words | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIGNUM *,const unsigned long *,int) | | bn_set_words | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIO *,BIO *,int) | | OSSL_HTTP_REQ_CTX_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIO *,BIO *,int) | | SMIME_crlf_copy | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIO *,GENERAL_NAMES *,int) | | OSSL_GENERAL_NAMES_print | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIO *,char *,int) | | BIO_get_line | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIO *,const DSA *,int) | | DSA_print | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIO *,const RSA *,int) | | RSA_print | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EC_KEY *,const OSSL_PARAM[],int) | | ossl_ec_key_fromdata | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ENGINE *,ENGINE_DYNAMIC_ID,int) | | engine_add_dynamic_id | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_export_to_provider | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_find_operation_cache | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY *,EVP_PKEY *,int) | | evp_keymgmt_util_copy | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,EVP_PKEY *,int) | | EVP_PKEY_derive_set_peer_ex | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const char *,int) | | EVP_PKEY_CTX_set1_pbe_pass | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const char *,int) | | EVP_PKEY_CTX_set1_pbe_pass | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_hkdf_info | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_tls1_prf_seed | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_key | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_salt | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_scrypt_salt | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_tls1_prf_secret | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set_mac_key | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const void *,int) | | EVP_PKEY_CTX_set1_id | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,int *,int) | | EVP_PKEY_CTX_set0_keygen_info | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FFC_PARAMS *,unsigned int,int) | | ossl_ffc_params_enable_flags | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FILE *,_IO_marker *,int) | | _IO_seekmark | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FILE *,_IO_marker *,int) | | _IO_seekwmark | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FILE *,__FILE *,int) | | fwide | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FILE *,const DSA *,int) | | DSA_print_fp | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FILE *,const RSA *,int) | | RSA_print_fp | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FILE *,off64_t,int) | | _IO_cookie_seek | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FILE *,rule *,int) | | RulePrint | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FTS *,FTSENT *,int) | | fts_set | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetCommand | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetGlobalVariable | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetVariable | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,Jim_Obj *,int) | | Jim_ListGetIndex | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,Jim_Obj *,int) | | Jim_UnsetVariable | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewDictObj | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewListObj | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,char *,int) | | Jim_NewStringObjNoAlloc | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_GetGlobalVariableStr | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_GetGlobalVariableStr | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_GetVariableStr | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_GetVariableStr | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_ONEREQ *,X509_EXTENSION *,int) | | OCSP_ONEREQ_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_ONEREQ *,const ASN1_OBJECT *,int) | | OCSP_ONEREQ_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_REQUEST *,X509_EXTENSION *,int) | | OCSP_REQUEST_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_REQUEST *,const ASN1_OBJECT *,int) | | OCSP_REQUEST_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_SINGLERESP *,X509_EXTENSION *,int) | | OCSP_SINGLERESP_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_SINGLERESP *,const ASN1_OBJECT *,int) | | OCSP_SINGLERESP_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OPENSSL_STACK *,const void *,int) | | OPENSSL_sk_insert | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_referenceValue | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_secretValue | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_CMP_CTX *,int,int) | | OSSL_CMP_CTX_set_option | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | EC_GROUP_new_by_curve_name_ex | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | EC_GROUP_new_by_curve_name_ex | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | EC_KEY_new_by_curve_name_ex | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | EC_KEY_new_by_curve_name_ex | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | OSSL_PROVIDER_try_load | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | OSSL_PROVIDER_try_load | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_dsa_key_new | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_dsa_key_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_kem_key_new | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_kem_key_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_parse_query | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_parse_query | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_name | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_name | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_value | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_value | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_PROVIDER *,OSSL_PROVIDER **,int) | | ossl_provider_add_to_store | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_QRL_ENC_LEVEL_SET *,uint32_t,int) | | ossl_qrl_enc_level_set_get | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (PKCS7 *,stack_st_X509 *,int) | | PKCS7_get0_signers | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (POLICYINFO *,const ASN1_OBJECT *,int) | | ossl_policy_data_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (PROV_CTX *,const char *,int) | | ossl_prov_ctx_get_bool_param | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (PROV_CTX *,const char *,int) | | ossl_prov_ctx_get_bool_param | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (PROV_CTX *,const char *,int) | | ossl_prov_ml_dsa_new | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (PROV_CTX *,const char *,int) | | ossl_prov_ml_dsa_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (PROV_CTX *,const char *,int) | | ossl_prov_ml_kem_new | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (PROV_CTX *,const char *,int) | | ossl_prov_ml_kem_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (QLOG *,uint32_t,int) | | ossl_qlog_set_event_type_enabled | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (QUIC_RXFC *,uint64_t,int) | | ossl_quic_rxfc_on_rx_stream_frame | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (QUIC_STREAM_ITER *,QUIC_STREAM_MAP *,int) | | ossl_quic_stream_iter_init | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (QUIC_STREAM_MAP *,uint64_t,int) | | ossl_quic_stream_map_alloc | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (RSA *,const OSSL_PARAM[],int) | | ossl_rsa_fromdata | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL *,const unsigned char *,int) | | SSL_use_certificate_ASN1 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL *,const void *,int) | | SSL_write | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL *,void *,int) | | SSL_peek | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL *,void *,int) | | SSL_read | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL *,void *,int) | | SSL_set_session_ticket_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL_CIPHER *,const SSL_CIPHER *,int) | | OBJ_bsearch_ssl_cipher_id | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL_CONNECTION *,PACKET *,int) | | ssl_cache_cipherlist | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_close_construct_packet | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_set_handshake_header | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL_CONNECTION *,WPACKET *,int) | | tls_close_construct_packet | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL_CONNECTION *,int,int) | | ssl3_send_alert | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_MSG_IMPRINT *,unsigned char *,int) | | TS_MSG_IMPRINT_set_msg | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_REQ *,X509_EXTENSION *,int) | | TS_REQ_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_REQ *,const ASN1_OBJECT *,int) | | TS_REQ_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_TST_INFO *,X509_EXTENSION *,int) | | TS_TST_INFO_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_TST_INFO *,const ASN1_OBJECT *,int) | | TS_TST_INFO_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (X509 *,X509_EXTENSION *,int) | | X509_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (X509 *,int,int) | | X509_check_purpose | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (X509 *,int,int) | | X509_check_trust | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (X509_CRL *,X509_EXTENSION *,int) | | X509_CRL_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (X509_PUBKEY *,unsigned char *,int) | | X509_PUBKEY_set0_public_key | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (X509_REVOKED *,X509_EXTENSION *,int) | | X509_REVOKED_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (X509_STORE_CTX *,X509 *,int) | | ossl_x509_check_cert_time | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 0 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (_Float128,_Float128,int) | | __kernel_sinf128 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (_Float128,_Float128,int) | | __kernel_tanf128 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (_IO_strfile *,const char *,int) | | _IO_str_init_readonly | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (_IO_strfile *,const char *,int) | | _IO_str_init_readonly | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (action *,FILE *,int) | | PrintAction | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (acttab *,int,int) | | acttab_action | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (char *,size_t,int) | | __argz_stringify | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const ASN1_VALUE *,const ASN1_TEMPLATE *,int) | | ossl_asn1_do_adb | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const BIGNUM *,int[],int) | | BN_GF2m_poly2arr | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const BIGNUM *,unsigned char *,int) | | BN_bn2binpad | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const BIGNUM *,unsigned char *,int) | | BN_bn2lebinpad | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const BIGNUM *,unsigned char *,int) | | BN_bn2nativepad | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2bin | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2lebin | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2native | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_ContentInfo *,BIO *,int) | | ossl_cms_DigestedData_do_final | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_signed_get_attr_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const OSSL_PARAM *,BIO *,int) | | OSSL_PARAM_print_to_bio | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const OSSL_PROVIDER *,const char *,int) | | OSSL_PROVIDER_conf_get_bool | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const OSSL_PROVIDER *,const char *,int) | | OSSL_PROVIDER_conf_get_bool | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const SSL *,char *,int) | | SSL_get_shared_ciphers | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const SSL *,int,int) | | apps_ssl_info_callback | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const SSL_CIPHER *,char *,int) | | SSL_CIPHER_description | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509 *,const ASN1_OBJECT *,int) | | X509_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509 *,const stack_st_X509 *,int) | | OSSL_ESS_signing_cert_new_init | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509 *,int,int) | | X509_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509 *,int,int) | | X509_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_ACERT *,const ASN1_OBJECT *,int) | | X509_ACERT_get_attr_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_ACERT *,int,int) | | X509_ACERT_get_attr_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_CRL *,const ASN1_OBJECT *,int) | | X509_CRL_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_CRL *,const X509 *,int) | | OSSL_CMP_CRLSTATUS_create | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_NAME *,char *,int) | | X509_NAME_oneline | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_NAME *,const ASN1_OBJECT *,int) | | X509_NAME_get_index_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_NAME *,int,int) | | X509_NAME_get_index_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_REQ *,const ASN1_OBJECT *,int) | | X509_REQ_get_attr_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_REQ *,int,int) | | X509_REQ_get_attr_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_REVOKED *,const ASN1_OBJECT *,int) | | X509_REVOKED_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,char **,int) | | __strtol | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,char **,int) | | __strtoul | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | CRYPTO_strdup | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | CRYPTO_strdup | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | __dcgettext | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | __dcgettext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | sqlite3_strnicmp | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,int,int) | | __old_strpbrk_c2 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,long *,int) | | Jim_StringToWide | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,size_t *,int) | | _dl_sysdep_read_whole_file | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,sqlite3_filename,int) | | sqlite3_uri_key | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,void *,int) | | support_readdir_check | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,wordexp_t *,int) | | wordexp | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const cmsghdr *,uint8_t **,int) | | inet6_option_find | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_ATTRIBUTE *,const ASN1_OBJECT *,int) | | X509at_get_attr_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_ATTRIBUTE *,int,int) | | X509at_get_attr_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const void *,socklen_t,int) | | res_gethostbyaddr | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const wchar_t *,wchar_t **,int) | | __wcstol | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const wchar_t *,wchar_t **,int) | | __wcstoul | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (database_dyn *,size_t,int) | | mempool_alloc | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (database_dyn *,time_t,int) | | prune_cache | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (double,double,int) | | __kernel_standard | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (float,float,int) | | __kernel_standard_f | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gconv_spec *,__gconv_t *,int) | | __gconv_open | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,char *,int) | | gzgets | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,int,int) | | gzsetparams | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,off64_t,int) | | gzseek64 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,off_t,int) | | gzseek | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int *,short *,int) | | __lll_lock_elision | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int,int,int) | | ASN1_object_size | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int,int,int) | | EVP_CIPHER_meth_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (long double,long double,int) | | __kernel_sinl | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (long double,long double,int) | | __kernel_standard_l | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (long double,long double,int) | | __kernel_tanl | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (mp_srcptr,int,int) | | __mpn_construct_double | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (mp_srcptr,int,int) | | __mpn_construct_float | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (mp_srcptr,int,int) | | __mpn_construct_float128 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (regex_t *,const char *,int) | | jim_regcomp | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (regex_t *,const char *,int) | | jim_regcomp | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (requestlist *,requestlist *,int) | | __aio_remove_request | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3 *,const char *,int) | | sqlite3_overload_function | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3 *,const char *,int) | | sqlite3_overload_function | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3 *,int,int) | | sqlite3_limit | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_context *,const char *,int) | | sqlite3_result_error | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_context *,const char *,int) | | sqlite3_result_error | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_context *,const void *,int) | | sqlite3_result_error16 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_index_info *,int,int) | | sqlite3_vtab_in | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_stmt *,int,int) | | sqlite3_bind_int | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_stmt *,int,int) | | sqlite3_bind_zeroblob | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_stmt *,int,int) | | sqlite3_stmt_status | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_str *,const char *,int) | | sqlite3_str_append | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_str *,const char *,int) | | sqlite3_str_append | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3expert *,int,int) | | sqlite3_expert_report | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509 **,X509 *,int) | | ossl_x509_add_cert_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509 **,stack_st_X509 *,int) | | ossl_x509_add_certs_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509 *,ASIdentifiers *,int) | | X509v3_asid_validate_resource_set | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509 *,IPAddrBlocks *,int) | | X509v3_addr_validate_resource_set | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509 *,X509 *,int) | | X509_add_cert | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509 *,stack_st_X509 *,int) | | X509_add_certs | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509_ALGOR **,int,int) | | CMS_add_simple_smimecap | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509_ALGOR *,int,int) | | PKCS7_simple_smimecap | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509_EXTENSION **,X509_EXTENSION *,int) | | X509v3_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (td_thragent_t *,uint32_t *,int) | | _td_check_sizeof | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uint8_t[56],const gf,int) | | gf_serialize | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned char *,const char *,int) | | data_string | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned char *,const char *,int) | | data_string | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned char *,const unsigned char *,int) | | EVP_EncodeBlock | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned int,const char *,int) | | _IO_adjust_column | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned int,const char *,int) | | _IO_adjust_column | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned int,const wchar_t *,int) | | _IO_adjust_wcolumn | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned int,int,int) | | ossl_blob_length | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_stream_t *,int,int) | | uv__stream_open | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,cmsghdr **,int) | | inet6_option_init | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,const char *,int) | | CRYPTO_secure_free | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,const char *,int) | | CRYPTO_secure_free | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,socklen_t,int) | | inet6_opt_finish | 2 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | ASN1_tag2str | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | Jim_SignalId | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | PKCS12_init | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | Symbol_Nth | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __btowc | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __current_locale_name | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __fdopendir | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __get_errlist | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __get_errname | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __math_invalid_i | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __math_invalidf_i | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __p_class | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __p_rcode | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __p_type | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __pkey_get | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __sigdescr_np | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __strerrordesc_np | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | _tolower | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | _toupper | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | btowc | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | c_tolower | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | c_toupper | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | curlx_sitouz | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | inet6_option_space | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isalnum | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isalpha | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isblank | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | iscntrl | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isdigit | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isgraph | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | islower | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isprint | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | ispunct | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isspace | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isupper | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isxdigit | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | ossl_tolower | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | ossl_toupper | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | sigabbrev_np | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | sqlite3_errstr | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | strerrorname_np | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | support_report_failure | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | svcudp_create | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | tls13_alert_code | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | toascii | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | tolower | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | toupper | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | uabs | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | uv__accept | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_err_name | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_strerror | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | zError | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ASN1_tag2str | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | Jim_SignalId | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | PKCS12_init | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | Symbol_Nth | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __btowc | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __current_locale_name | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __fdopendir | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __get_errlist | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __get_errname | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __math_invalid_i | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __math_invalidf_i | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __p_class | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __p_rcode | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __p_type | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __pkey_get | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __sigdescr_np | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __strerrordesc_np | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | _tolower | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | _toupper | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | btowc | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | c_tolower | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | c_toupper | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | curlx_sitouz | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | inet6_option_space | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isalnum | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isalpha | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isblank | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | iscntrl | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isdigit | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isgraph | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | islower | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isprint | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ispunct | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isspace | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isupper | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isxdigit | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ossl_tolower | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ossl_toupper | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | sigabbrev_np | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | sqlite3_errstr | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | strerrorname_np | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | support_report_failure | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | svcudp_create | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | tls13_alert_code | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | toascii | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | tolower | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | toupper | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uabs | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv__accept | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_err_name | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_strerror | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | zError | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ASN1_tag2str | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | Jim_SignalId | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | PKCS12_init | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | Symbol_Nth | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __btowc | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __current_locale_name | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __fdopendir | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __get_errlist | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __get_errname | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __math_invalid_i | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __math_invalidf_i | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __p_class | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __p_rcode | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __p_type | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __pkey_get | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __sigdescr_np | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __strerrordesc_np | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | _tolower | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | _toupper | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | btowc | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | c_tolower | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | c_toupper | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | curlx_sitouz | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | inet6_option_space | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isalnum | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isalpha | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isblank | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | iscntrl | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isdigit | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isgraph | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | islower | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isprint | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ispunct | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isspace | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isupper | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isxdigit | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ossl_tolower | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ossl_toupper | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | sigabbrev_np | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | sqlite3_errstr | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | strerrorname_np | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | support_report_failure | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | svcudp_create | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | tls13_alert_code | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | toascii | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | tolower | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | toupper | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uabs | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv__accept | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_err_name | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_strerror | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | zError | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:938:10:938:14 | SetAt | (XCHAR,XCHAR) | CStringT | Replace | 1 | -| atl.cpp:938:10:938:14 | SetAt | (__printf_buffer *,char) | | __printf_buffer_putc_1 | 1 | -| atl.cpp:938:10:938:14 | SetAt | (char **,char) | | Curl_str_single | 1 | -| atl.cpp:938:10:938:14 | SetAt | (char **,char) | | __old_strsep_1c | 1 | -| atl.cpp:938:10:938:14 | SetAt | (const CStringT &,char) | | operator+ | 1 | -| atl.cpp:938:10:938:14 | SetAt | (int,XCHAR) | CStringT | Insert | 0 | -| atl.cpp:938:10:938:14 | SetAt | (int,XCHAR) | CStringT | Insert | 1 | -| atl.cpp:939:10:939:18 | SetString | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| atl.cpp:939:10:939:18 | SetString | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIGNUM *,int) | | BN_clear_bit | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIGNUM *,int) | | BN_mask_bits | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIGNUM *,int) | | BN_set_bit | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIGNUM *,int) | | BN_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIGNUM *,int) | | bn_expand2 | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIGNUM *,int) | | bn_wexpand | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | BIO_clear_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | BIO_find_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | BIO_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | BIO_set_init | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | BIO_set_retry_reason | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | BIO_set_shutdown | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | TXT_DB_read | 1 | -| atl.cpp:939:10:939:18 | SetString | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (CURL *,int) | | curl_easy_pause | 1 | -| atl.cpp:939:10:939:18 | SetString | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| atl.cpp:939:10:939:18 | SetString | (DH *,int) | | DH_clear_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (DH *,int) | | DH_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (DSA *,int) | | DSA_clear_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (DSA *,int) | | DSA_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| atl.cpp:939:10:939:18 | SetString | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| atl.cpp:939:10:939:18 | SetString | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| atl.cpp:939:10:939:18 | SetString | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| atl.cpp:939:10:939:18 | SetString | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| atl.cpp:939:10:939:18 | SetString | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| atl.cpp:939:10:939:18 | SetString | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| atl.cpp:939:10:939:18 | SetString | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_default_pbackfail | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_fwide | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_init | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_init_internal | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_new_file_attach | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_new_file_overflow | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_old_init | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_sputbackc | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_str_overflow | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_str_pbackfail | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| atl.cpp:939:10:939:18 | SetString | (FTS *,int) | | fts_children | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| atl.cpp:939:10:939:18 | SetString | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| atl.cpp:939:10:939:18 | SetString | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| atl.cpp:939:10:939:18 | SetString | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| atl.cpp:939:10:939:18 | SetString | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| atl.cpp:939:10:939:18 | SetString | (RSA *,int) | | RSA_clear_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (RSA *,int) | | RSA_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| atl.cpp:939:10:939:18 | SetString | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| atl.cpp:939:10:939:18 | SetString | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| atl.cpp:939:10:939:18 | SetString | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_key_update | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_purpose | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_read_ahead | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_security_level | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_shutdown | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_trust | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_verify_depth | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | ssl_md | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509 *,int) | | X509_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509 *,int) | | X509_self_signed | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| atl.cpp:939:10:939:18 | SetString | (_Float128,int) | | __ldexpf128 | 1 | -| atl.cpp:939:10:939:18 | SetString | (_Float128,int) | | __scalbnf128 | 1 | -| atl.cpp:939:10:939:18 | SetString | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| atl.cpp:939:10:939:18 | SetString | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| atl.cpp:939:10:939:18 | SetString | (acttab *,int) | | acttab_insert | 1 | -| atl.cpp:939:10:939:18 | SetString | (addrinfo *,int) | | support_format_addrinfo | 1 | -| atl.cpp:939:10:939:18 | SetString | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| atl.cpp:939:10:939:18 | SetString | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| atl.cpp:939:10:939:18 | SetString | (char **,int) | | addrsort | 1 | -| atl.cpp:939:10:939:18 | SetString | (char *,int) | | Curl_str2addr | 1 | -| atl.cpp:939:10:939:18 | SetString | (char *,int) | | PEM_proc_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:939:10:939:18 | SetString | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| atl.cpp:939:10:939:18 | SetString | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| atl.cpp:939:10:939:18 | SetString | (const BIGNUM *,int) | | BN_get_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| atl.cpp:939:10:939:18 | SetString | (const BIO *,int) | | BIO_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const BIO *,int) | | BIO_test_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const DH *,int) | | DH_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const DH *,int) | | DH_test_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (const DH *,int) | | ossl_dh_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const DSA *,int) | | DSA_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const DSA *,int) | | DSA_test_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (const DSA *,int) | | ossl_dsa_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| atl.cpp:939:10:939:18 | SetString | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| atl.cpp:939:10:939:18 | SetString | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| atl.cpp:939:10:939:18 | SetString | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| atl.cpp:939:10:939:18 | SetString | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| atl.cpp:939:10:939:18 | SetString | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| atl.cpp:939:10:939:18 | SetString | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| atl.cpp:939:10:939:18 | SetString | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| atl.cpp:939:10:939:18 | SetString | (const RSA *,int) | | RSA_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const RSA *,int) | | RSA_test_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (const RSA *,int) | | ossl_rsa_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const SSL *,int) | | SSL_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const UI *,int) | | UI_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509 *,int) | | X509_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509 *,int) | | X509_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:939:10:939:18 | SetString | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | DH_meth_new | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | DSA_meth_new | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | Jim_StrDupLen | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | RSA_meth_new | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | ftok | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | gethostbyname2 | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | parse_yesno | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | res_gethostbyname2 | 1 | -| atl.cpp:939:10:939:18 | SetString | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| atl.cpp:939:10:939:18 | SetString | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| atl.cpp:939:10:939:18 | SetString | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| atl.cpp:939:10:939:18 | SetString | (const void *,int) | | inet6_rth_getaddr | 1 | -| atl.cpp:939:10:939:18 | SetString | (double,int) | | __ldexp | 1 | -| atl.cpp:939:10:939:18 | SetString | (double,int) | | __scalbn | 1 | -| atl.cpp:939:10:939:18 | SetString | (double[],int) | | getloadavg | 1 | -| atl.cpp:939:10:939:18 | SetString | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| atl.cpp:939:10:939:18 | SetString | (fexcept_t *,int) | | fegetexceptflag | 1 | -| atl.cpp:939:10:939:18 | SetString | (float,int) | | __ldexpf | 1 | -| atl.cpp:939:10:939:18 | SetString | (float,int) | | __scalbnf | 1 | -| atl.cpp:939:10:939:18 | SetString | (gzFile,int) | | gzflush | 1 | -| atl.cpp:939:10:939:18 | SetString | (gzFile,int) | | gzputc | 1 | -| atl.cpp:939:10:939:18 | SetString | (int *,int) | | X509_PURPOSE_set | 1 | -| atl.cpp:939:10:939:18 | SetString | (int *,int) | | X509_TRUST_set | 1 | -| atl.cpp:939:10:939:18 | SetString | (int *,int) | | __lll_unlock_elision | 1 | -| atl.cpp:939:10:939:18 | SetString | (int,int) | | BN_security_bits | 1 | -| atl.cpp:939:10:939:18 | SetString | (int,int) | | EVP_MD_meth_new | 1 | -| atl.cpp:939:10:939:18 | SetString | (int,int) | | EVP_PKEY_meth_new | 1 | -| atl.cpp:939:10:939:18 | SetString | (int,int) | | __isctype | 1 | -| atl.cpp:939:10:939:18 | SetString | (int,int) | | acttab_alloc | 1 | -| atl.cpp:939:10:939:18 | SetString | (int,int) | | div | 1 | -| atl.cpp:939:10:939:18 | SetString | (int,int) | | inet6_rth_space | 1 | -| atl.cpp:939:10:939:18 | SetString | (long double,int) | | __ldexpl | 1 | -| atl.cpp:939:10:939:18 | SetString | (netlink_handle *,int) | | __netlink_request | 1 | -| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| atl.cpp:939:10:939:18 | SetString | (ns_msg,int) | | ns_msg_getflag | 1 | -| atl.cpp:939:10:939:18 | SetString | (obstack *,int) | | _obstack_newchunk | 1 | -| atl.cpp:939:10:939:18 | SetString | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| atl.cpp:939:10:939:18 | SetString | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| atl.cpp:939:10:939:18 | SetString | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| atl.cpp:939:10:939:18 | SetString | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| atl.cpp:939:10:939:18 | SetString | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| atl.cpp:939:10:939:18 | SetString | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| atl.cpp:939:10:939:18 | SetString | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| atl.cpp:939:10:939:18 | SetString | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| atl.cpp:939:10:939:18 | SetString | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| atl.cpp:939:10:939:18 | SetString | (rule *,int) | | Configlist_add | 1 | -| atl.cpp:939:10:939:18 | SetString | (rule *,int) | | Configlist_addbasis | 1 | -| atl.cpp:939:10:939:18 | SetString | (sigset_t *,int) | | sigaddset | 1 | -| atl.cpp:939:10:939:18 | SetString | (sigset_t *,int) | | sigdelset | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| atl.cpp:939:10:939:18 | SetString | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| atl.cpp:939:10:939:18 | SetString | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| atl.cpp:939:10:939:18 | SetString | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (timespec *,int) | | __timespec_get | 1 | -| atl.cpp:939:10:939:18 | SetString | (timespec *,int) | | __timespec_getres | 1 | -| atl.cpp:939:10:939:18 | SetString | (uint16_t,int) | | tls1_group_id2nid | 1 | -| atl.cpp:939:10:939:18 | SetString | (unsigned char *,int) | | RAND_bytes | 1 | -| atl.cpp:939:10:939:18 | SetString | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| atl.cpp:939:10:939:18 | SetString | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| atl.cpp:939:10:939:18 | SetString | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| atl.cpp:939:10:939:18 | SetString | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| atl.cpp:939:10:939:18 | SetString | (void *,int) | | DSO_dsobyaddr | 1 | -| atl.cpp:939:10:939:18 | SetString | (void *,int) | | sqlite3_realloc | 1 | -| atl.cpp:939:10:939:18 | SetString | (void *const *,int) | | __backtrace_symbols | 1 | -| atl.cpp:939:10:939:18 | SetString | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:940:10:940:18 | SetString | (PCXSTR) | | operator+= | 0 | -| atl.cpp:940:10:940:18 | SetString | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:940:10:940:18 | SetString | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | ASN1_tag2str | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | Jim_SignalId | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | PKCS12_init | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | Symbol_Nth | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __btowc | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __current_locale_name | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __fdopendir | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __get_errlist | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __get_errname | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __math_invalid_i | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __math_invalidf_i | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __p_class | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __p_rcode | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __p_type | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __pkey_get | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __sigdescr_np | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __strerrordesc_np | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | _tolower | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | _toupper | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | btowc | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | c_tolower | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | c_toupper | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | curlx_sitouz | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | inet6_option_space | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isalnum | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isalpha | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isblank | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | iscntrl | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isdigit | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isgraph | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | islower | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isprint | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | ispunct | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isspace | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isupper | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isxdigit | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | ossl_tolower | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | ossl_toupper | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | sigabbrev_np | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | sqlite3_errstr | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | strerrorname_np | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | support_report_failure | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | svcudp_create | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | tls13_alert_code | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | toascii | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | tolower | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | toupper | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | uabs | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | uv__accept | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_err_name | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_strerror | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | zError | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | | operator+= | 0 | -| atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | CStringT | CStringT | 0 | -| atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | CStringT | operator= | 0 | -| atl.cpp:1037:5:1037:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1037:5:1037:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1037:5:1037:12 | CStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | -| atl.cpp:1037:5:1037:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 0 | -| atl.cpp:1037:5:1037:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1037:5:1037:12 | CStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1038:5:1038:12 | CStringT | (const CStringT &) | CStringT | CStringT | 0 | -| atl.cpp:1038:5:1038:12 | CStringT | (const CStringT &) | CStringT | operator= | 0 | -| atl.cpp:1042:5:1042:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 0 | -| atl.cpp:1042:5:1042:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1042:5:1042:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1042:5:1042:12 | CStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | -| atl.cpp:1042:5:1042:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1042:5:1042:12 | CStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1043:5:1043:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1043:5:1043:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 0 | -| atl.cpp:1043:5:1043:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1043:5:1043:12 | CStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | -| atl.cpp:1043:5:1043:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1043:5:1043:12 | CStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | SRP_VBASE_new | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | _IO_gets | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | __mktemp | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | __nis_default_group | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | __nis_default_owner | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | __nis_default_ttl | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | __xpg_basename | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | ctermid | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | cuserid | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | defossilize | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | des_setparity | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | dirname | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | getwd | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | make_uppercase | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | mkdtemp | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | next_item | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | strfry | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | CStringT | CStringT | 0 | -| atl.cpp:1046:5:1046:12 | CStringT | (unsigned char *) | CStringT | CStringT | 0 | -| atl.cpp:1047:5:1047:12 | CStringT | (wchar_t *) | CStringT | CStringT | 0 | -| atl.cpp:1049:5:1049:12 | CStringT | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIGNUM *,int) | | BN_clear_bit | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIGNUM *,int) | | BN_mask_bits | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIGNUM *,int) | | BN_set_bit | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIGNUM *,int) | | BN_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIGNUM *,int) | | bn_expand2 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIGNUM *,int) | | bn_wexpand | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | BIO_clear_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | BIO_find_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | BIO_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | BIO_set_init | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | BIO_set_retry_reason | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | BIO_set_shutdown | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | TXT_DB_read | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (CURL *,int) | | curl_easy_pause | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (DH *,int) | | DH_clear_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (DH *,int) | | DH_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (DSA *,int) | | DSA_clear_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (DSA *,int) | | DSA_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_default_pbackfail | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_fwide | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_init | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_init_internal | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_new_file_attach | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_new_file_overflow | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_old_init | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_sputbackc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_str_overflow | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_str_pbackfail | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FTS *,int) | | fts_children | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (RSA *,int) | | RSA_clear_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (RSA *,int) | | RSA_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_key_update | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_purpose | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_read_ahead | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_security_level | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_shutdown | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_trust | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_verify_depth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | ssl_md | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509 *,int) | | X509_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509 *,int) | | X509_self_signed | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (_Float128,int) | | __ldexpf128 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (_Float128,int) | | __scalbnf128 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (acttab *,int) | | acttab_insert | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (addrinfo *,int) | | support_format_addrinfo | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (char **,int) | | addrsort | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (char *,int) | | Curl_str2addr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (char *,int) | | PEM_proc_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (char,int) | CStringT | CStringT | 0 | -| atl.cpp:1049:5:1049:12 | CStringT | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const BIGNUM *,int) | | BN_get_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const BIO *,int) | | BIO_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const BIO *,int) | | BIO_test_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const DH *,int) | | DH_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const DH *,int) | | DH_test_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const DH *,int) | | ossl_dh_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const DSA *,int) | | DSA_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const DSA *,int) | | DSA_test_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const DSA *,int) | | ossl_dsa_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const RSA *,int) | | RSA_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const RSA *,int) | | RSA_test_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const RSA *,int) | | ossl_rsa_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const SSL *,int) | | SSL_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const UI *,int) | | UI_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509 *,int) | | X509_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509 *,int) | | X509_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | DH_meth_new | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | DSA_meth_new | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | Jim_StrDupLen | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | RSA_meth_new | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | ftok | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | gethostbyname2 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | parse_yesno | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | res_gethostbyname2 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const void *,int) | | inet6_rth_getaddr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (double,int) | | __ldexp | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (double,int) | | __scalbn | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (double[],int) | | getloadavg | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (fexcept_t *,int) | | fegetexceptflag | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (float,int) | | __ldexpf | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (float,int) | | __scalbnf | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (gzFile,int) | | gzflush | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (gzFile,int) | | gzputc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int *,int) | | X509_PURPOSE_set | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int *,int) | | X509_TRUST_set | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int *,int) | | __lll_unlock_elision | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | BN_security_bits | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | EVP_MD_meth_new | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | EVP_PKEY_meth_new | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | __isctype | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | acttab_alloc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | div | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | inet6_rth_space | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (long double,int) | | __ldexpl | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (netlink_handle *,int) | | __netlink_request | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (ns_msg,int) | | ns_msg_getflag | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (obstack *,int) | | _obstack_newchunk | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (rule *,int) | | Configlist_add | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (rule *,int) | | Configlist_addbasis | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sigset_t *,int) | | sigaddset | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sigset_t *,int) | | sigdelset | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (timespec *,int) | | __timespec_get | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (timespec *,int) | | __timespec_getres | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (uint16_t,int) | | tls1_group_id2nid | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (unsigned char *,int) | | RAND_bytes | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (void *,int) | | DSO_dsobyaddr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (void *,int) | | sqlite3_realloc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (void *const *,int) | | __backtrace_symbols | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIGNUM *,int) | | BN_clear_bit | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIGNUM *,int) | | BN_mask_bits | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIGNUM *,int) | | BN_set_bit | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIGNUM *,int) | | BN_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIGNUM *,int) | | bn_expand2 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIGNUM *,int) | | bn_wexpand | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | BIO_clear_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | BIO_find_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | BIO_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | BIO_set_init | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | BIO_set_retry_reason | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | BIO_set_shutdown | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | TXT_DB_read | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (CURL *,int) | | curl_easy_pause | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (DH *,int) | | DH_clear_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (DH *,int) | | DH_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (DSA *,int) | | DSA_clear_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (DSA *,int) | | DSA_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_default_pbackfail | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_fwide | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_init | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_init_internal | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_new_file_attach | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_new_file_overflow | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_old_init | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_sputbackc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_str_overflow | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_str_pbackfail | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FTS *,int) | | fts_children | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (RSA *,int) | | RSA_clear_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (RSA *,int) | | RSA_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_key_update | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_purpose | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_read_ahead | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_security_level | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_shutdown | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_trust | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_verify_depth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | ssl_md | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509 *,int) | | X509_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509 *,int) | | X509_self_signed | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (_Float128,int) | | __ldexpf128 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (_Float128,int) | | __scalbnf128 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (acttab *,int) | | acttab_insert | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (addrinfo *,int) | | support_format_addrinfo | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (char **,int) | | addrsort | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (char *,int) | | Curl_str2addr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (char *,int) | | PEM_proc_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const BIGNUM *,int) | | BN_get_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const BIO *,int) | | BIO_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const BIO *,int) | | BIO_test_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const DH *,int) | | DH_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const DH *,int) | | DH_test_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const DH *,int) | | ossl_dh_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const DSA *,int) | | DSA_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const DSA *,int) | | DSA_test_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const DSA *,int) | | ossl_dsa_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const RSA *,int) | | RSA_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const RSA *,int) | | RSA_test_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const RSA *,int) | | ossl_rsa_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const SSL *,int) | | SSL_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const UI *,int) | | UI_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509 *,int) | | X509_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509 *,int) | | X509_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | DH_meth_new | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | DSA_meth_new | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | Jim_StrDupLen | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | RSA_meth_new | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | ftok | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | gethostbyname2 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | parse_yesno | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | res_gethostbyname2 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const void *,int) | | inet6_rth_getaddr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (double,int) | | __ldexp | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (double,int) | | __scalbn | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (double[],int) | | getloadavg | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (fexcept_t *,int) | | fegetexceptflag | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (float,int) | | __ldexpf | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (float,int) | | __scalbnf | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (gzFile,int) | | gzflush | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (gzFile,int) | | gzputc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int *,int) | | X509_PURPOSE_set | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int *,int) | | X509_TRUST_set | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int *,int) | | __lll_unlock_elision | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | BN_security_bits | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | EVP_MD_meth_new | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | EVP_PKEY_meth_new | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | __isctype | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | acttab_alloc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | div | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | inet6_rth_space | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (long double,int) | | __ldexpl | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (netlink_handle *,int) | | __netlink_request | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (ns_msg,int) | | ns_msg_getflag | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (obstack *,int) | | _obstack_newchunk | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (rule *,int) | | Configlist_add | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (rule *,int) | | Configlist_addbasis | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sigset_t *,int) | | sigaddset | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sigset_t *,int) | | sigdelset | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (timespec *,int) | | __timespec_get | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (timespec *,int) | | __timespec_getres | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (uint16_t,int) | | tls1_group_id2nid | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (unsigned char *,int) | | RAND_bytes | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (void *,int) | | DSO_dsobyaddr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (void *,int) | | sqlite3_realloc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (void *const *,int) | | __backtrace_symbols | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 0 | -| atl.cpp:1050:5:1050:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | AppendFormat | 0 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | Format | 0 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | Format | 1 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | FormatMessage | 0 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | FormatMessage | 1 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (UINT,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (UINT,...) | CStringT | Format | 1 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (UINT,...) | CStringT | FormatMessage | 1 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (PCXSTR,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (PCXSTR,...) | CStringT | Format | 1 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (PCXSTR,...) | CStringT | FormatMessage | 1 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | AppendFormat | 0 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | Format | 0 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | Format | 1 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | FormatMessage | 0 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | FormatMessage | 1 | -| atl.cpp:1070:9:1070:14 | Insert | (PCXSTR,PCXSTR) | CStringT | Replace | 1 | -| atl.cpp:1070:9:1070:14 | Insert | (const CStringT &,PCXSTR) | | operator+ | 1 | -| atl.cpp:1070:9:1070:14 | Insert | (int,PCXSTR) | CStringT | Insert | 0 | -| atl.cpp:1070:9:1070:14 | Insert | (int,PCXSTR) | CStringT | Insert | 1 | -| atl.cpp:1071:9:1071:14 | Insert | (XCHAR,XCHAR) | CStringT | Replace | 1 | -| atl.cpp:1071:9:1071:14 | Insert | (int,XCHAR) | CStringT | Insert | 0 | -| atl.cpp:1071:9:1071:14 | Insert | (int,XCHAR) | CStringT | Insert | 1 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | ASN1_tag2str | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | Jim_SignalId | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | PKCS12_init | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | Symbol_Nth | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __btowc | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __current_locale_name | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __fdopendir | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __get_errlist | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __get_errname | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __math_invalid_i | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __math_invalidf_i | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __p_class | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __p_rcode | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __p_type | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __pkey_get | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __sigdescr_np | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __strerrordesc_np | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | _tolower | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | _toupper | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | btowc | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | c_tolower | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | c_toupper | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | curlx_sitouz | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | inet6_option_space | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isalnum | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isalpha | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isblank | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | iscntrl | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isdigit | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isgraph | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | islower | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isprint | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | ispunct | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isspace | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isupper | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isxdigit | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | ossl_tolower | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | ossl_toupper | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | sigabbrev_np | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | sqlite3_errstr | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | strerrorname_np | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | support_report_failure | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | svcudp_create | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | tls13_alert_code | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | toascii | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | tolower | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | toupper | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | uabs | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | uv__accept | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_err_name | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_strerror | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | zError | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | Jim_IntHashFunction | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | __sleep | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | curlx_uitous | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | la_version | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | ssl3_get_cipher | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIGNUM *,int) | | BN_clear_bit | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIGNUM *,int) | | BN_mask_bits | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIGNUM *,int) | | BN_set_bit | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIGNUM *,int) | | BN_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIGNUM *,int) | | bn_expand2 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIGNUM *,int) | | bn_wexpand | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | BIO_clear_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | BIO_find_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | BIO_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | BIO_set_init | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | BIO_set_retry_reason | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | BIO_set_shutdown | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | TXT_DB_read | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (CURL *,int) | | curl_easy_pause | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (DH *,int) | | DH_clear_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (DH *,int) | | DH_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (DSA *,int) | | DSA_clear_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (DSA *,int) | | DSA_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_default_pbackfail | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_fwide | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_init | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_init_internal | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_new_file_attach | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_new_file_overflow | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_old_init | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_sputbackc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_str_overflow | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_str_pbackfail | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FTS *,int) | | fts_children | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (RSA *,int) | | RSA_clear_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (RSA *,int) | | RSA_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_key_update | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_purpose | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_read_ahead | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_security_level | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_shutdown | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_trust | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_verify_depth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | ssl_md | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509 *,int) | | X509_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509 *,int) | | X509_self_signed | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (_Float128,int) | | __ldexpf128 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (_Float128,int) | | __scalbnf128 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (acttab *,int) | | acttab_insert | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (addrinfo *,int) | | support_format_addrinfo | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (char **,int) | | addrsort | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (char *,int) | | Curl_str2addr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (char *,int) | | PEM_proc_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const BIGNUM *,int) | | BN_get_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const BIO *,int) | | BIO_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const BIO *,int) | | BIO_test_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const DH *,int) | | DH_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const DH *,int) | | DH_test_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const DH *,int) | | ossl_dh_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const DSA *,int) | | DSA_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const DSA *,int) | | DSA_test_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const DSA *,int) | | ossl_dsa_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const RSA *,int) | | RSA_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const RSA *,int) | | RSA_test_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const RSA *,int) | | ossl_rsa_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const SSL *,int) | | SSL_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const UI *,int) | | UI_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509 *,int) | | X509_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509 *,int) | | X509_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | DH_meth_new | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | DSA_meth_new | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | Jim_StrDupLen | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | RSA_meth_new | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | ftok | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | gethostbyname2 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | parse_yesno | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | res_gethostbyname2 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const void *,int) | | inet6_rth_getaddr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (double,int) | | __ldexp | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (double,int) | | __scalbn | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (double[],int) | | getloadavg | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (fexcept_t *,int) | | fegetexceptflag | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (float,int) | | __ldexpf | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (float,int) | | __scalbnf | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (gzFile,int) | | gzflush | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (gzFile,int) | | gzputc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int *,int) | | X509_PURPOSE_set | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int *,int) | | X509_TRUST_set | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int *,int) | | __lll_unlock_elision | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | BN_security_bits | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | BN_security_bits | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | EVP_MD_meth_new | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | EVP_MD_meth_new | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | EVP_PKEY_meth_new | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | EVP_PKEY_meth_new | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | __isctype | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | __isctype | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | acttab_alloc | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | acttab_alloc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | div | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | div | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | inet6_rth_space | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | inet6_rth_space | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (long double,int) | | __ldexpl | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (netlink_handle *,int) | | __netlink_request | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (ns_msg,int) | | ns_msg_getflag | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (obstack *,int) | | _obstack_newchunk | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (rule *,int) | | Configlist_add | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (rule *,int) | | Configlist_addbasis | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sigset_t *,int) | | sigaddset | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sigset_t *,int) | | sigdelset | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (timespec *,int) | | __timespec_get | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (timespec *,int) | | __timespec_getres | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (uint16_t,int) | | tls1_group_id2nid | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (unsigned char *,int) | | RAND_bytes | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (void *,int) | | DSO_dsobyaddr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (void *,int) | | sqlite3_realloc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (void *const *,int) | | __backtrace_symbols | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:1081:9:1081:15 | Replace | (PCXSTR,PCXSTR) | CStringT | Replace | 0 | -| atl.cpp:1081:9:1081:15 | Replace | (PCXSTR,PCXSTR) | CStringT | Replace | 1 | -| atl.cpp:1081:9:1081:15 | Replace | (const CStringT &,PCXSTR) | | operator+ | 1 | -| atl.cpp:1081:9:1081:15 | Replace | (int,PCXSTR) | CStringT | Insert | 1 | -| atl.cpp:1082:9:1082:15 | Replace | (XCHAR,XCHAR) | CStringT | Replace | 0 | -| atl.cpp:1082:9:1082:15 | Replace | (XCHAR,XCHAR) | CStringT | Replace | 1 | -| atl.cpp:1082:9:1082:15 | Replace | (int,XCHAR) | CStringT | Insert | 1 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | ASN1_tag2str | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | Jim_SignalId | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | PKCS12_init | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | Symbol_Nth | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __btowc | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __current_locale_name | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __fdopendir | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __get_errlist | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __get_errname | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __math_invalid_i | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __math_invalidf_i | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __p_class | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __p_rcode | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __p_type | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __pkey_get | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __sigdescr_np | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __strerrordesc_np | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | _tolower | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | _toupper | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | btowc | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | c_tolower | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | c_toupper | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | curlx_sitouz | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | inet6_option_space | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isalnum | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isalpha | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isblank | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | iscntrl | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isdigit | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isgraph | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | islower | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isprint | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | ispunct | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isspace | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isupper | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isxdigit | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | ossl_tolower | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | ossl_toupper | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | sigabbrev_np | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | sqlite3_errstr | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | strerrorname_np | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | support_report_failure | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | svcudp_create | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | tls13_alert_code | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | toascii | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | tolower | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | toupper | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | uabs | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | uv__accept | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_err_name | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_strerror | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | zError | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | | operator+= | 0 | -| atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:1086:14:1086:26 | SpanIncluding | (PCXSTR) | | operator+= | 0 | -| atl.cpp:1086:14:1086:26 | SpanIncluding | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:1086:14:1086:26 | SpanIncluding | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:1088:15:1088:18 | Trim | (XCHAR) | CStringT | operator= | 0 | -| atl.cpp:1089:15:1089:18 | Trim | (PCXSTR) | | operator+= | 0 | -| atl.cpp:1089:15:1089:18 | Trim | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:1089:15:1089:18 | Trim | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:1091:15:1091:22 | TrimLeft | (XCHAR) | CStringT | operator= | 0 | -| atl.cpp:1092:15:1092:22 | TrimLeft | (PCXSTR) | | operator+= | 0 | -| atl.cpp:1092:15:1092:22 | TrimLeft | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:1092:15:1092:22 | TrimLeft | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:1094:15:1094:23 | TrimRight | (XCHAR) | CStringT | operator= | 0 | -| atl.cpp:1095:15:1095:23 | TrimRight | (PCXSTR) | | operator+= | 0 | -| atl.cpp:1095:15:1095:23 | TrimRight | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:1095:15:1095:23 | TrimRight | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (BIO *,X509 *,unsigned long) | | ossl_x509_print_ex_brief | 2 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (BIO *,X509_CRL *,unsigned long) | | X509_CRL_print_ex | 2 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (BIO *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex | 2 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (const char *,const char *,unsigned long) | | __ngettext | 2 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (unsigned char *,int,unsigned long) | | UTF8_putc | 1 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | -| atl.cpp:1286:5:1286:10 | ComPtr | (const ComPtr &) | ComPtr | ComPtr | 0 | -| atl.cpp:1286:5:1286:10 | ComPtr | (const ComPtr &) | ComPtr | operator= | 0 | -| atl.cpp:1287:5:1287:10 | ComPtr | (ComPtr &&) | ComPtr | ComPtr | 0 | -| atl.cpp:1287:5:1287:10 | ComPtr | (ComPtr &&) | ComPtr | operator= | 0 | -| atl.cpp:1290:5:1290:10 | ComPtr | (T *) | ComPtr | ComPtr | 0 | -| atl.cpp:1290:5:1290:10 | ComPtr | (T *) | ComPtr | ComPtr | 0 | -| atl.cpp:1290:5:1290:10 | ComPtr | (U *) | ComPtr | operator= | 0 | -| atl.cpp:1290:5:1290:10 | ComPtr | (U *) | ComPtr | operator= | 0 | -| atl.cpp:1301:13:1301:18 | CopyTo | (T **) | ComPtr | CopyTo | 0 | -| atl.cpp:1303:13:1303:18 | CopyTo | (Curl_easy *,void **) | | Curl_resolver_init | 1 | -| atl.cpp:1303:13:1303:18 | CopyTo | (REFIID,void **) | ComPtr | CopyTo | 0 | -| atl.cpp:1303:13:1303:18 | CopyTo | (REFIID,void **) | ComPtr | CopyTo | 1 | -| atl.cpp:1303:13:1303:18 | CopyTo | (size_t,void **) | | __libc_alloc_buffer_allocate | 1 | -| atl.cpp:1306:13:1306:18 | CopyTo | (T **) | ComPtr | CopyTo | 0 | -| atl.cpp:1328:13:1328:21 | operator= | (T *) | ComPtr | operator= | 0 | -| atl.cpp:1330:13:1330:21 | operator= | (T *) | ComPtr | ComPtr | 0 | -| atl.cpp:1330:13:1330:21 | operator= | (U *) | ComPtr | operator= | 0 | -| atl.cpp:1331:13:1331:21 | operator= | (const ComPtr &) | ComPtr | ComPtr | 0 | -| atl.cpp:1331:13:1331:21 | operator= | (const ComPtr &) | ComPtr | operator= | 0 | -| atl.cpp:1333:13:1333:21 | operator= | (const ComPtr &) | ComPtr | ComPtr | 0 | -| atl.cpp:1333:13:1333:21 | operator= | (const ComPtr &) | ComPtr | operator= | 0 | -| atl.cpp:1334:13:1334:21 | operator= | (ComPtr &&) | ComPtr | ComPtr | 0 | -| atl.cpp:1334:13:1334:21 | operator= | (ComPtr &&) | ComPtr | operator= | 0 | -| atl.cpp:1336:13:1336:21 | operator= | (ComPtr &&) | ComPtr | ComPtr | 0 | -| atl.cpp:1336:13:1336:21 | operator= | (ComPtr &&) | ComPtr | operator= | 0 | -| bsd.cpp:12:5:12:10 | accept | (CURLM *,curl_socket_t,int *) | | curl_multi_socket | 2 | -| bsd.cpp:12:5:12:10 | accept | (Curl_easy *,ssize_t *,int *) | | Curl_GetFTPResponse | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_CipherFinal | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_CipherFinal_ex | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_DecryptFinal | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_DecryptFinal_ex | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_EncryptFinal | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_EncryptFinal_ex | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_OpenFinal | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_SealFinal | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_ENCODE_CTX *,unsigned char *,int *) | | EVP_DecodeFinal | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_ENCODE_CTX *,unsigned char *,int *) | | EVP_EncodeFinal | 2 | -| bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_DictPairs | 2 | -| bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetBoolFromExpr | 2 | -| bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetBoolean | 2 | -| bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetIndex | 2 | -| bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetReturnCode | 2 | -| bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetSourceInfo | 2 | -| bsd.cpp:12:5:12:10 | accept | (LIBSSH2_SESSION *,size_t *,int *) | | libssh2_session_hostkey | 2 | -| bsd.cpp:12:5:12:10 | accept | (OPENSSL_STACK *,const void *,int *) | | OPENSSL_sk_find_all | 2 | -| bsd.cpp:12:5:12:10 | accept | (OSSL_DECODER *,const char *,int *) | | ossl_decoder_fast_is_a | 2 | -| bsd.cpp:12:5:12:10 | accept | (OSSL_LIB_CTX *,uint32_t,int *) | | ossl_rand_uniform_uint32 | 2 | -| bsd.cpp:12:5:12:10 | accept | (OSSL_PROVIDER *,size_t,int *) | | ossl_provider_test_operation_bit | 2 | -| bsd.cpp:12:5:12:10 | accept | (PACKET *,uint64_t *,int *) | | ossl_quic_wire_peek_frame_header | 2 | -| bsd.cpp:12:5:12:10 | accept | (PROV_DRBG *,OSSL_PARAM[],int *) | | ossl_drbg_get_ctx_params_no_lock | 2 | -| bsd.cpp:12:5:12:10 | accept | (QUIC_RSTREAM *,size_t *,int *) | | ossl_quic_rstream_available | 2 | -| bsd.cpp:12:5:12:10 | accept | (_Float128,_Float128,int *) | | __remquof128 | 2 | -| bsd.cpp:12:5:12:10 | accept | (const BIGNUM *,const BIGNUM *,int *) | | ossl_ffc_validate_private_key | 2 | -| bsd.cpp:12:5:12:10 | accept | (const DH *,const BIGNUM *,int *) | | DH_check_pub_key | 2 | -| bsd.cpp:12:5:12:10 | accept | (const DH *,const BIGNUM *,int *) | | ossl_dh_check_priv_key | 2 | -| bsd.cpp:12:5:12:10 | accept | (const DH *,const BIGNUM *,int *) | | ossl_dh_check_pub_key_partial | 2 | -| bsd.cpp:12:5:12:10 | accept | (const DSA *,const BIGNUM *,int *) | | ossl_dsa_check_priv_key | 2 | -| bsd.cpp:12:5:12:10 | accept | (const DSA *,const BIGNUM *,int *) | | ossl_dsa_check_pub_key | 2 | -| bsd.cpp:12:5:12:10 | accept | (const DSA *,const BIGNUM *,int *) | | ossl_dsa_check_pub_key_partial | 2 | -| bsd.cpp:12:5:12:10 | accept | (const DSA *,int,int *) | | ossl_dsa_check_params | 2 | -| bsd.cpp:12:5:12:10 | accept | (const FFC_PARAMS *,const BIGNUM *,int *) | | ossl_ffc_validate_public_key | 2 | -| bsd.cpp:12:5:12:10 | accept | (const FFC_PARAMS *,const BIGNUM *,int *) | | ossl_ffc_validate_public_key_partial | 2 | -| bsd.cpp:12:5:12:10 | accept | (const SSL *,const SSL_CTX *,int *) | | ssl_get_security_level_bits | 2 | -| bsd.cpp:12:5:12:10 | accept | (const X509 *,EVP_MD **,int *) | | X509_digest_sig | 2 | -| bsd.cpp:12:5:12:10 | accept | (const char *,const OPT_PAIR *,int *) | | opt_pair | 2 | -| bsd.cpp:12:5:12:10 | accept | (const char *,const char *,int *) | | __gconv_compare_alias_cache | 2 | -| bsd.cpp:12:5:12:10 | accept | (const res_sym *,const char *,int *) | | __sym_ston | 2 | -| bsd.cpp:12:5:12:10 | accept | (const res_sym *,int,int *) | | __sym_ntop | 2 | -| bsd.cpp:12:5:12:10 | accept | (const res_sym *,int,int *) | | __sym_ntos | 2 | -| bsd.cpp:12:5:12:10 | accept | (const unsigned char **,unsigned int,int *) | | ossl_b2i | 2 | -| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 1 | -| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 2 | -| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 1 | -| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 2 | -| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 1 | -| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 2 | -| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 1 | -| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 2 | -| bsd.cpp:12:5:12:10 | accept | (double,double,int *) | | __remquo | 2 | -| bsd.cpp:12:5:12:10 | accept | (float,float,int *) | | __remquof | 2 | -| bsd.cpp:12:5:12:10 | accept | (int,const char **,int *) | | sqlite3_keyword_name | 2 | -| bsd.cpp:12:5:12:10 | accept | (int,int,int *) | | ssl_set_version_bound | 2 | -| bsd.cpp:12:5:12:10 | accept | (long double,long double,int *) | | __remquol | 2 | -| bsd.cpp:12:5:12:10 | accept | (pthread_mutex_t *,int,int *) | | __pthread_mutex_setprioceiling | 2 | -| bsd.cpp:12:5:12:10 | accept | (size_t,size_t *,int *) | | __malloc_hugepage_config | 2 | -| bsd.cpp:12:5:12:10 | accept | (uv_handle_t *,int,int *) | | uv__socket_sockopt | 2 | -| bsd.cpp:12:5:12:10 | accept | (z_streamp,unsigned int *,int *) | | deflatePending | 2 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ASN1_STRING_type_new | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ASN1_tag2bit | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ASN1_tag2str | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | EVP_PKEY_asn1_get0 | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | Jim_ReturnCode | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | Jim_SignalId | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | OBJ_nid2ln | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | OBJ_nid2obj | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | OBJ_nid2sn | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | OSSL_STORE_INFO_type_string | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | OSSL_trace_get_category_name | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | PKCS12_init | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | Symbol_Nth | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_PURPOSE_get0 | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_PURPOSE_get_by_id | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_TRUST_get0 | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_TRUST_get_by_id | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __btowc | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __current_locale_name | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __fdopendir | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __get_errlist | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __get_errname | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __math_invalid_i | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __math_invalidf_i | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __p_class | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __p_rcode | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __p_type | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __pkey_get | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __sigdescr_np | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __strerrordesc_np | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | _tolower | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | _toupper | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | btowc | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | c_tolower | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | c_toupper | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | curlx_sitouz | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | evp_pkey_type2name | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | inet6_option_space | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isalnum | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isalpha | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isblank | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | iscntrl | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isdigit | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isgraph | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | islower | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isprint | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ispunct | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isspace | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isupper | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isxdigit | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ossl_cmp_bodytype_to_string | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ossl_tolower | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ossl_toupper | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | sigabbrev_np | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | sqlite3_compileoption_get | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | sqlite3_errstr | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | strerrorname_np | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | support_report_failure | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | svcudp_create | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | tls13_alert_code | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | toascii | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | tolower | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | toupper | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uabs | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv__accept | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_err_name | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_get_osfhandle | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_strerror | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_translate_sys_error | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | zError | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | __pthread_cleanup_class | __setdoit | 0 | -| constructor_delegation.cpp:9:2:9:8 | MyValue | (Curl_easy *,bool) | | Curl_creader_set_rewind | 1 | -| constructor_delegation.cpp:9:2:9:8 | MyValue | (Curl_easy *,bool) | | Curl_set_in_callback | 1 | -| constructor_delegation.cpp:9:2:9:8 | MyValue | (curl_socket_t[2],bool) | | Curl_eventfd | 1 | -| constructor_delegation.cpp:9:2:9:8 | MyValue | (support_fuse *,bool) | | support_fuse_filter_forget | 1 | -| constructor_delegation.cpp:9:2:9:8 | MyValue | (void *,bool) | | _dl_allocate_tls_init | 1 | -| constructor_delegation.cpp:9:2:9:8 | MyValue | (void *,bool) | | _dl_deallocate_tls | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | BN_clear_bit | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | BN_mask_bits | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | BN_set_bit | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | BN_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | bn_expand2 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | bn_wexpand | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | BIO_clear_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | BIO_find_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | BIO_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | BIO_set_init | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | BIO_set_retry_reason | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | BIO_set_shutdown | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | TXT_DB_read | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (CURL *,int) | | curl_easy_pause | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (DH *,int) | | DH_clear_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (DH *,int) | | DH_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (DSA *,int) | | DSA_clear_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (DSA *,int) | | DSA_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_default_pbackfail | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_fwide | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_init | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_init_internal | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_new_file_attach | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_new_file_overflow | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_old_init | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_sputbackc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_str_overflow | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_str_pbackfail | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FTS *,int) | | fts_children | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (RSA *,int) | | RSA_clear_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (RSA *,int) | | RSA_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_key_update | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_purpose | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_read_ahead | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_security_level | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_shutdown | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_trust | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_verify_depth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | ssl_md | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509 *,int) | | X509_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509 *,int) | | X509_self_signed | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (_Float128,int) | | __ldexpf128 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (_Float128,int) | | __scalbnf128 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (acttab *,int) | | acttab_insert | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (addrinfo *,int) | | support_format_addrinfo | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (char **,int) | | addrsort | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (char *,int) | | Curl_str2addr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (char *,int) | | PEM_proc_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (char,int) | CStringT | CStringT | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const BIGNUM *,int) | | BN_get_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const BIO *,int) | | BIO_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const BIO *,int) | | BIO_test_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const DH *,int) | | DH_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const DH *,int) | | DH_test_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const DH *,int) | | ossl_dh_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const DSA *,int) | | DSA_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const DSA *,int) | | DSA_test_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const DSA *,int) | | ossl_dsa_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const RSA *,int) | | RSA_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const RSA *,int) | | RSA_test_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const RSA *,int) | | ossl_rsa_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const SSL *,int) | | SSL_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const UI *,int) | | UI_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509 *,int) | | X509_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509 *,int) | | X509_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const XCHAR *,int) | CStringT | CStringT | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const YCHAR *,int) | CStringT | CStringT | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | DH_meth_new | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | DSA_meth_new | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | Jim_StrDupLen | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | RSA_meth_new | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | ftok | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | gethostbyname2 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | parse_yesno | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | res_gethostbyname2 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const void *,int) | | inet6_rth_getaddr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (double,int) | | __ldexp | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (double,int) | | __scalbn | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (double[],int) | | getloadavg | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (fexcept_t *,int) | | fegetexceptflag | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (float,int) | | __ldexpf | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (float,int) | | __scalbnf | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (gzFile,int) | | gzflush | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (gzFile,int) | | gzputc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int *,int) | | X509_PURPOSE_set | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int *,int) | | X509_TRUST_set | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int *,int) | | __lll_unlock_elision | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | BN_security_bits | 0 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | BN_security_bits | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | EVP_MD_meth_new | 0 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | EVP_MD_meth_new | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | EVP_PKEY_meth_new | 0 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | EVP_PKEY_meth_new | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | __isctype | 0 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | __isctype | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | acttab_alloc | 0 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | acttab_alloc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | div | 0 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | div | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | inet6_rth_space | 0 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | inet6_rth_space | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (long double,int) | | __ldexpl | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (netlink_handle *,int) | | __netlink_request | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (ns_msg,int) | | ns_msg_getflag | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (obstack *,int) | | _obstack_newchunk | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (rule *,int) | | Configlist_add | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (rule *,int) | | Configlist_addbasis | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sigset_t *,int) | | sigaddset | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sigset_t *,int) | | sigdelset | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (timespec *,int) | | __timespec_get | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (timespec *,int) | | __timespec_getres | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (uint16_t,int) | | tls1_group_id2nid | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned char *,int) | | RAND_bytes | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (void *,int) | | DSO_dsobyaddr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (void *,int) | | sqlite3_realloc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (void *const *,int) | | __backtrace_symbols | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (wchar_t,int) | CStringT | CStringT | 1 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,CURLcode,bool) | | Curl_http_done | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,curltime *,bool) | | Curl_timeleft | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (GlobalConfig *,timeval *,bool) | | progress_meter | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (link_map *,Dl_serinfo *,bool) | | _dl_rtld_di_serinfo | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (link_map *,link_map_public *,bool) | | _dl_close_worker | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (size_t,char *[],bool) | | add_locales_to_archive | 2 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | BN_clear_bit | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | BN_mask_bits | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | BN_set_bit | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | BN_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | bn_expand2 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | bn_wexpand | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | BIO_clear_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | BIO_find_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | BIO_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | BIO_set_init | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | BIO_set_retry_reason | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | BIO_set_shutdown | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | TXT_DB_read | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (CURL *,int) | | curl_easy_pause | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DH *,int) | | DH_clear_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DH *,int) | | DH_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DSA *,int) | | DSA_clear_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DSA *,int) | | DSA_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_default_pbackfail | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_fwide | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_init | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_init_internal | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_new_file_attach | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_new_file_overflow | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_old_init | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_sputbackc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_str_overflow | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_str_pbackfail | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FTS *,int) | | fts_children | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (RSA *,int) | | RSA_clear_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (RSA *,int) | | RSA_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_key_update | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_purpose | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_read_ahead | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_security_level | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_shutdown | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_trust | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_verify_depth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | ssl_md | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509 *,int) | | X509_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509 *,int) | | X509_self_signed | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (_Float128,int) | | __ldexpf128 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (_Float128,int) | | __scalbnf128 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (acttab *,int) | | acttab_insert | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (addrinfo *,int) | | support_format_addrinfo | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char **,int) | | addrsort | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char *,int) | | Curl_str2addr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char *,int) | | PEM_proc_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char,int) | CStringT | CStringT | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const BIGNUM *,int) | | BN_get_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const BIO *,int) | | BIO_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const BIO *,int) | | BIO_test_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const DH *,int) | | DH_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const DH *,int) | | DH_test_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const DH *,int) | | ossl_dh_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const DSA *,int) | | DSA_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const DSA *,int) | | DSA_test_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const DSA *,int) | | ossl_dsa_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const RSA *,int) | | RSA_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const RSA *,int) | | RSA_test_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const RSA *,int) | | ossl_rsa_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const SSL *,int) | | SSL_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const UI *,int) | | UI_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509 *,int) | | X509_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509 *,int) | | X509_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const XCHAR *,int) | CStringT | CStringT | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const YCHAR *,int) | CStringT | CStringT | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | DH_meth_new | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | DSA_meth_new | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | Jim_StrDupLen | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | RSA_meth_new | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | ftok | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | gethostbyname2 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | parse_yesno | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | res_gethostbyname2 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const void *,int) | | inet6_rth_getaddr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (double,int) | | __ldexp | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (double,int) | | __scalbn | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (double[],int) | | getloadavg | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (fexcept_t *,int) | | fegetexceptflag | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (float,int) | | __ldexpf | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (float,int) | | __scalbnf | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (gzFile,int) | | gzflush | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (gzFile,int) | | gzputc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int *,int) | | X509_PURPOSE_set | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int *,int) | | X509_TRUST_set | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int *,int) | | __lll_unlock_elision | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | BN_security_bits | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | EVP_MD_meth_new | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | EVP_PKEY_meth_new | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | __isctype | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | acttab_alloc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | div | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | inet6_rth_space | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (long double,int) | | __ldexpl | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (netlink_handle *,int) | | __netlink_request | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ns_msg,int) | | ns_msg_getflag | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (obstack *,int) | | _obstack_newchunk | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (rule *,int) | | Configlist_add | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (rule *,int) | | Configlist_addbasis | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sigset_t *,int) | | sigaddset | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sigset_t *,int) | | sigdelset | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (timespec *,int) | | __timespec_get | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (timespec *,int) | | __timespec_getres | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (uint16_t,int) | | tls1_group_id2nid | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned char *,int) | | RAND_bytes | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (void *,int) | | DSO_dsobyaddr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (void *,int) | | sqlite3_realloc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (void *const *,int) | | __backtrace_symbols | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (wchar_t,int) | CStringT | CStringT | 1 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ASN1_STRING_type_new | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ASN1_tag2bit | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ASN1_tag2str | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | EVP_PKEY_asn1_get0 | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | Jim_ReturnCode | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | Jim_SignalId | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | OBJ_nid2ln | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | OBJ_nid2obj | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | OBJ_nid2sn | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | OSSL_STORE_INFO_type_string | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | OSSL_trace_get_category_name | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | PKCS12_init | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | Symbol_Nth | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_PURPOSE_get0 | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_PURPOSE_get_by_id | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_TRUST_get0 | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_TRUST_get_by_id | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __btowc | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __current_locale_name | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __fdopendir | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __get_errlist | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __get_errname | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __math_invalid_i | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __math_invalidf_i | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __p_class | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __p_rcode | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __p_type | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __pkey_get | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __sigdescr_np | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __strerrordesc_np | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | _tolower | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | _toupper | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | btowc | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | c_tolower | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | c_toupper | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | curlx_sitouz | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | evp_pkey_type2name | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | inet6_option_space | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isalnum | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isalpha | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isblank | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | iscntrl | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isdigit | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isgraph | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | islower | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isprint | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ispunct | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isspace | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isupper | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isxdigit | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ossl_cmp_bodytype_to_string | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ossl_tolower | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ossl_toupper | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | sigabbrev_np | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | sqlite3_compileoption_get | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | sqlite3_errstr | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | strerrorname_np | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | support_report_failure | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | svcudp_create | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | tls13_alert_code | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | toascii | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | tolower | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | toupper | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uabs | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv__accept | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_err_name | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_get_osfhandle | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_strerror | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_translate_sys_error | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | zError | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | __pthread_cleanup_class | __setdoit | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ASN1_STRING_type_new | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ASN1_tag2bit | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ASN1_tag2str | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | EVP_PKEY_asn1_get0 | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | Jim_ReturnCode | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | Jim_SignalId | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | OBJ_nid2ln | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | OBJ_nid2obj | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | OBJ_nid2sn | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | OSSL_STORE_INFO_type_string | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | OSSL_trace_get_category_name | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | PKCS12_init | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | Symbol_Nth | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_PURPOSE_get0 | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_PURPOSE_get_by_id | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_TRUST_get0 | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_TRUST_get_by_id | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __btowc | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __current_locale_name | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __fdopendir | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __get_errlist | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __get_errname | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __math_invalid_i | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __math_invalidf_i | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __p_class | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __p_rcode | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __p_type | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __pkey_get | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __sigdescr_np | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __strerrordesc_np | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | _tolower | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | _toupper | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | btowc | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | c_tolower | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | c_toupper | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | curlx_sitouz | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | evp_pkey_type2name | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | inet6_option_space | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isalnum | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isalpha | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isblank | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | iscntrl | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isdigit | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isgraph | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | islower | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isprint | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ispunct | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isspace | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isupper | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isxdigit | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ossl_cmp_bodytype_to_string | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ossl_tolower | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ossl_toupper | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | sigabbrev_np | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | sqlite3_compileoption_get | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | sqlite3_errstr | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | strerrorname_np | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | support_report_failure | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | svcudp_create | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | tls13_alert_code | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | toascii | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | tolower | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | toupper | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uabs | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv__accept | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_err_name | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_get_osfhandle | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_strerror | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_translate_sys_error | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | zError | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | __pthread_cleanup_class | __setdoit | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | Curl_cpool_upkeep | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | __dlclose | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | __libc_dlclose | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | __libc_free | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | __malloc_usable_size | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | _dl_allocate_tls | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | _dl_close | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | malloc_usable_size | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | ossl_kdf_data_new | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | support_shared_free | 0 | -| file://:0:0:0:0 | operator new | (unsigned long) | | BN_num_bits_word | 0 | -| file://:0:0:0:0 | operator new | (unsigned long) | | BUF_MEM_new_ex | 0 | -| file://:0:0:0:0 | operator new | (unsigned long) | | curlx_ultouc | 0 | -| file://:0:0:0:0 | operator new | (unsigned long) | | curlx_ultous | 0 | -| file://:0:0:0:0 | operator new | (unsigned long) | | next_prime | 0 | -| format.cpp:5:5:5:12 | snprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 2 | -| format.cpp:5:5:5:12 | snprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 3 | -| format.cpp:5:5:5:12 | snprintf | (char **,int,const char *,...) | | ___asprintf_chk | 2 | -| format.cpp:5:5:5:12 | snprintf | (char **,int,const char *,...) | | ___asprintf_chk | 3 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 0 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 1 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 2 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 3 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | __strfmon | 0 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | __strfmon | 1 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | __strfmon | 2 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | __strfmon | 3 | -| format.cpp:5:5:5:12 | snprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 2 | -| format.cpp:5:5:5:12 | snprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 3 | -| format.cpp:5:5:5:12 | snprintf | (ucontext_t *,..(*)(..),int,...) | | __makecontext | 3 | -| format.cpp:6:5:6:11 | sprintf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | -| format.cpp:6:5:6:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 | -| format.cpp:6:5:6:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 | -| format.cpp:6:5:6:11 | sprintf | (char **,const char *,...) | | ___asprintf | 1 | -| format.cpp:6:5:6:11 | sprintf | (char **,const char *,...) | | ___asprintf | 2 | -| format.cpp:6:5:6:11 | sprintf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | -| format.cpp:7:5:7:12 | swprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 3 | -| format.cpp:7:5:7:12 | swprintf | (char **,int,const char *,...) | | ___asprintf_chk | 3 | -| format.cpp:7:5:7:12 | swprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 3 | -| format.cpp:7:5:7:12 | swprintf | (char *,size_t,const char *,...) | | __strfmon | 3 | -| format.cpp:7:5:7:12 | swprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 3 | -| format.cpp:7:5:7:12 | swprintf | (ucontext_t *,..(*)(..),int,...) | | __makecontext | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_bio_CMS | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,DH **,pem_password_cb *,void *) | | PEM_read_bio_DHparams | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSAPrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSA_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSAparams | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,EC_GROUP **,pem_password_cb *,void *) | | PEM_read_bio_ECPKParameters | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_bio_ECPrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_bio_EC_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_bio_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_bio_PrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,EVP_PKEY **,pem_password_cb *,void *) | | d2i_PKCS8PrivateKey_bio | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,NETSCAPE_CERT_SEQUENCE **,pem_password_cb *,void *) | | PEM_read_bio_NETSCAPE_CERT_SEQUENCE | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,PKCS7 **,pem_password_cb *,void *) | | PEM_read_bio_PKCS7 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,PKCS8_PRIV_KEY_INFO **,pem_password_cb *,void *) | | PEM_read_bio_PKCS8_PRIV_KEY_INFO | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,RSA **,pem_password_cb *,void *) | | PEM_read_bio_RSAPrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,RSA **,pem_password_cb *,void *) | | PEM_read_bio_RSAPublicKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,RSA **,pem_password_cb *,void *) | | PEM_read_bio_RSA_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,SSL_SESSION **,pem_password_cb *,void *) | | PEM_read_bio_SSL_SESSION | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509 **,pem_password_cb *,void *) | | PEM_read_bio_X509 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509 **,pem_password_cb *,void *) | | PEM_read_bio_X509_AUX | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509_ACERT **,pem_password_cb *,void *) | | PEM_read_bio_X509_ACERT | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509_CRL **,pem_password_cb *,void *) | | PEM_read_bio_X509_CRL | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509_PUBKEY **,pem_password_cb *,void *) | | PEM_read_bio_X509_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509_REQ **,pem_password_cb *,void *) | | PEM_read_bio_X509_REQ | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509_SIG **,pem_password_cb *,void *) | | PEM_read_bio_PKCS8 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,size_t,..(*)(..),void *) | | ossl_quic_demux_new | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read_bio | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (DSO *,int,long,void *) | | DSO_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (EVP_CIPHER_CTX *,int,int,void *) | | EVP_CIPHER_CTX_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_CMS | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,DH **,pem_password_cb *,void *) | | PEM_read_DHparams | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,DSA **,pem_password_cb *,void *) | | PEM_read_DSAPrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,DSA **,pem_password_cb *,void *) | | PEM_read_DSA_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,DSA **,pem_password_cb *,void *) | | PEM_read_DSAparams | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,EC_GROUP **,pem_password_cb *,void *) | | PEM_read_ECPKParameters | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_ECPrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_EC_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_PrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,EVP_PKEY **,pem_password_cb *,void *) | | d2i_PKCS8PrivateKey_fp | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,NETSCAPE_CERT_SEQUENCE **,pem_password_cb *,void *) | | PEM_read_NETSCAPE_CERT_SEQUENCE | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,PKCS7 **,pem_password_cb *,void *) | | PEM_read_PKCS7 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,PKCS8_PRIV_KEY_INFO **,pem_password_cb *,void *) | | PEM_read_PKCS8_PRIV_KEY_INFO | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,RSA **,pem_password_cb *,void *) | | PEM_read_RSAPrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,RSA **,pem_password_cb *,void *) | | PEM_read_RSAPublicKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,RSA **,pem_password_cb *,void *) | | PEM_read_RSA_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,SSL_SESSION **,pem_password_cb *,void *) | | PEM_read_SSL_SESSION | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,X509 **,pem_password_cb *,void *) | | PEM_read_X509 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,X509 **,pem_password_cb *,void *) | | PEM_read_X509_AUX | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,X509_ACERT **,pem_password_cb *,void *) | | PEM_read_X509_ACERT | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,X509_CRL **,pem_password_cb *,void *) | | PEM_read_X509_CRL | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,X509_PUBKEY **,pem_password_cb *,void *) | | PEM_read_X509_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,X509_REQ **,pem_password_cb *,void *) | | PEM_read_X509_REQ | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,X509_SIG **,pem_password_cb *,void *) | | PEM_read_PKCS8 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,int,const char *,va_list) | | ___vfprintf_chk | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,int,const char *,va_list) | | ___vfprintf_chk | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (MD5_SHA1_CTX *,int,int,void *) | | ossl_md5_sha1_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (OCB128_CONTEXT *,OCB128_CONTEXT *,void *,void *) | | CRYPTO_ocb128_copy_ctx | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (OPENSSL_LHASH *,OPENSSL_LH_DOALL_FUNCARG_THUNK,OPENSSL_LH_DOALL_FUNCARG,void *) | | OPENSSL_LH_doall_arg_thunk | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (OSSL_PROVIDER *,int,..(*)(..),void *) | | evp_names_do_all | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (OSSL_QTX *,ossl_mutate_packet_cb,ossl_finish_mutate_cb,void *) | | ossl_qtx_set_mutator | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (QUIC_CHANNEL *,ossl_mutate_packet_cb,ossl_finish_mutate_cb,void *) | | ossl_quic_channel_set_mutator | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (QUIC_RXFC *,uint64_t,..(*)(..),void *) | | ossl_quic_rxfc_init_standalone | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SHA_CTX *,int,int,void *) | | ossl_sha1_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL *,int,long,void *) | | SSL_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL *,int,long,void *) | | dtls1_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL *,int,long,void *) | | ossl_quic_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL *,int,long,void *) | | ssl3_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL *,ossl_statem_mutate_handshake_cb,ossl_statem_finish_mutate_handshake_cb,void *) | | ossl_statem_set_mutator | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL_CTX *,SSL_CTX_generate_session_ticket_fn,SSL_CTX_decrypt_session_ticket_fn,void *) | | SSL_CTX_set_session_ticket_cb | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL_CTX *,int,long,void *) | | SSL_CTX_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL_CTX *,int,long,void *) | | ossl_quic_ctx_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL_CTX *,int,long,void *) | | ssl3_ctx_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (X509_ALGOR *,ASN1_OBJECT *,int,void *) | | X509_ALGOR_set0 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,int,int,void *) | | PEM_def_callback | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,int,int,void *) | | ossl_pw_pem_password | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,int,int,void *) | | ossl_pw_pvk_password | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 0 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 1 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | ___vsnprintf | 0 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | ___vsnprintf | 1 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | ___vsnprintf | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | ___vsnprintf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 0 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 1 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | Curl_mime_read | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | tool_header_cb | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | tool_read_cb | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (const OSSL_NAMEMAP *,int,..(*)(..),void *) | | ossl_namemap_doall_names | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (const char *,const char *,__gnuc_va_list,va_list) | | _IO_vsscanf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (const char *,const char *__restrict__,__gnuc_va_list,va_list) | | __isoc23_vscanf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (const char *,const char *__restrict__,__gnuc_va_list,va_list) | | __isoc99_vscanf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (const char *,int,void *,void *) | | support_readdir_r_check | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (const wchar_t *,const wchar_t *__restrict__,__gnuc_va_list,va_list) | | __isoc23_vwscanf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (const wchar_t *,const wchar_t *__restrict__,__gnuc_va_list,va_list) | | __isoc99_vwscanf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (hash_table *,const void *,size_t,void *) | | insert_entry | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (int,int,const char *,va_list) | | ERR_vset_error | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (int,int,const char *,va_list) | | ERR_vset_error | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (int,unsigned long,..(*)(..),void *) | | RSA_generate_key | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_recover_init_sql | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_rtree_geometry_callback | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,const sqlite3_module *,void *) | | sqlite3_create_module | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,int,void *) | | sqlite3_file_control | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,int,..(*)(..),void *) | | sqlite3_progress_handler | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,unsigned int,..(*)(..),void *) | | sqlite3_trace_v2 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (void *,const char *,const char *,void *) | | _dl_vsym | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (void *,const char *,const char *,void *) | | _dl_vsym | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (wchar_t *,size_t,const wchar_t *,va_list) | | __vswprintf | 3 | -| format.cpp:16:5:16:13 | mysprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 2 | -| format.cpp:16:5:16:13 | mysprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 3 | -| format.cpp:16:5:16:13 | mysprintf | (char **,int,const char *,...) | | ___asprintf_chk | 2 | -| format.cpp:16:5:16:13 | mysprintf | (char **,int,const char *,...) | | ___asprintf_chk | 3 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 0 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 1 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 2 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 3 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | __strfmon | 0 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | __strfmon | 1 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | __strfmon | 2 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | __strfmon | 3 | -| format.cpp:16:5:16:13 | mysprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 2 | -| format.cpp:16:5:16:13 | mysprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 3 | -| format.cpp:16:5:16:13 | mysprintf | (ucontext_t *,..(*)(..),int,...) | | __makecontext | 3 | -| format.cpp:28:5:28:10 | sscanf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | -| format.cpp:28:5:28:10 | sscanf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 | -| format.cpp:28:5:28:10 | sscanf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 | -| format.cpp:28:5:28:10 | sscanf | (char **,const char *,...) | | ___asprintf | 1 | -| format.cpp:28:5:28:10 | sscanf | (char **,const char *,...) | | ___asprintf | 2 | -| format.cpp:28:5:28:10 | sscanf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | BIO_gethostbyname | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | Curl_copy_header_value | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | Curl_get_scheme_handler | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | Curl_getdate_capped | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | Jim_StrDup | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | OPENSSL_LH_strhash | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | Strsafe | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | Symbol_new | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | UI_create_method | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | X509V3_parse_list | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | X509_LOOKUP_meth_new | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __basename | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __gconv_find_shlib | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __gettext | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __hash_string | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __nss_action_parse | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __strdup | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __textdomain | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __tzset_parse_tz | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __tzstring | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | a2i_IPADDRESS | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | a2i_IPADDRESS_NC | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | a64l | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | charmap_opendir | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | ether_aton | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | getdate | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | inetstr2int | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | last_component | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | opt_path_end | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | opt_progname | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | ossl_lh_strcasehash | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | repertoire_read | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | res_gethostbyname | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | sgetsgent | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | sgetspent | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | strhash | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | uc_script_byname | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | uv__strdup | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | xstrdup | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | SRP_VBASE_new | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | _IO_gets | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | __mktemp | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | __nis_default_group | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | __nis_default_owner | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | __nis_default_ttl | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | __xpg_basename | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | ctermid | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | cuserid | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | defossilize | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | des_setparity | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | dirname | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | getwd | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | make_uppercase | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | mkdtemp | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | next_item | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | strfry | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | CStringT | CStringT | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | BIO_gethostbyname | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | Curl_copy_header_value | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | Curl_get_scheme_handler | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | Curl_getdate_capped | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | Jim_StrDup | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | OPENSSL_LH_strhash | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | Strsafe | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | Symbol_new | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | UI_create_method | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | X509V3_parse_list | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | X509_LOOKUP_meth_new | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __basename | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __gconv_find_shlib | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __gettext | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __hash_string | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __nss_action_parse | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __strdup | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __textdomain | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __tzset_parse_tz | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __tzstring | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | a2i_IPADDRESS | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | a2i_IPADDRESS_NC | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | a64l | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | charmap_opendir | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | ether_aton | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | getdate | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | inetstr2int | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | last_component | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | opt_path_end | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | opt_progname | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | ossl_lh_strcasehash | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | repertoire_read | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | res_gethostbyname | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | sgetsgent | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | sgetspent | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | strhash | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | uc_script_byname | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | uv__strdup | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | xstrdup | 0 | -| map.cpp:442:7:442:19 | indirect_sink | (int *) | | rresvport | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ASN1_STRING_type_new | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ASN1_tag2bit | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ASN1_tag2str | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | EVP_PKEY_asn1_get0 | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | Jim_ReturnCode | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | Jim_SignalId | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | OBJ_nid2ln | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | OBJ_nid2obj | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | OBJ_nid2sn | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | OSSL_STORE_INFO_type_string | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | OSSL_trace_get_category_name | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | PKCS12_init | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | Symbol_Nth | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_PURPOSE_get0 | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_PURPOSE_get_by_id | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_TRUST_get0 | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_TRUST_get_by_id | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __btowc | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __current_locale_name | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __fdopendir | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __get_errlist | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __get_errname | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __math_invalid_i | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __math_invalidf_i | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __p_class | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __p_rcode | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __p_type | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __pkey_get | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __sigdescr_np | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __strerrordesc_np | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | _tolower | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | _toupper | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | btowc | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | c_tolower | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | c_toupper | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | curlx_sitouz | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | evp_pkey_type2name | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | inet6_option_space | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isalnum | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isalpha | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isblank | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | iscntrl | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isdigit | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isgraph | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | islower | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isprint | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ispunct | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isspace | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isupper | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isxdigit | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ossl_cmp_bodytype_to_string | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ossl_tolower | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ossl_toupper | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | sigabbrev_np | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | sqlite3_compileoption_get | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | sqlite3_errstr | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | strerrorname_np | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | support_report_failure | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | svcudp_create | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | tls13_alert_code | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | toascii | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | tolower | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | toupper | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uabs | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv__accept | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_err_name | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_get_osfhandle | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_strerror | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_translate_sys_error | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | zError | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | __pthread_cleanup_class | __setdoit | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | SRP_VBASE_new | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | _IO_gets | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | __mktemp | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | __nis_default_group | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | __nis_default_owner | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | __nis_default_ttl | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | __xpg_basename | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | ctermid | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | cuserid | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | defossilize | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | des_setparity | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | dirname | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | getwd | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | make_uppercase | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | mkdtemp | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | next_item | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | strfry | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | CStringT | CStringT | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ASN1_STRING_type_new | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ASN1_tag2bit | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ASN1_tag2str | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | EVP_PKEY_asn1_get0 | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | Jim_ReturnCode | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | Jim_SignalId | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | OBJ_nid2ln | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | OBJ_nid2obj | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | OBJ_nid2sn | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | OSSL_STORE_INFO_type_string | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | OSSL_trace_get_category_name | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | PKCS12_init | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | Symbol_Nth | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_PURPOSE_get0 | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_PURPOSE_get_by_id | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_TRUST_get0 | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __btowc | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __current_locale_name | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __fdopendir | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __get_errlist | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __get_errname | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __math_invalid_i | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __math_invalidf_i | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __p_class | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __p_rcode | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __p_type | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __pkey_get | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __sigdescr_np | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __strerrordesc_np | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | _tolower | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | _toupper | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | btowc | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | c_tolower | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | c_toupper | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | curlx_sitouz | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | evp_pkey_type2name | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | inet6_option_space | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isalnum | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isalpha | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isblank | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | iscntrl | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isdigit | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isgraph | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | islower | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isprint | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ispunct | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isspace | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isupper | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isxdigit | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ossl_tolower | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ossl_toupper | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | sigabbrev_np | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | sqlite3_compileoption_get | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | sqlite3_errstr | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | strerrorname_np | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | support_report_failure | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | svcudp_create | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | tls13_alert_code | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | toascii | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | tolower | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | toupper | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uabs | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv__accept | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_err_name | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_get_osfhandle | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_strerror | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_translate_sys_error | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | zError | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | __pthread_cleanup_class | __setdoit | 0 | -| smart_pointer.cpp:5:6:5:9 | sink | (int *) | | rresvport | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ASN1_STRING_type_new | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ASN1_tag2bit | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ASN1_tag2str | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | EVP_PKEY_asn1_get0 | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | Jim_ReturnCode | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | Jim_SignalId | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | OBJ_nid2ln | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | OBJ_nid2obj | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | OBJ_nid2sn | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | OSSL_STORE_INFO_type_string | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | OSSL_trace_get_category_name | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | PKCS12_init | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | Symbol_Nth | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_PURPOSE_get0 | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_PURPOSE_get_by_id | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_TRUST_get0 | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __btowc | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __current_locale_name | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __fdopendir | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __get_errlist | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __get_errname | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __math_invalid_i | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __math_invalidf_i | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __p_class | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __p_rcode | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __p_type | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __pkey_get | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __sigdescr_np | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __strerrordesc_np | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | _tolower | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | _toupper | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | btowc | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | c_tolower | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | c_toupper | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | curlx_sitouz | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | evp_pkey_type2name | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | inet6_option_space | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isalnum | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isalpha | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isblank | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | iscntrl | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isdigit | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isgraph | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | islower | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isprint | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ispunct | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isspace | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isupper | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isxdigit | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ossl_tolower | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ossl_toupper | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | sigabbrev_np | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | sqlite3_compileoption_get | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | sqlite3_errstr | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | strerrorname_np | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | support_report_failure | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | svcudp_create | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | tls13_alert_code | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | toascii | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | tolower | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | toupper | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uabs | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv__accept | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_err_name | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_get_osfhandle | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_strerror | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_translate_sys_error | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | zError | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | __pthread_cleanup_class | __setdoit | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ASN1_tag2bit | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ASN1_tag2str | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | Jim_ReturnCode | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | Jim_SignalId | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | OBJ_nid2ln | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | OBJ_nid2obj | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | OBJ_nid2sn | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | PKCS12_init | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | Symbol_Nth | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __btowc | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __current_locale_name | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __fdopendir | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __get_errlist | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __get_errname | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __math_invalid_i | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __math_invalidf_i | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __p_class | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __p_rcode | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __p_type | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __pkey_get | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __sigdescr_np | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __strerrordesc_np | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | _tolower | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | _toupper | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | btowc | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | c_tolower | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | c_toupper | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | curlx_sitouz | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | evp_pkey_type2name | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | inet6_option_space | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isalnum | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isalpha | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isblank | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | iscntrl | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isdigit | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isgraph | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | islower | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isprint | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ispunct | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isspace | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isupper | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isxdigit | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ossl_tolower | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ossl_toupper | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | sigabbrev_np | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | sqlite3_errstr | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | strerrorname_np | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | support_report_failure | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | svcudp_create | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | tls13_alert_code | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | toascii | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | tolower | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | toupper | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uabs | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv__accept | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_err_name | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_get_osfhandle | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_strerror | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_translate_sys_error | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | zError | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ASN1_tag2bit | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ASN1_tag2str | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | Jim_ReturnCode | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | Jim_SignalId | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | OBJ_nid2ln | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | OBJ_nid2obj | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | OBJ_nid2sn | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | PKCS12_init | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | Symbol_Nth | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __btowc | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __current_locale_name | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __fdopendir | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __get_errlist | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __get_errname | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __math_invalid_i | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __math_invalidf_i | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __p_class | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __p_rcode | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __p_type | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __pkey_get | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __sigdescr_np | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __strerrordesc_np | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | _tolower | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | _toupper | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | btowc | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | c_tolower | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | c_toupper | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | curlx_sitouz | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | evp_pkey_type2name | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | inet6_option_space | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isalnum | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isalpha | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isblank | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | iscntrl | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isdigit | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isgraph | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | islower | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isprint | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ispunct | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isspace | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isupper | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isxdigit | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ossl_tolower | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ossl_toupper | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | sigabbrev_np | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | sqlite3_errstr | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | strerrorname_np | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | support_report_failure | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | svcudp_create | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | tls13_alert_code | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | toascii | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | tolower | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | toupper | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uabs | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv__accept | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_err_name | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_get_osfhandle | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_strerror | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_translate_sys_error | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | zError | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ASN1_tag2bit | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ASN1_tag2str | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | Jim_ReturnCode | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | Jim_SignalId | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | OBJ_nid2ln | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | OBJ_nid2obj | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | OBJ_nid2sn | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | PKCS12_init | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | Symbol_Nth | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __btowc | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __current_locale_name | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __fdopendir | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __get_errlist | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __get_errname | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __math_invalid_i | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __math_invalidf_i | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __p_class | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __p_rcode | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __p_type | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __pkey_get | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __sigdescr_np | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __strerrordesc_np | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | _tolower | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | _toupper | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | btowc | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | c_tolower | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | c_toupper | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | curlx_sitouz | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | evp_pkey_type2name | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | inet6_option_space | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isalnum | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isalpha | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isblank | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | iscntrl | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isdigit | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isgraph | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | islower | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isprint | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ispunct | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isspace | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isupper | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isxdigit | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ossl_tolower | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ossl_toupper | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | sigabbrev_np | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | sqlite3_errstr | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | strerrorname_np | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | support_report_failure | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | svcudp_create | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | tls13_alert_code | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | toascii | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | tolower | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | toupper | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uabs | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv__accept | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_err_name | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_get_osfhandle | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_strerror | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_translate_sys_error | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | zError | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ASN1_tag2bit | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ASN1_tag2str | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | Jim_ReturnCode | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | Jim_SignalId | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | OBJ_nid2ln | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | OBJ_nid2obj | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | OBJ_nid2sn | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | PKCS12_init | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | Symbol_Nth | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __btowc | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __current_locale_name | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __fdopendir | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __get_errlist | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __get_errname | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __math_invalid_i | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __math_invalidf_i | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __p_class | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __p_rcode | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __p_type | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __pkey_get | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __sigdescr_np | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __strerrordesc_np | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | _tolower | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | _toupper | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | btowc | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | c_tolower | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | c_toupper | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | curlx_sitouz | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | evp_pkey_type2name | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | inet6_option_space | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isalnum | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isalpha | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isblank | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | iscntrl | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isdigit | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isgraph | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | islower | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isprint | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ispunct | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isspace | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isupper | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isxdigit | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ossl_tolower | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ossl_toupper | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | sigabbrev_np | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | sqlite3_errstr | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | strerrorname_np | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | support_report_failure | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | svcudp_create | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | tls13_alert_code | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | toascii | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | tolower | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | toupper | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uabs | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv__accept | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_err_name | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_get_osfhandle | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_strerror | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_translate_sys_error | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | zError | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ASN1_STRING_type_new | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ASN1_tag2bit | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ASN1_tag2str | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | EVP_PKEY_asn1_get0 | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | Jim_ReturnCode | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | Jim_SignalId | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | OBJ_nid2ln | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | OBJ_nid2obj | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | OBJ_nid2sn | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | OSSL_STORE_INFO_type_string | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | OSSL_trace_get_category_name | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | PKCS12_init | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | Symbol_Nth | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_PURPOSE_get0 | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_PURPOSE_get_by_id | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_TRUST_get0 | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_TRUST_get_by_id | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __btowc | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __current_locale_name | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __fdopendir | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __get_errlist | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __get_errname | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __math_invalid_i | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __math_invalidf_i | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __p_class | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __p_rcode | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __p_type | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __pkey_get | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __sigdescr_np | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __strerrordesc_np | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | _tolower | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | _toupper | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | btowc | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | c_tolower | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | c_toupper | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | curlx_sitouz | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | evp_pkey_type2name | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | inet6_option_space | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isalnum | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isalpha | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isblank | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | iscntrl | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isdigit | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isgraph | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | islower | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isprint | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ispunct | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isspace | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isupper | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isxdigit | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ossl_cmp_bodytype_to_string | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ossl_tolower | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ossl_toupper | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | sigabbrev_np | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | sqlite3_compileoption_get | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | sqlite3_errstr | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | strerrorname_np | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | support_report_failure | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | svcudp_create | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | tls13_alert_code | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | toascii | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | tolower | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | toupper | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uabs | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv__accept | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_err_name | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_get_osfhandle | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_strerror | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_translate_sys_error | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | zError | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | __pthread_cleanup_class | __setdoit | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ASN1_STRING_type_new | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ASN1_tag2bit | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ASN1_tag2str | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | EVP_PKEY_asn1_get0 | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | Jim_ReturnCode | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | Jim_SignalId | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | OBJ_nid2ln | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | OBJ_nid2obj | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | OBJ_nid2sn | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | OSSL_STORE_INFO_type_string | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | OSSL_trace_get_category_name | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | PKCS12_init | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | Symbol_Nth | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_PURPOSE_get0 | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_PURPOSE_get_by_id | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_TRUST_get0 | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_TRUST_get_by_id | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __btowc | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __current_locale_name | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __fdopendir | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __get_errlist | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __get_errname | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __math_invalid_i | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __math_invalidf_i | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __p_class | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __p_rcode | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __p_type | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __pkey_get | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __sigdescr_np | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __strerrordesc_np | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | _tolower | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | _toupper | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | btowc | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | c_tolower | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | c_toupper | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | curlx_sitouz | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | evp_pkey_type2name | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | inet6_option_space | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isalnum | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isalpha | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isblank | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | iscntrl | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isdigit | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isgraph | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | islower | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isprint | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ispunct | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isspace | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isupper | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isxdigit | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ossl_cmp_bodytype_to_string | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ossl_tolower | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ossl_toupper | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | sigabbrev_np | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | sqlite3_compileoption_get | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | sqlite3_errstr | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | strerrorname_np | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | support_report_failure | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | svcudp_create | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | tls13_alert_code | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | toascii | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | tolower | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | toupper | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uabs | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv__accept | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_err_name | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_get_osfhandle | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_strerror | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_translate_sys_error | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | zError | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | __pthread_cleanup_class | __setdoit | 0 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | BN_clear_bit | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | BN_mask_bits | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | BN_set_bit | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | BN_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | bn_expand2 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | bn_wexpand | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | BIO_clear_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | BIO_find_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | BIO_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | BIO_set_init | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | BIO_set_retry_reason | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | BIO_set_shutdown | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | TXT_DB_read | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (CURL *,int) | | curl_easy_pause | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (DH *,int) | | DH_clear_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (DH *,int) | | DH_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (DSA *,int) | | DSA_clear_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (DSA *,int) | | DSA_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_default_pbackfail | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_fwide | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_init | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_init_internal | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_new_file_attach | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_new_file_overflow | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_old_init | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_sputbackc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_str_overflow | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_str_pbackfail | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FTS *,int) | | fts_children | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (RSA *,int) | | RSA_clear_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (RSA *,int) | | RSA_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_key_update | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_purpose | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_read_ahead | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_security_level | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_shutdown | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_trust | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_verify_depth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | ssl_md | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509 *,int) | | X509_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509 *,int) | | X509_self_signed | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (_Float128,int) | | __ldexpf128 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (_Float128,int) | | __scalbnf128 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (acttab *,int) | | acttab_insert | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (addrinfo *,int) | | support_format_addrinfo | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (char **,int) | | addrsort | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (char *,int) | | Curl_str2addr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (char *,int) | | PEM_proc_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (char,int) | CStringT | CStringT | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const BIGNUM *,int) | | BN_get_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const BIO *,int) | | BIO_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const BIO *,int) | | BIO_test_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const DH *,int) | | DH_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const DH *,int) | | DH_test_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const DH *,int) | | ossl_dh_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const DSA *,int) | | DSA_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const DSA *,int) | | DSA_test_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const DSA *,int) | | ossl_dsa_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const RSA *,int) | | RSA_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const RSA *,int) | | RSA_test_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const RSA *,int) | | ossl_rsa_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const SSL *,int) | | SSL_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const UI *,int) | | UI_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509 *,int) | | X509_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509 *,int) | | X509_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const XCHAR *,int) | CStringT | CStringT | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const YCHAR *,int) | CStringT | CStringT | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | DH_meth_new | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | DSA_meth_new | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | Jim_StrDupLen | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | RSA_meth_new | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | ftok | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | gethostbyname2 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | parse_yesno | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | res_gethostbyname2 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const void *,int) | | inet6_rth_getaddr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (double,int) | | __ldexp | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (double,int) | | __scalbn | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (double[],int) | | getloadavg | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (fexcept_t *,int) | | fegetexceptflag | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (float,int) | | __ldexpf | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (float,int) | | __scalbnf | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (gzFile,int) | | gzflush | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (gzFile,int) | | gzputc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int *,int) | | X509_PURPOSE_set | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int *,int) | | X509_TRUST_set | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int *,int) | | __lll_unlock_elision | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | BN_security_bits | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | EVP_MD_meth_new | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | EVP_PKEY_meth_new | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | __isctype | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | acttab_alloc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | div | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | inet6_rth_space | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (long double,int) | | __ldexpl | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (netlink_handle *,int) | | __netlink_request | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (ns_msg,int) | | ns_msg_getflag | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (obstack *,int) | | _obstack_newchunk | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (rule *,int) | | Configlist_add | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (rule *,int) | | Configlist_addbasis | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sigset_t *,int) | | sigaddset | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sigset_t *,int) | | sigdelset | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (timespec *,int) | | __timespec_get | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (timespec *,int) | | __timespec_getres | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (uint16_t,int) | | tls1_group_id2nid | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned char *,int) | | RAND_bytes | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (void *,int) | | DSO_dsobyaddr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (void *,int) | | sqlite3_realloc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (void *const *,int) | | __backtrace_symbols | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (wchar_t,int) | CStringT | CStringT | 1 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2bit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2bit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2bit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2bit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2bit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2str | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2str | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2str | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2str | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2str | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_ReturnCode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_ReturnCode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_ReturnCode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_ReturnCode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_ReturnCode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_SignalId | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_SignalId | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_SignalId | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_SignalId | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_SignalId | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2ln | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2ln | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2ln | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2ln | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2ln | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2obj | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2obj | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2obj | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2obj | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2obj | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2sn | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2sn | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2sn | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2sn | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2sn | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | PKCS12_init | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | PKCS12_init | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | PKCS12_init | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | PKCS12_init | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | PKCS12_init | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Symbol_Nth | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Symbol_Nth | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Symbol_Nth | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Symbol_Nth | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Symbol_Nth | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __current_locale_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __current_locale_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __current_locale_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __current_locale_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __current_locale_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __fdopendir | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __fdopendir | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __fdopendir | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __fdopendir | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __fdopendir | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errlist | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errlist | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errlist | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errlist | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errlist | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errname | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errname | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errname | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errname | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errname | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalid_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalid_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalid_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalid_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalid_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalidf_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalidf_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalidf_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalidf_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalidf_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_class | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_class | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_class | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_class | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_class | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_rcode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_rcode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_rcode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_rcode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_rcode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_type | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_type | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_type | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_type | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_type | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __pkey_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __pkey_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __pkey_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __pkey_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __pkey_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __sigdescr_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __sigdescr_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __sigdescr_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __sigdescr_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __sigdescr_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __strerrordesc_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __strerrordesc_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __strerrordesc_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __strerrordesc_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __strerrordesc_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | inet6_option_space | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | inet6_option_space | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | inet6_option_space | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | inet6_option_space | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | inet6_option_space | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalnum | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalnum | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalnum | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalnum | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalnum | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalpha | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalpha | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalpha | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalpha | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalpha | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isblank | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isblank | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isblank | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isblank | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isblank | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | iscntrl | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | iscntrl | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | iscntrl | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | iscntrl | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | iscntrl | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isgraph | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isgraph | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isgraph | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isgraph | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isgraph | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | islower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | islower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | islower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | islower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | islower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isprint | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isprint | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isprint | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isprint | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isprint | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ispunct | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ispunct | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ispunct | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ispunct | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ispunct | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isspace | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isspace | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isspace | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isspace | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isspace | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isxdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isxdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isxdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isxdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isxdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sigabbrev_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sigabbrev_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sigabbrev_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sigabbrev_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sigabbrev_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_errstr | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_errstr | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_errstr | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_errstr | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_errstr | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | strerrorname_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | strerrorname_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | strerrorname_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | strerrorname_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | strerrorname_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | support_report_failure | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | support_report_failure | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | support_report_failure | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | support_report_failure | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | support_report_failure | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | svcudp_create | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | svcudp_create | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | svcudp_create | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | svcudp_create | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | svcudp_create | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toascii | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toascii | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toascii | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toascii | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toascii | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uabs | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uabs | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uabs | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uabs | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uabs | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | ASN1_tag2bit | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | ASN1_tag2str | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | Jim_ReturnCode | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | Jim_SignalId | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | OBJ_nid2ln | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | OBJ_nid2obj | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | OBJ_nid2sn | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | PKCS12_init | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | Symbol_Nth | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | X509_TRUST_get0 | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __btowc | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __current_locale_name | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __fdopendir | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __get_errlist | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __get_errname | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __math_invalid_i | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __math_invalidf_i | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __p_class | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __p_rcode | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __p_type | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __pkey_get | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __sigdescr_np | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __strerrordesc_np | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | _tolower | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | _toupper | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | btowc | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | c_tolower | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | c_toupper | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | curlx_sitouz | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | evp_pkey_type2name | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | inet6_option_space | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isalnum | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isalpha | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isblank | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | iscntrl | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isdigit | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isgraph | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | islower | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isprint | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | ispunct | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isspace | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isupper | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isxdigit | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | ossl_tolower | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | ossl_toupper | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | sigabbrev_np | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | sqlite3_errstr | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | strerrorname_np | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | support_report_failure | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | svcudp_create | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | tls13_alert_code | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | toascii | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | tolower | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | toupper | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | uabs | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | uv__accept | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | uv_err_name | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | uv_get_osfhandle | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | uv_strerror | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | uv_translate_sys_error | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | zError | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | ASN1_tag2bit | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | ASN1_tag2str | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | Jim_ReturnCode | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | Jim_SignalId | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | OBJ_nid2ln | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | OBJ_nid2obj | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | OBJ_nid2sn | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | PKCS12_init | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | Symbol_Nth | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __btowc | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __current_locale_name | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __fdopendir | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __get_errlist | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __get_errname | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __math_invalid_i | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __math_invalidf_i | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __p_class | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __p_rcode | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __p_type | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __pkey_get | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __sigdescr_np | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __strerrordesc_np | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | _tolower | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | _toupper | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | btowc | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | c_tolower | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | c_toupper | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | curlx_sitouz | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | evp_pkey_type2name | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | inet6_option_space | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isalnum | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isalpha | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isblank | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | iscntrl | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isdigit | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isgraph | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | islower | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isprint | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | ispunct | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isspace | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isupper | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isxdigit | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | ossl_tolower | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | ossl_toupper | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | sigabbrev_np | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | sqlite3_errstr | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | strerrorname_np | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | support_report_failure | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | svcudp_create | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | tls13_alert_code | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | toascii | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | tolower | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | toupper | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | uabs | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | uv__accept | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | uv_err_name | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | uv_get_osfhandle | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | uv_strerror | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | uv_translate_sys_error | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | zError | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | ASN1_tag2bit | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | ASN1_tag2str | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | Jim_ReturnCode | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | Jim_SignalId | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | OBJ_nid2ln | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | OBJ_nid2obj | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | OBJ_nid2sn | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | PKCS12_init | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | Symbol_Nth | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | X509_TRUST_get0 | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __btowc | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __current_locale_name | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __fdopendir | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __get_errlist | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __get_errname | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __math_invalid_i | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __math_invalidf_i | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __p_class | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __p_rcode | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __p_type | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __pkey_get | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __sigdescr_np | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __strerrordesc_np | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | _tolower | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | _toupper | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | btowc | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | c_tolower | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | c_toupper | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | curlx_sitouz | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | evp_pkey_type2name | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | inet6_option_space | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isalnum | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isalpha | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isblank | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | iscntrl | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isdigit | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isgraph | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | islower | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isprint | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | ispunct | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isspace | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isupper | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isxdigit | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | ossl_tolower | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | ossl_toupper | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | sigabbrev_np | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | sqlite3_errstr | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | strerrorname_np | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | support_report_failure | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | svcudp_create | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | tls13_alert_code | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | toascii | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | tolower | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | toupper | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | uabs | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | uv__accept | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | uv_err_name | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | uv_get_osfhandle | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | uv_strerror | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | uv_translate_sys_error | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | zError | 0 | -| stl.h:60:12:60:20 | operator- | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ASN1_tag2bit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ASN1_tag2bit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ASN1_tag2str | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ASN1_tag2str | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | Jim_ReturnCode | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | Jim_ReturnCode | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | Jim_SignalId | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | Jim_SignalId | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OBJ_nid2ln | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OBJ_nid2ln | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OBJ_nid2obj | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OBJ_nid2obj | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OBJ_nid2sn | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OBJ_nid2sn | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | PKCS12_init | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | PKCS12_init | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | Symbol_Nth | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | Symbol_Nth | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_TRUST_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_TRUST_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __btowc | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __btowc | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __current_locale_name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __current_locale_name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __fdopendir | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __fdopendir | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __get_errlist | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __get_errlist | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __get_errname | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __get_errname | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __math_invalid_i | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __math_invalid_i | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __math_invalidf_i | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __math_invalidf_i | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __p_class | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __p_class | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __p_rcode | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __p_rcode | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __p_type | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __p_type | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __pkey_get | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __pkey_get | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __sigdescr_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __sigdescr_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __strerrordesc_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __strerrordesc_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | _tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | _tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | _toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | _toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | btowc | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | btowc | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | c_tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | c_tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | c_toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | c_toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | curlx_sitouz | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | curlx_sitouz | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | evp_pkey_type2name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | evp_pkey_type2name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | inet6_option_space | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | inet6_option_space | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isalnum | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isalnum | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isalpha | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isalpha | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isblank | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isblank | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | iscntrl | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | iscntrl | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isdigit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isdigit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isgraph | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isgraph | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | islower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | islower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isprint | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isprint | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ispunct | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ispunct | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isspace | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isspace | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isxdigit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isxdigit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ossl_tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ossl_tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ossl_toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ossl_toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | sigabbrev_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | sigabbrev_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | sqlite3_errstr | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | sqlite3_errstr | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | strerrorname_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | strerrorname_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | support_report_failure | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | support_report_failure | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | svcudp_create | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | svcudp_create | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | tls13_alert_code | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | tls13_alert_code | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | toascii | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | toascii | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uabs | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uabs | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv__accept | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv__accept | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_err_name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_err_name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_get_osfhandle | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_get_osfhandle | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_strerror | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_strerror | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_translate_sys_error | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_translate_sys_error | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | zError | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | zError | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | ASN1_tag2bit | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | ASN1_tag2str | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | Jim_ReturnCode | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | Jim_SignalId | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | OBJ_nid2ln | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | OBJ_nid2obj | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | OBJ_nid2sn | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | PKCS12_init | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | Symbol_Nth | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | X509_TRUST_get0 | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __btowc | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __current_locale_name | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __fdopendir | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __get_errlist | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __get_errname | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __math_invalid_i | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __math_invalidf_i | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __p_class | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __p_rcode | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __p_type | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __pkey_get | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __sigdescr_np | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __strerrordesc_np | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | _tolower | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | _toupper | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | btowc | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | c_tolower | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | c_toupper | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | curlx_sitouz | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | evp_pkey_type2name | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | inet6_option_space | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isalnum | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isalpha | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isblank | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | iscntrl | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isdigit | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isgraph | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | islower | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isprint | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | ispunct | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isspace | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isupper | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isxdigit | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | ossl_tolower | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | ossl_toupper | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | sigabbrev_np | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | sqlite3_errstr | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | strerrorname_np | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | support_report_failure | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | svcudp_create | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | tls13_alert_code | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | toascii | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | tolower | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | toupper | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | uabs | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | uv__accept | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | uv_err_name | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | uv_get_osfhandle | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | uv_strerror | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | uv_translate_sys_error | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | zError | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | ASN1_tag2bit | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | ASN1_tag2str | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | Jim_ReturnCode | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | Jim_SignalId | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | OBJ_nid2ln | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | OBJ_nid2obj | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | OBJ_nid2sn | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | PKCS12_init | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | Symbol_Nth | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | X509_TRUST_get0 | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __btowc | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __current_locale_name | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __fdopendir | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __get_errlist | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __get_errname | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __math_invalid_i | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __math_invalidf_i | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __p_class | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __p_rcode | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __p_type | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __pkey_get | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __sigdescr_np | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __strerrordesc_np | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | _tolower | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | _toupper | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | btowc | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | c_tolower | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | c_toupper | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | curlx_sitouz | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | evp_pkey_type2name | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | inet6_option_space | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isalnum | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isalpha | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isblank | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | iscntrl | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isdigit | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isgraph | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | islower | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isprint | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | ispunct | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isspace | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isupper | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isxdigit | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | ossl_tolower | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | ossl_toupper | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | sigabbrev_np | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | sqlite3_errstr | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | strerrorname_np | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | support_report_failure | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | svcudp_create | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | tls13_alert_code | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | toascii | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | tolower | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | toupper | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | uabs | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | uv__accept | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | uv_err_name | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | uv_get_osfhandle | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | uv_strerror | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | uv_translate_sys_error | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | zError | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ASN1_tag2bit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ASN1_tag2bit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ASN1_tag2str | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ASN1_tag2str | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | Jim_ReturnCode | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | Jim_ReturnCode | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | Jim_SignalId | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | Jim_SignalId | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OBJ_nid2ln | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OBJ_nid2ln | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OBJ_nid2obj | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OBJ_nid2obj | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OBJ_nid2sn | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OBJ_nid2sn | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | PKCS12_init | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | PKCS12_init | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | Symbol_Nth | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | Symbol_Nth | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __btowc | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __btowc | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __current_locale_name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __current_locale_name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __fdopendir | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __fdopendir | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __get_errlist | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __get_errlist | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __get_errname | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __get_errname | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __math_invalid_i | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __math_invalid_i | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __math_invalidf_i | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __math_invalidf_i | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __p_class | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __p_class | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __p_rcode | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __p_rcode | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __p_type | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __p_type | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __pkey_get | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __pkey_get | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __sigdescr_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __sigdescr_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __strerrordesc_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __strerrordesc_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | _tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | _tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | _toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | _toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | btowc | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | btowc | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | c_tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | c_tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | c_toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | c_toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | curlx_sitouz | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | curlx_sitouz | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | evp_pkey_type2name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | evp_pkey_type2name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | inet6_option_space | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | inet6_option_space | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isalnum | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isalnum | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isalpha | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isalpha | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isblank | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isblank | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | iscntrl | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | iscntrl | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isdigit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isdigit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isgraph | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isgraph | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | islower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | islower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isprint | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isprint | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ispunct | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ispunct | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isspace | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isspace | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isxdigit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isxdigit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ossl_tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ossl_tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ossl_toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ossl_toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | sigabbrev_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | sigabbrev_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | sqlite3_errstr | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | sqlite3_errstr | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | strerrorname_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | strerrorname_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | support_report_failure | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | support_report_failure | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | svcudp_create | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | svcudp_create | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | tls13_alert_code | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | tls13_alert_code | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | toascii | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | toascii | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uabs | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uabs | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv__accept | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv__accept | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_err_name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_err_name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_get_osfhandle | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_get_osfhandle | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_strerror | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_strerror | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_translate_sys_error | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_translate_sys_error | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | zError | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | zError | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | deque | assign | 0 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | deque | assign | 1 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | forward_list | assign | 0 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | forward_list | assign | 1 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | list | assign | 0 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | list | assign | 1 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | vector | assign | 0 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | vector | assign | 1 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | deque | assign | 0 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | deque | assign | 1 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | forward_list | assign | 0 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | forward_list | assign | 1 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | list | assign | 0 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | list | assign | 1 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | vector | assign | 0 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | vector | assign | 1 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | deque | insert | 0 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | deque | insert | 1 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | deque | insert | 2 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 0 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 1 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 2 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | list | insert | 0 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | list | insert | 1 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | list | insert | 2 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | vector | insert | 0 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | vector | insert | 1 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | vector | insert | 2 | -| stl.h:218:33:218:35 | get | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| stl.h:218:33:218:35 | get | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| stl.h:218:33:218:35 | get | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| stl.h:218:33:218:35 | get | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| stl.h:218:33:218:35 | get | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| stl.h:218:33:218:35 | get | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| stl.h:218:33:218:35 | get | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| stl.h:218:33:218:35 | get | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| stl.h:218:33:218:35 | get | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| stl.h:218:33:218:35 | get | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| stl.h:218:33:218:35 | get | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| stl.h:218:33:218:35 | get | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| stl.h:218:33:218:35 | get | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| stl.h:218:33:218:35 | get | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| stl.h:218:33:218:35 | get | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| stl.h:218:33:218:35 | get | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| stl.h:218:33:218:35 | get | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| stl.h:218:33:218:35 | get | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| stl.h:218:33:218:35 | get | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| stl.h:218:33:218:35 | get | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| stl.h:218:33:218:35 | get | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| stl.h:218:33:218:35 | get | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| stl.h:218:33:218:35 | get | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| stl.h:218:33:218:35 | get | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| stl.h:218:33:218:35 | get | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| stl.h:218:33:218:35 | get | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| stl.h:218:33:218:35 | get | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| stl.h:218:33:218:35 | get | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| stl.h:218:33:218:35 | get | (hash_table *,unsigned long) | | init_hash | 1 | -| stl.h:218:33:218:35 | get | (u_long,unsigned long) | | __p_option | 1 | -| stl.h:220:33:220:36 | read | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| stl.h:220:33:220:36 | read | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| stl.h:220:33:220:36 | read | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| stl.h:220:33:220:36 | read | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| stl.h:220:33:220:36 | read | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| stl.h:220:33:220:36 | read | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| stl.h:220:33:220:36 | read | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| stl.h:220:33:220:36 | read | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| stl.h:220:33:220:36 | read | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| stl.h:220:33:220:36 | read | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| stl.h:220:33:220:36 | read | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| stl.h:220:33:220:36 | read | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| stl.h:220:33:220:36 | read | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| stl.h:220:33:220:36 | read | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| stl.h:220:33:220:36 | read | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| stl.h:220:33:220:36 | read | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| stl.h:220:33:220:36 | read | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| stl.h:220:33:220:36 | read | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| stl.h:220:33:220:36 | read | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| stl.h:220:33:220:36 | read | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| stl.h:220:33:220:36 | read | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| stl.h:220:33:220:36 | read | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| stl.h:220:33:220:36 | read | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| stl.h:220:33:220:36 | read | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| stl.h:220:33:220:36 | read | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| stl.h:220:33:220:36 | read | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| stl.h:220:33:220:36 | read | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| stl.h:220:33:220:36 | read | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| stl.h:220:33:220:36 | read | (hash_table *,unsigned long) | | init_hash | 1 | -| stl.h:220:33:220:36 | read | (u_long,unsigned long) | | __p_option | 1 | -| stl.h:221:14:221:21 | readsome | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| stl.h:221:14:221:21 | readsome | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| stl.h:221:14:221:21 | readsome | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| stl.h:221:14:221:21 | readsome | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| stl.h:221:14:221:21 | readsome | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| stl.h:221:14:221:21 | readsome | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| stl.h:221:14:221:21 | readsome | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| stl.h:221:14:221:21 | readsome | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| stl.h:221:14:221:21 | readsome | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| stl.h:221:14:221:21 | readsome | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| stl.h:221:14:221:21 | readsome | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| stl.h:221:14:221:21 | readsome | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| stl.h:221:14:221:21 | readsome | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| stl.h:221:14:221:21 | readsome | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| stl.h:221:14:221:21 | readsome | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| stl.h:221:14:221:21 | readsome | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| stl.h:221:14:221:21 | readsome | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| stl.h:221:14:221:21 | readsome | (hash_table *,unsigned long) | | init_hash | 1 | -| stl.h:221:14:221:21 | readsome | (u_long,unsigned long) | | __p_option | 1 | -| stl.h:225:32:225:38 | getline | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| stl.h:225:32:225:38 | getline | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| stl.h:225:32:225:38 | getline | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| stl.h:225:32:225:38 | getline | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| stl.h:225:32:225:38 | getline | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| stl.h:225:32:225:38 | getline | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| stl.h:225:32:225:38 | getline | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| stl.h:225:32:225:38 | getline | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| stl.h:225:32:225:38 | getline | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| stl.h:225:32:225:38 | getline | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| stl.h:225:32:225:38 | getline | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| stl.h:225:32:225:38 | getline | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| stl.h:225:32:225:38 | getline | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| stl.h:225:32:225:38 | getline | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| stl.h:225:32:225:38 | getline | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| stl.h:225:32:225:38 | getline | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| stl.h:225:32:225:38 | getline | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| stl.h:225:32:225:38 | getline | (hash_table *,unsigned long) | | init_hash | 1 | -| stl.h:225:32:225:38 | getline | (u_long,unsigned long) | | __p_option | 1 | -| stl.h:232:84:232:90 | getline | (const_iterator,InputIt,InputIt) | deque | insert | 2 | -| stl.h:232:84:232:90 | getline | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 2 | -| stl.h:232:84:232:90 | getline | (const_iterator,InputIt,InputIt) | list | insert | 2 | -| stl.h:232:84:232:90 | getline | (const_iterator,InputIt,InputIt) | vector | insert | 2 | -| stl.h:240:33:240:42 | operator<< | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | ASN1_tag2bit | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | ASN1_tag2str | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | Jim_ReturnCode | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | Jim_SignalId | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | OBJ_nid2ln | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | OBJ_nid2obj | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | OBJ_nid2sn | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | PKCS12_init | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | Symbol_Nth | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | X509_TRUST_get0 | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __btowc | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __current_locale_name | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __fdopendir | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __get_errlist | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __get_errname | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __math_invalid_i | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __math_invalidf_i | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __p_class | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __p_rcode | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __p_type | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __pkey_get | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __sigdescr_np | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __strerrordesc_np | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | _tolower | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | _toupper | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | btowc | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | c_tolower | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | c_toupper | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | curlx_sitouz | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | evp_pkey_type2name | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | inet6_option_space | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isalnum | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isalpha | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isblank | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | iscntrl | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isdigit | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isgraph | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | islower | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isprint | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | ispunct | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isspace | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isupper | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isxdigit | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | ossl_tolower | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | ossl_toupper | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | sigabbrev_np | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | sqlite3_errstr | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | strerrorname_np | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | support_report_failure | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | svcudp_create | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | tls13_alert_code | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | toascii | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | tolower | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | toupper | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | uabs | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | uv__accept | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | uv_err_name | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | uv_get_osfhandle | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | uv_strerror | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | uv_translate_sys_error | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | zError | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| stl.h:243:33:243:37 | write | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| stl.h:243:33:243:37 | write | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| stl.h:243:33:243:37 | write | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| stl.h:243:33:243:37 | write | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| stl.h:243:33:243:37 | write | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| stl.h:243:33:243:37 | write | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| stl.h:243:33:243:37 | write | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| stl.h:243:33:243:37 | write | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| stl.h:243:33:243:37 | write | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| stl.h:243:33:243:37 | write | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| stl.h:243:33:243:37 | write | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| stl.h:243:33:243:37 | write | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| stl.h:243:33:243:37 | write | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| stl.h:243:33:243:37 | write | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| stl.h:243:33:243:37 | write | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| stl.h:243:33:243:37 | write | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| stl.h:243:33:243:37 | write | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| stl.h:243:33:243:37 | write | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| stl.h:243:33:243:37 | write | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| stl.h:243:33:243:37 | write | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| stl.h:243:33:243:37 | write | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| stl.h:243:33:243:37 | write | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| stl.h:243:33:243:37 | write | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| stl.h:243:33:243:37 | write | (hash_table *,unsigned long) | | init_hash | 1 | -| stl.h:243:33:243:37 | write | (u_long,unsigned long) | | __p_option | 1 | -| stl.h:294:12:294:17 | vector | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:294:12:294:17 | vector | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:294:12:294:17 | vector | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:294:12:294:17 | vector | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:294:12:294:17 | vector | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:294:12:294:17 | vector | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:294:12:294:17 | vector | (const list &,const Allocator &) | list | list | 1 | -| stl.h:294:12:294:17 | vector | (const list &,const Allocator &) | list | list | 1 | -| stl.h:294:12:294:17 | vector | (const list &,const Allocator &) | list | list | 1 | -| stl.h:294:12:294:17 | vector | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:294:12:294:17 | vector | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:294:12:294:17 | vector | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:294:12:294:17 | vector | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:294:12:294:17 | vector | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:294:12:294:17 | vector | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:294:12:294:17 | vector | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:294:12:294:17 | vector | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:294:12:294:17 | vector | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:294:12:294:17 | vector | (list &&,const Allocator &) | list | list | 1 | -| stl.h:294:12:294:17 | vector | (list &&,const Allocator &) | list | list | 1 | -| stl.h:294:12:294:17 | vector | (list &&,const Allocator &) | list | list | 1 | -| stl.h:294:12:294:17 | vector | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:294:12:294:17 | vector | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:294:12:294:17 | vector | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | deque | deque | 2 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | deque | deque | 2 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | forward_list | forward_list | 2 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | forward_list | forward_list | 2 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | list | list | 2 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | list | list | 2 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | deque | deque | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | deque | deque | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | deque | deque | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | deque | deque | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | deque | deque | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | deque | deque | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | forward_list | forward_list | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | forward_list | forward_list | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | forward_list | forward_list | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | forward_list | forward_list | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | list | list | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | list | list | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | list | list | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | list | list | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | list | list | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | list | list | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 2 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | deque | deque | 0 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | deque | deque | 1 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | deque | deque | 2 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | forward_list | forward_list | 2 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | list | list | 0 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | list | list | 1 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | list | list | 2 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | vector | vector | 0 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | vector | vector | 1 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | -| stl.h:296:101:296:106 | vector | (size_type,const T &,const Allocator &) | deque | deque | 2 | -| stl.h:296:101:296:106 | vector | (size_type,const T &,const Allocator &) | forward_list | forward_list | 2 | -| stl.h:296:101:296:106 | vector | (size_type,const T &,const Allocator &) | list | list | 2 | -| stl.h:296:101:296:106 | vector | (size_type,const T &,const Allocator &) | vector | vector | 2 | -| stl.h:301:11:301:19 | operator= | (const vector &) | vector | vector | 0 | -| stl.h:302:11:302:19 | operator= | (vector &&) | vector | vector | 0 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | deque | assign | 0 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | deque | assign | 1 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | forward_list | assign | 0 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | forward_list | assign | 1 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | list | assign | 0 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | list | assign | 1 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | vector | assign | 0 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | vector | assign | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | deque | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | deque | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | deque | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | forward_list | insert_after | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | forward_list | insert_after | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | forward_list | insert_after | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | list | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | list | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | list | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | vector | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | vector | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | vector | insert | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | deque | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | deque | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | deque | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | deque | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | deque | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | deque | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | forward_list | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | forward_list | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | forward_list | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | forward_list | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | forward_list | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | forward_list | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | list | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | list | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | list | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | list | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | list | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | list | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 1 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __sleep | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __sleep | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __sleep | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __sleep | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __sleep | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __sleep | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | la_version | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | la_version | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | la_version | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | la_version | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | la_version | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | la_version | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | -| stl.h:318:13:318:14 | at | (unsigned int) | | Jim_IntHashFunction | 0 | -| stl.h:318:13:318:14 | at | (unsigned int) | | __sleep | 0 | -| stl.h:318:13:318:14 | at | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| stl.h:318:13:318:14 | at | (unsigned int) | | curlx_uitous | 0 | -| stl.h:318:13:318:14 | at | (unsigned int) | | la_version | 0 | -| stl.h:318:13:318:14 | at | (unsigned int) | | ssl3_get_cipher | 0 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | deque | insert | 0 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | deque | insert | 1 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | forward_list | insert_after | 0 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | forward_list | insert_after | 1 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | list | insert | 0 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | list | insert | 1 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | vector | insert | 0 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | vector | insert | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | deque | insert | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | deque | insert | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | deque | insert | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | deque | insert | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | deque | insert | 2 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | deque | insert | 2 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 2 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 2 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | list | insert | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | list | insert | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | list | insert | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | list | insert | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | list | insert | 2 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | list | insert | 2 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 2 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 2 | -| stl.h:335:37:335:43 | emplace | (format_string,Args &&) | | format | 1 | -| stl.h:351:12:351:21 | shared_ptr | (T *) | ComPtr | operator= | 0 | -| stl.h:369:12:369:21 | unique_ptr | (T *) | ComPtr | operator= | 0 | -| stl.h:396:3:396:3 | pair | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (const list &,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (const list &,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (const list &,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (const list &,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (const list &,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (list &&,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (list &&,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (list &&,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (list &&,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (list &&,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:440:36:440:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:440:36:440:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:448:48:448:58 | try_emplace | (format_string,Args &&) | | format | 1 | -| stl.h:448:48:448:58 | try_emplace | (format_string,Args &&) | | format | 1 | -| stl.h:452:42:452:57 | insert_or_assign | (format_string,Args &&) | | format | 1 | -| stl.h:508:36:508:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:508:36:508:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:516:48:516:58 | try_emplace | (format_string,Args &&) | | format | 1 | -| stl.h:516:48:516:58 | try_emplace | (format_string,Args &&) | | format | 1 | -| stl.h:516:48:516:58 | try_emplace | (format_string,Args &&) | | format | 1 | -| stl.h:516:48:516:58 | try_emplace | (format_string,Args &&) | | format | 1 | -| stl.h:516:48:516:58 | try_emplace | (format_string,Args &&) | | format | 1 | -| stl.h:520:42:520:57 | insert_or_assign | (format_string,Args &&) | | format | 1 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | deque | assign | 0 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | deque | assign | 1 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | forward_list | assign | 0 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | forward_list | assign | 1 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | list | assign | 0 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | list | assign | 1 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | vector | assign | 0 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | vector | assign | 1 | -| stl.h:569:36:569:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:569:36:569:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | deque | insert | 0 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | deque | insert | 1 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | forward_list | insert_after | 0 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | forward_list | insert_after | 1 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | list | insert | 0 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | list | insert | 1 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | vector | insert | 0 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | vector | insert | 1 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | deque | assign | 0 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | deque | assign | 1 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | forward_list | assign | 0 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | forward_list | assign | 1 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | list | assign | 0 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | list | assign | 1 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | vector | assign | 0 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | vector | assign | 1 | -| stl.h:611:33:611:45 | unordered_set | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | -| stl.h:611:33:611:45 | unordered_set | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | -| stl.h:611:33:611:45 | unordered_set | (BIO *,X509 *,unsigned long) | | ossl_x509_print_ex_brief | 2 | -| stl.h:611:33:611:45 | unordered_set | (BIO *,X509_CRL *,unsigned long) | | X509_CRL_print_ex | 2 | -| stl.h:611:33:611:45 | unordered_set | (BIO *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex | 2 | -| stl.h:611:33:611:45 | unordered_set | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | -| stl.h:611:33:611:45 | unordered_set | (const char *,const char *,unsigned long) | | __ngettext | 2 | -| stl.h:611:33:611:45 | unordered_set | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | -| stl.h:623:36:623:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:623:36:623:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | deque | insert | 0 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | deque | insert | 1 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | forward_list | insert_after | 0 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | forward_list | insert_after | 1 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | list | insert | 0 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | list | insert | 1 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | vector | insert | 0 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | vector | insert | 1 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | deque | assign | 0 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | deque | assign | 1 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | forward_list | assign | 0 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | forward_list | assign | 1 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | list | assign | 0 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | list | assign | 1 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | vector | assign | 0 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | vector | assign | 1 | -| stl.h:678:33:678:38 | format | (format_string,Args &&) | | format | 0 | -| stl.h:678:33:678:38 | format | (format_string,Args &&) | | format | 0 | -| stl.h:678:33:678:38 | format | (format_string,Args &&) | | format | 1 | -| stl.h:678:33:678:38 | format | (format_string,Args &&) | | format | 1 | -| stl.h:683:6:683:48 | same_signature_as_format_but_different_name | (format_string,Args &&) | | format | 0 | -| stl.h:683:6:683:48 | same_signature_as_format_but_different_name | (format_string,Args &&) | | format | 1 | -| string.cpp:17:6:17:9 | sink | (const char *) | | BIO_gethostbyname | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | Curl_copy_header_value | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | Curl_get_scheme_handler | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | Curl_getdate_capped | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | Jim_StrDup | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | OPENSSL_LH_strhash | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | Strsafe | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | Symbol_new | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | UI_create_method | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | X509V3_parse_list | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | X509_LOOKUP_meth_new | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __basename | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __gconv_find_shlib | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __gettext | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __hash_string | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __nss_action_parse | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __strdup | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __textdomain | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __tzset_parse_tz | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __tzstring | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | a2i_IPADDRESS | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | a2i_IPADDRESS_NC | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | a64l | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | charmap_opendir | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | ether_aton | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | getdate | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | inetstr2int | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | last_component | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | opt_path_end | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | opt_progname | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | ossl_lh_strcasehash | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | repertoire_read | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | res_gethostbyname | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | sgetsgent | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | sgetspent | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | strhash | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | uc_script_byname | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | uv__strdup | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | xstrdup | 0 | -| string.cpp:19:6:19:9 | sink | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| string.cpp:19:6:19:9 | sink | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| string.cpp:19:6:19:9 | sink | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| string.cpp:19:6:19:9 | sink | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| string.cpp:19:6:19:9 | sink | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| string.cpp:19:6:19:9 | sink | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| string.cpp:19:6:19:9 | sink | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| string.cpp:19:6:19:9 | sink | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| string.cpp:19:6:19:9 | sink | (CONF *,const char *) | | _CONF_new_section | 1 | -| string.cpp:19:6:19:9 | sink | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| string.cpp:19:6:19:9 | sink | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| string.cpp:19:6:19:9 | sink | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| string.cpp:19:6:19:9 | sink | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| string.cpp:19:6:19:9 | sink | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| string.cpp:19:6:19:9 | sink | (DSO *,const char *) | | DSO_convert_filename | 1 | -| string.cpp:19:6:19:9 | sink | (DSO *,const char *) | | DSO_set_filename | 1 | -| string.cpp:19:6:19:9 | sink | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| string.cpp:19:6:19:9 | sink | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| string.cpp:19:6:19:9 | sink | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| string.cpp:19:6:19:9 | sink | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| string.cpp:19:6:19:9 | sink | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| string.cpp:19:6:19:9 | sink | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| string.cpp:19:6:19:9 | sink | (GlobalConfig *,const char *) | | setvariable | 1 | -| string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| string.cpp:19:6:19:9 | sink | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| string.cpp:19:6:19:9 | sink | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| string.cpp:19:6:19:9 | sink | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| string.cpp:19:6:19:9 | sink | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| string.cpp:19:6:19:9 | sink | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| string.cpp:19:6:19:9 | sink | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| string.cpp:19:6:19:9 | sink | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| string.cpp:19:6:19:9 | sink | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| string.cpp:19:6:19:9 | sink | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| string.cpp:19:6:19:9 | sink | (SSL *,const char *) | | SSL_add1_host | 1 | -| string.cpp:19:6:19:9 | sink | (SSL *,const char *) | | SSL_set1_host | 1 | -| string.cpp:19:6:19:9 | sink | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| string.cpp:19:6:19:9 | sink | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| string.cpp:19:6:19:9 | sink | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| string.cpp:19:6:19:9 | sink | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| string.cpp:19:6:19:9 | sink | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| string.cpp:19:6:19:9 | sink | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| string.cpp:19:6:19:9 | sink | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| string.cpp:19:6:19:9 | sink | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| string.cpp:19:6:19:9 | sink | (UI *,const char *) | | UI_add_error_string | 1 | -| string.cpp:19:6:19:9 | sink | (UI *,const char *) | | UI_add_info_string | 1 | -| string.cpp:19:6:19:9 | sink | (UI *,const char *) | | UI_dup_error_string | 1 | -| string.cpp:19:6:19:9 | sink | (UI *,const char *) | | UI_dup_info_string | 1 | -| string.cpp:19:6:19:9 | sink | (X509 *,const char *) | | x509_ctrl_string | 1 | -| string.cpp:19:6:19:9 | sink | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| string.cpp:19:6:19:9 | sink | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| string.cpp:19:6:19:9 | sink | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| string.cpp:19:6:19:9 | sink | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| string.cpp:19:6:19:9 | sink | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| string.cpp:19:6:19:9 | sink | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| string.cpp:19:6:19:9 | sink | (char **,const char *) | | Curl_setstropt | 1 | -| string.cpp:19:6:19:9 | sink | (char **,const char *) | | __strsep | 1 | -| string.cpp:19:6:19:9 | sink | (char *,const char *) | | xstrdup | 1 | -| string.cpp:19:6:19:9 | sink | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| string.cpp:19:6:19:9 | sink | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Configcmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Configcmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Curl_timestrcmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Curl_timestrcmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | DES_crypt | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | DES_crypt | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | OPENSSL_strcasecmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __bind_textdomain_codeset | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __bindtextdomain | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __bindtextdomain | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __dgettext | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __dgettext | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __gconv_compare_alias | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __gconv_compare_alias | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strcasestr | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strcasestr | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strcspn_generic | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strcspn_generic | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strcspn_sse42 | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strcspn_sse42 | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strpbrk_generic | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strpbrk_generic | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strpbrk_sse42 | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strspn_generic | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strspn_generic | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strspn_sse42 | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strspn_sse42 | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strstr_generic | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strstr_generic | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strverscmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strverscmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | _dl_cache_libcmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | advance | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | advance | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | c_strcasecmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | c_strcasecmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | charmap_aliases | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | charmap_aliases | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | charmap_open | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | charmap_open | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | chroot_canon | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | chroot_canon | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | get_passwd | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | get_passwd | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen64 | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen64 | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | iconv_open | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | iconv_open | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | openssl_fopen | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | openssl_fopen | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | ossl_pem_check_suffix | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | ossl_v3_name_cmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_strglob | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_strglob | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_stricmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_stricmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | step | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | step | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | tempnam | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | tempnam | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | xfopen | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | xfopen | 1 | -| string.cpp:19:6:19:9 | sink | (const mntent *,const char *) | | __hasmntopt | 1 | -| string.cpp:19:6:19:9 | sink | (const nis_error,const char *) | | nis_sperror | 1 | -| string.cpp:19:6:19:9 | sink | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| string.cpp:19:6:19:9 | sink | (curl_off_t *,const char *) | | str2offset | 1 | -| string.cpp:19:6:19:9 | sink | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| string.cpp:19:6:19:9 | sink | (curl_slist **,const char *) | | add2list | 1 | -| string.cpp:19:6:19:9 | sink | (curl_slist *,const char *) | | curl_slist_append | 1 | -| string.cpp:19:6:19:9 | sink | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| string.cpp:19:6:19:9 | sink | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| string.cpp:19:6:19:9 | sink | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| string.cpp:19:6:19:9 | sink | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| string.cpp:19:6:19:9 | sink | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| string.cpp:19:6:19:9 | sink | (gzFile,const char *) | | gzputs | 1 | -| string.cpp:19:6:19:9 | sink | (int,const char *) | | BIO_meth_new | 1 | -| string.cpp:19:6:19:9 | sink | (int,const char *) | | _IO_new_fdopen | 1 | -| string.cpp:19:6:19:9 | sink | (int,const char *) | | gzdopen | 1 | -| string.cpp:19:6:19:9 | sink | (int,const char *) | | setlocale | 1 | -| string.cpp:19:6:19:9 | sink | (int,const char *) | | xsetlocale | 1 | -| string.cpp:19:6:19:9 | sink | (lemon *,const char *) | | file_makename | 1 | -| string.cpp:19:6:19:9 | sink | (long *,const char *) | | secs2ms | 1 | -| string.cpp:19:6:19:9 | sink | (long *,const char *) | | str2num | 1 | -| string.cpp:19:6:19:9 | sink | (long *,const char *) | | str2unum | 1 | -| string.cpp:19:6:19:9 | sink | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| string.cpp:19:6:19:9 | sink | (size_t *,const char *) | | next_protos_parse | 1 | -| string.cpp:19:6:19:9 | sink | (slist_wc **,const char *) | | easysrc_add | 1 | -| string.cpp:19:6:19:9 | sink | (slist_wc *,const char *) | | slist_wc_append | 1 | -| string.cpp:19:6:19:9 | sink | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| string.cpp:19:6:19:9 | sink | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| string.cpp:19:6:19:9 | sink | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| string.cpp:19:6:19:9 | sink | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| string.cpp:19:6:19:9 | sink | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| string.cpp:19:6:19:9 | sink | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| string.cpp:19:6:19:9 | sink | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| string.cpp:19:6:19:9 | sink | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| string.cpp:19:6:19:9 | sink | (stringtable *,const char *) | | stringtable_add | 1 | -| string.cpp:19:6:19:9 | sink | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| string.cpp:19:6:19:9 | sink | (unsigned long *,const char *) | | set_cert_ex | 1 | -| string.cpp:19:6:19:9 | sink | (unsigned long *,const char *) | | set_name_ex | 1 | -| string.cpp:19:6:19:9 | sink | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| string.cpp:20:6:20:9 | sink | (char) | | Curl_raw_tolower | 0 | -| string.cpp:20:6:20:9 | sink | (char) | | Curl_raw_toupper | 0 | -| string.cpp:20:6:20:9 | sink | (char) | | findshortopt | 0 | -| string.cpp:20:6:20:9 | sink | (char) | | operator+= | 0 | -| string.cpp:20:6:20:9 | sink | (char) | CComBSTR | Append | 0 | -| string.cpp:20:6:20:9 | sink | (char) | CSimpleStringT | operator+= | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | ASN1_STRING_type_new | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | ASN1_tag2bit | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | ASN1_tag2str | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | Jim_ReturnCode | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | Jim_SignalId | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | OBJ_nid2ln | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | OBJ_nid2obj | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | OBJ_nid2sn | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | OSSL_trace_get_category_name | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | PKCS12_init | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | Symbol_Nth | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | X509_PURPOSE_get0 | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | X509_PURPOSE_get_by_id | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get0 | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __btowc | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __current_locale_name | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __fdopendir | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __get_errlist | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __get_errname | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __math_invalid_i | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __math_invalidf_i | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __p_class | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __p_rcode | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __p_type | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __pkey_get | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __sigdescr_np | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __strerrordesc_np | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | _tolower | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | _toupper | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | btowc | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | c_tolower | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | c_toupper | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | curlx_sitouz | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | evp_pkey_type2name | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | inet6_option_space | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isalnum | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isalpha | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isblank | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | iscntrl | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isdigit | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isgraph | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | islower | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isprint | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | ispunct | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isspace | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isupper | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isxdigit | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | ossl_tolower | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | ossl_toupper | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | sigabbrev_np | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | sqlite3_compileoption_get | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | sqlite3_errstr | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | strerrorname_np | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | support_report_failure | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | svcudp_create | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | tls13_alert_code | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | toascii | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | tolower | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | toupper | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | uabs | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | uv__accept | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_err_name | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_get_osfhandle | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_strerror | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_translate_sys_error | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | zError | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ASN1_STRING_type_new | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ASN1_tag2bit | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ASN1_tag2str | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | Jim_ReturnCode | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | Jim_SignalId | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | OBJ_nid2ln | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | OBJ_nid2obj | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | OBJ_nid2sn | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | OSSL_trace_get_category_name | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | PKCS12_init | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | Symbol_Nth | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_PURPOSE_get0 | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_PURPOSE_get_by_id | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_TRUST_get0 | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_TRUST_get_by_id | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __btowc | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __current_locale_name | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __fdopendir | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __get_errlist | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __get_errname | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __math_invalid_i | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __math_invalidf_i | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __p_class | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __p_rcode | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __p_type | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __pkey_get | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __sigdescr_np | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __strerrordesc_np | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | _tolower | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | _toupper | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | btowc | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | c_tolower | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | c_toupper | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | curlx_sitouz | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | evp_pkey_type2name | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | inet6_option_space | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isalnum | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isalpha | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isblank | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | iscntrl | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isdigit | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isgraph | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | islower | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isprint | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ispunct | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isspace | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isupper | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isxdigit | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ossl_tolower | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ossl_toupper | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | sigabbrev_np | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | sqlite3_compileoption_get | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | sqlite3_errstr | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | strerrorname_np | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | support_report_failure | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | svcudp_create | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | tls13_alert_code | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | toascii | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | tolower | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | toupper | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uabs | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv__accept | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_err_name | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_get_osfhandle | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_strerror | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_translate_sys_error | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | zError | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ASN1_STRING_type_new | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ASN1_tag2bit | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ASN1_tag2str | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | Jim_ReturnCode | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | Jim_SignalId | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | OBJ_nid2ln | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | OBJ_nid2obj | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | OBJ_nid2sn | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | OSSL_trace_get_category_name | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | PKCS12_init | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | Symbol_Nth | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_PURPOSE_get0 | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_PURPOSE_get_by_id | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_TRUST_get0 | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_TRUST_get_by_id | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __btowc | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __current_locale_name | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __fdopendir | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __get_errlist | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __get_errname | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __math_invalid_i | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __math_invalidf_i | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __p_class | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __p_rcode | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __p_type | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __pkey_get | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __sigdescr_np | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __strerrordesc_np | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | _tolower | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | _toupper | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | btowc | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | c_tolower | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | c_toupper | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | curlx_sitouz | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | evp_pkey_type2name | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | inet6_option_space | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isalnum | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isalpha | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isblank | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | iscntrl | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isdigit | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isgraph | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | islower | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isprint | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ispunct | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isspace | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isupper | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isxdigit | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ossl_tolower | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ossl_toupper | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | sigabbrev_np | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | sqlite3_compileoption_get | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | sqlite3_errstr | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | strerrorname_np | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | support_report_failure | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | svcudp_create | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | tls13_alert_code | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | toascii | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | tolower | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | toupper | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uabs | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv__accept | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_err_name | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_get_osfhandle | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_strerror | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_translate_sys_error | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | zError | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | __pthread_cleanup_class | __setdoit | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ASN1_STRING_type_new | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ASN1_tag2bit | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ASN1_tag2str | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | EVP_PKEY_asn1_get0 | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | Jim_ReturnCode | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | Jim_SignalId | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | OBJ_nid2ln | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | OBJ_nid2obj | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | OBJ_nid2sn | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | OSSL_STORE_INFO_type_string | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | OSSL_trace_get_category_name | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | PKCS12_init | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | Symbol_Nth | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_PURPOSE_get0 | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_PURPOSE_get_by_id | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_TRUST_get0 | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_TRUST_get_by_id | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __btowc | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __current_locale_name | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __fdopendir | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __get_errlist | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __get_errname | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __math_invalid_i | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __math_invalidf_i | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __p_class | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __p_rcode | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __p_type | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __pkey_get | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __sigdescr_np | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __strerrordesc_np | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | _tolower | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | _toupper | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | btowc | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | c_tolower | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | c_toupper | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | curlx_sitouz | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | evp_pkey_type2name | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | inet6_option_space | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isalnum | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isalpha | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isblank | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | iscntrl | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isdigit | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isgraph | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | islower | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isprint | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ispunct | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isspace | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isupper | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isxdigit | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ossl_cmp_bodytype_to_string | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ossl_tolower | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ossl_toupper | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | sigabbrev_np | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | sqlite3_compileoption_get | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | sqlite3_errstr | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | strerrorname_np | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | support_report_failure | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | svcudp_create | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | tls13_alert_code | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | toascii | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | tolower | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | toupper | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uabs | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv__accept | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_err_name | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_get_osfhandle | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_strerror | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_translate_sys_error | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | zError | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FTS *,int) | | fts_children | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (char **,int) | | addrsort | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | ftok | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (double,int) | | __ldexp | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (double,int) | | __scalbn | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (double[],int) | | getloadavg | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (float,int) | | __ldexpf | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (float,int) | | __scalbnf | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (gzFile,int) | | gzflush | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (gzFile,int) | | gzputc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | BN_security_bits | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | BN_security_bits | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | EVP_MD_meth_new | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | EVP_PKEY_meth_new | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | __isctype | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | __isctype | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | acttab_alloc | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | acttab_alloc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | div | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | div | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | inet6_rth_space | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (long double,int) | | __ldexpl | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:22:5:22:13 | increment | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | ASN1_tag2str | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | Jim_SignalId | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | PKCS12_init | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | Symbol_Nth | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __btowc | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __current_locale_name | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __fdopendir | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __get_errlist | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __get_errname | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __math_invalid_i | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __math_invalidf_i | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __p_class | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __p_rcode | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __p_type | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __pkey_get | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __sigdescr_np | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __strerrordesc_np | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | _tolower | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | _toupper | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | btowc | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | c_tolower | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | c_toupper | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | curlx_sitouz | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | inet6_option_space | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isalnum | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isalpha | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isblank | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | iscntrl | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isdigit | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isgraph | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | islower | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isprint | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | ispunct | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isspace | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isupper | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isxdigit | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | ossl_tolower | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | ossl_toupper | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | sigabbrev_np | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | sqlite3_errstr | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | strerrorname_np | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | support_report_failure | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | svcudp_create | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | tls13_alert_code | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | toascii | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | tolower | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | toupper | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | uabs | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | uv__accept | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | uv_err_name | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | uv_strerror | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | zError | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | ASN1_tag2str | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | Jim_SignalId | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | PKCS12_init | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | Symbol_Nth | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __btowc | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __current_locale_name | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __fdopendir | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __get_errlist | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __get_errname | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __math_invalid_i | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __math_invalidf_i | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __p_class | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __p_rcode | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __p_type | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __pkey_get | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __sigdescr_np | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __strerrordesc_np | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | _tolower | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | _toupper | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | btowc | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | c_tolower | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | c_toupper | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | curlx_sitouz | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | inet6_option_space | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isalnum | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isalpha | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isblank | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | iscntrl | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isdigit | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isgraph | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | islower | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isprint | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | ispunct | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isspace | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isupper | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isxdigit | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | ossl_tolower | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | ossl_toupper | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | sigabbrev_np | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | sqlite3_errstr | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | strerrorname_np | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | support_report_failure | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | svcudp_create | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | tls13_alert_code | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | toascii | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | tolower | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | toupper | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | uabs | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | uv__accept | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | uv_err_name | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | uv_strerror | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | zError | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | ASN1_tag2str | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | Jim_SignalId | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | PKCS12_init | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | Symbol_Nth | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __btowc | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __current_locale_name | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __fdopendir | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __get_errlist | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __get_errname | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __math_invalid_i | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __math_invalidf_i | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __p_class | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __p_rcode | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __p_type | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __pkey_get | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __sigdescr_np | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __strerrordesc_np | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | _tolower | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | _toupper | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | btowc | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | c_tolower | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | c_toupper | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | curlx_sitouz | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | inet6_option_space | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isalnum | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isalpha | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isblank | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | iscntrl | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isdigit | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isgraph | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | islower | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isprint | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | ispunct | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isspace | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isupper | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isxdigit | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | ossl_tolower | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | ossl_toupper | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | sigabbrev_np | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | sqlite3_errstr | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | strerrorname_np | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | support_report_failure | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | svcudp_create | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | tls13_alert_code | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | toascii | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | tolower | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | toupper | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | uabs | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | uv__accept | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | uv_err_name | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | uv_strerror | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | zError | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:142:5:142:10 | select | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 1 | -| taint.cpp:142:5:142:10 | select | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_OCTET_STRING **,const unsigned char *,int) | | ossl_cmp_asn1_octet_string_set1_bytes | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_OCTET_STRING *,const unsigned char *,int) | | ASN1_OCTET_STRING_set | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_STRING *,const void *,int) | | ASN1_STRING_set | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_STRING *,void *,int) | | ASN1_STRING_set0 | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_TIME *,tm *,int) | | ossl_asn1_time_from_tm | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_TYPE *,unsigned char *,int) | | ASN1_TYPE_set_octetstring | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_item_embed_free | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_primitive_free | 2 | -| taint.cpp:142:5:142:10 | select | (BIGNUM *,const BIGNUM *,int) | | BN_lshift | 2 | -| taint.cpp:142:5:142:10 | select | (BIGNUM *,const BIGNUM *,int) | | BN_rshift | 2 | -| taint.cpp:142:5:142:10 | select | (BIGNUM *,const BIGNUM *,int) | | BN_with_flags | 2 | -| taint.cpp:142:5:142:10 | select | (BIGNUM *,const BIGNUM *,int) | | bn_lshift_fixed_top | 2 | -| taint.cpp:142:5:142:10 | select | (BIGNUM *,const BIGNUM *,int) | | bn_rshift_fixed_top | 2 | -| taint.cpp:142:5:142:10 | select | (BIGNUM *,const unsigned long *,int) | | bn_set_static_words | 2 | -| taint.cpp:142:5:142:10 | select | (BIGNUM *,const unsigned long *,int) | | bn_set_words | 2 | -| taint.cpp:142:5:142:10 | select | (BIO *,BIO *,int) | | OSSL_HTTP_REQ_CTX_new | 2 | -| taint.cpp:142:5:142:10 | select | (BIO *,BIO *,int) | | SMIME_crlf_copy | 2 | -| taint.cpp:142:5:142:10 | select | (BIO *,GENERAL_NAMES *,int) | | OSSL_GENERAL_NAMES_print | 2 | -| taint.cpp:142:5:142:10 | select | (BIO *,char *,int) | | BIO_get_line | 2 | -| taint.cpp:142:5:142:10 | select | (BIO *,const DSA *,int) | | DSA_print | 2 | -| taint.cpp:142:5:142:10 | select | (BIO *,const RSA *,int) | | RSA_print | 2 | -| taint.cpp:142:5:142:10 | select | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | -| taint.cpp:142:5:142:10 | select | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | -| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | -| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | -| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | -| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | -| taint.cpp:142:5:142:10 | select | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | -| taint.cpp:142:5:142:10 | select | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | -| taint.cpp:142:5:142:10 | select | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | -| taint.cpp:142:5:142:10 | select | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | -| taint.cpp:142:5:142:10 | select | (EC_KEY *,const OSSL_PARAM[],int) | | ossl_ec_key_fromdata | 2 | -| taint.cpp:142:5:142:10 | select | (ENGINE *,ENGINE_DYNAMIC_ID,int) | | engine_add_dynamic_id | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_export_to_provider | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_find_operation_cache | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY *,EVP_PKEY *,int) | | evp_keymgmt_util_copy | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,EVP_PKEY *,int) | | EVP_PKEY_derive_set_peer_ex | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const char *,int) | | EVP_PKEY_CTX_set1_pbe_pass | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_hkdf_info | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_tls1_prf_seed | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_key | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_salt | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_scrypt_salt | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_tls1_prf_secret | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set_mac_key | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const void *,int) | | EVP_PKEY_CTX_set1_id | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,int *,int) | | EVP_PKEY_CTX_set0_keygen_info | 2 | -| taint.cpp:142:5:142:10 | select | (FFC_PARAMS *,unsigned int,int) | | ossl_ffc_params_enable_flags | 2 | -| taint.cpp:142:5:142:10 | select | (FILE *,_IO_marker *,int) | | _IO_seekmark | 2 | -| taint.cpp:142:5:142:10 | select | (FILE *,_IO_marker *,int) | | _IO_seekwmark | 2 | -| taint.cpp:142:5:142:10 | select | (FILE *,__FILE *,int) | | fwide | 2 | -| taint.cpp:142:5:142:10 | select | (FILE *,const DSA *,int) | | DSA_print_fp | 2 | -| taint.cpp:142:5:142:10 | select | (FILE *,const RSA *,int) | | RSA_print_fp | 2 | -| taint.cpp:142:5:142:10 | select | (FILE *,off64_t,int) | | _IO_cookie_seek | 2 | -| taint.cpp:142:5:142:10 | select | (FILE *,rule *,int) | | RulePrint | 2 | -| taint.cpp:142:5:142:10 | select | (FTS *,FTSENT *,int) | | fts_set | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetCommand | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetGlobalVariable | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetVariable | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,Jim_Obj *,int) | | Jim_ListGetIndex | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,Jim_Obj *,int) | | Jim_UnsetVariable | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewDictObj | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewListObj | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,char *,int) | | Jim_NewStringObjNoAlloc | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_GetGlobalVariableStr | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_GetVariableStr | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | -| taint.cpp:142:5:142:10 | select | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 1 | -| taint.cpp:142:5:142:10 | select | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | -| taint.cpp:142:5:142:10 | select | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_ONEREQ *,X509_EXTENSION *,int) | | OCSP_ONEREQ_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_ONEREQ *,const ASN1_OBJECT *,int) | | OCSP_ONEREQ_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_REQUEST *,X509_EXTENSION *,int) | | OCSP_REQUEST_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_REQUEST *,const ASN1_OBJECT *,int) | | OCSP_REQUEST_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_SINGLERESP *,X509_EXTENSION *,int) | | OCSP_SINGLERESP_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_SINGLERESP *,const ASN1_OBJECT *,int) | | OCSP_SINGLERESP_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (OPENSSL_STACK *,const void *,int) | | OPENSSL_sk_insert | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_referenceValue | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_secretValue | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_CMP_CTX *,int,int) | | OSSL_CMP_CTX_set_option | 1 | -| taint.cpp:142:5:142:10 | select | (OSSL_CMP_CTX *,int,int) | | OSSL_CMP_CTX_set_option | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | EC_GROUP_new_by_curve_name_ex | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | EC_KEY_new_by_curve_name_ex | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | OSSL_PROVIDER_try_load | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_dsa_key_new | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_kem_key_new | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | ossl_parse_query | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_name | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_value | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_PROVIDER *,OSSL_PROVIDER **,int) | | ossl_provider_add_to_store | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_QRL_ENC_LEVEL_SET *,uint32_t,int) | | ossl_qrl_enc_level_set_get | 2 | -| taint.cpp:142:5:142:10 | select | (PKCS7 *,stack_st_X509 *,int) | | PKCS7_get0_signers | 2 | -| taint.cpp:142:5:142:10 | select | (POLICYINFO *,const ASN1_OBJECT *,int) | | ossl_policy_data_new | 2 | -| taint.cpp:142:5:142:10 | select | (PROV_CTX *,const char *,int) | | ossl_prov_ctx_get_bool_param | 2 | -| taint.cpp:142:5:142:10 | select | (PROV_CTX *,const char *,int) | | ossl_prov_ml_dsa_new | 2 | -| taint.cpp:142:5:142:10 | select | (PROV_CTX *,const char *,int) | | ossl_prov_ml_kem_new | 2 | -| taint.cpp:142:5:142:10 | select | (QLOG *,uint32_t,int) | | ossl_qlog_set_event_type_enabled | 2 | -| taint.cpp:142:5:142:10 | select | (QUIC_RXFC *,uint64_t,int) | | ossl_quic_rxfc_on_rx_stream_frame | 2 | -| taint.cpp:142:5:142:10 | select | (QUIC_STREAM_ITER *,QUIC_STREAM_MAP *,int) | | ossl_quic_stream_iter_init | 2 | -| taint.cpp:142:5:142:10 | select | (QUIC_STREAM_MAP *,uint64_t,int) | | ossl_quic_stream_map_alloc | 2 | -| taint.cpp:142:5:142:10 | select | (RSA *,const OSSL_PARAM[],int) | | ossl_rsa_fromdata | 2 | -| taint.cpp:142:5:142:10 | select | (SSL *,const unsigned char *,int) | | SSL_use_certificate_ASN1 | 2 | -| taint.cpp:142:5:142:10 | select | (SSL *,const void *,int) | | SSL_write | 2 | -| taint.cpp:142:5:142:10 | select | (SSL *,void *,int) | | SSL_peek | 2 | -| taint.cpp:142:5:142:10 | select | (SSL *,void *,int) | | SSL_read | 2 | -| taint.cpp:142:5:142:10 | select | (SSL *,void *,int) | | SSL_set_session_ticket_ext | 2 | -| taint.cpp:142:5:142:10 | select | (SSL_CIPHER *,const SSL_CIPHER *,int) | | OBJ_bsearch_ssl_cipher_id | 2 | -| taint.cpp:142:5:142:10 | select | (SSL_CONNECTION *,PACKET *,int) | | ssl_cache_cipherlist | 2 | -| taint.cpp:142:5:142:10 | select | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_close_construct_packet | 2 | -| taint.cpp:142:5:142:10 | select | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_set_handshake_header | 2 | -| taint.cpp:142:5:142:10 | select | (SSL_CONNECTION *,WPACKET *,int) | | tls_close_construct_packet | 2 | -| taint.cpp:142:5:142:10 | select | (SSL_CONNECTION *,int,int) | | ssl3_send_alert | 1 | -| taint.cpp:142:5:142:10 | select | (SSL_CONNECTION *,int,int) | | ssl3_send_alert | 2 | -| taint.cpp:142:5:142:10 | select | (TS_MSG_IMPRINT *,unsigned char *,int) | | TS_MSG_IMPRINT_set_msg | 2 | -| taint.cpp:142:5:142:10 | select | (TS_REQ *,X509_EXTENSION *,int) | | TS_REQ_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (TS_REQ *,const ASN1_OBJECT *,int) | | TS_REQ_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (TS_TST_INFO *,X509_EXTENSION *,int) | | TS_TST_INFO_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (TS_TST_INFO *,const ASN1_OBJECT *,int) | | TS_TST_INFO_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (X509 *,X509_EXTENSION *,int) | | X509_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (X509 *,int,int) | | X509_check_purpose | 1 | -| taint.cpp:142:5:142:10 | select | (X509 *,int,int) | | X509_check_purpose | 2 | -| taint.cpp:142:5:142:10 | select | (X509 *,int,int) | | X509_check_trust | 1 | -| taint.cpp:142:5:142:10 | select | (X509 *,int,int) | | X509_check_trust | 2 | -| taint.cpp:142:5:142:10 | select | (X509_CRL *,X509_EXTENSION *,int) | | X509_CRL_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (X509_PUBKEY *,unsigned char *,int) | | X509_PUBKEY_set0_public_key | 2 | -| taint.cpp:142:5:142:10 | select | (X509_REVOKED *,X509_EXTENSION *,int) | | X509_REVOKED_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (X509_STORE_CTX *,X509 *,int) | | ossl_x509_check_cert_time | 2 | -| taint.cpp:142:5:142:10 | select | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | -| taint.cpp:142:5:142:10 | select | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | -| taint.cpp:142:5:142:10 | select | (_Float128,_Float128,int) | | __kernel_sinf128 | 2 | -| taint.cpp:142:5:142:10 | select | (_Float128,_Float128,int) | | __kernel_tanf128 | 2 | -| taint.cpp:142:5:142:10 | select | (_IO_strfile *,const char *,int) | | _IO_str_init_readonly | 2 | -| taint.cpp:142:5:142:10 | select | (action *,FILE *,int) | | PrintAction | 2 | -| taint.cpp:142:5:142:10 | select | (acttab *,int,int) | | acttab_action | 1 | -| taint.cpp:142:5:142:10 | select | (acttab *,int,int) | | acttab_action | 2 | -| taint.cpp:142:5:142:10 | select | (char *,size_t,int) | | __argz_stringify | 2 | -| taint.cpp:142:5:142:10 | select | (const ASN1_VALUE *,const ASN1_TEMPLATE *,int) | | ossl_asn1_do_adb | 2 | -| taint.cpp:142:5:142:10 | select | (const BIGNUM *,int[],int) | | BN_GF2m_poly2arr | 2 | -| taint.cpp:142:5:142:10 | select | (const BIGNUM *,unsigned char *,int) | | BN_bn2binpad | 2 | -| taint.cpp:142:5:142:10 | select | (const BIGNUM *,unsigned char *,int) | | BN_bn2lebinpad | 2 | -| taint.cpp:142:5:142:10 | select | (const BIGNUM *,unsigned char *,int) | | BN_bn2nativepad | 2 | -| taint.cpp:142:5:142:10 | select | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2bin | 2 | -| taint.cpp:142:5:142:10 | select | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2lebin | 2 | -| taint.cpp:142:5:142:10 | select | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2native | 2 | -| taint.cpp:142:5:142:10 | select | (const CMS_ContentInfo *,BIO *,int) | | ossl_cms_DigestedData_do_final | 2 | -| taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_signed_get_attr_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | -| taint.cpp:142:5:142:10 | select | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | -| taint.cpp:142:5:142:10 | select | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const OSSL_PARAM *,BIO *,int) | | OSSL_PARAM_print_to_bio | 2 | -| taint.cpp:142:5:142:10 | select | (const OSSL_PROVIDER *,const char *,int) | | OSSL_PROVIDER_conf_get_bool | 2 | -| taint.cpp:142:5:142:10 | select | (const SSL *,char *,int) | | SSL_get_shared_ciphers | 2 | -| taint.cpp:142:5:142:10 | select | (const SSL *,int,int) | | apps_ssl_info_callback | 1 | -| taint.cpp:142:5:142:10 | select | (const SSL *,int,int) | | apps_ssl_info_callback | 2 | -| taint.cpp:142:5:142:10 | select | (const SSL_CIPHER *,char *,int) | | SSL_CIPHER_description | 2 | -| taint.cpp:142:5:142:10 | select | (const X509 *,const ASN1_OBJECT *,int) | | X509_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const X509 *,const stack_st_X509 *,int) | | OSSL_ESS_signing_cert_new_init | 2 | -| taint.cpp:142:5:142:10 | select | (const X509 *,int,int) | | X509_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const X509 *,int,int) | | X509_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const X509 *,int,int) | | X509_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (const X509 *,int,int) | | X509_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_ACERT *,const ASN1_OBJECT *,int) | | X509_ACERT_get_attr_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_ACERT *,int,int) | | X509_ACERT_get_attr_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const X509_ACERT *,int,int) | | X509_ACERT_get_attr_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_CRL *,const ASN1_OBJECT *,int) | | X509_CRL_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_CRL *,const X509 *,int) | | OSSL_CMP_CRLSTATUS_create | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_NAME *,char *,int) | | X509_NAME_oneline | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_NAME *,const ASN1_OBJECT *,int) | | X509_NAME_get_index_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_NAME *,int,int) | | X509_NAME_get_index_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const X509_NAME *,int,int) | | X509_NAME_get_index_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_REQ *,const ASN1_OBJECT *,int) | | X509_REQ_get_attr_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_REQ *,int,int) | | X509_REQ_get_attr_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const X509_REQ *,int,int) | | X509_REQ_get_attr_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,const ASN1_OBJECT *,int) | | X509_REVOKED_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,char **,int) | | __strtol | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,char **,int) | | __strtoul | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,const char *,int) | | CRYPTO_strdup | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,const char *,int) | | __dcgettext | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,int,int) | | __old_strpbrk_c2 | 1 | -| taint.cpp:142:5:142:10 | select | (const char *,int,int) | | __old_strpbrk_c2 | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,long *,int) | | Jim_StringToWide | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,size_t *,int) | | _dl_sysdep_read_whole_file | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,sqlite3_filename,int) | | sqlite3_uri_key | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,void *,int) | | support_readdir_check | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,wordexp_t *,int) | | wordexp | 2 | -| taint.cpp:142:5:142:10 | select | (const cmsghdr *,uint8_t **,int) | | inet6_option_find | 2 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_ATTRIBUTE *,const ASN1_OBJECT *,int) | | X509at_get_attr_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_ATTRIBUTE *,int,int) | | X509at_get_attr_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_ATTRIBUTE *,int,int) | | X509at_get_attr_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | -| taint.cpp:142:5:142:10 | select | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | -| taint.cpp:142:5:142:10 | select | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | -| taint.cpp:142:5:142:10 | select | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | -| taint.cpp:142:5:142:10 | select | (const void *,socklen_t,int) | | res_gethostbyaddr | 2 | -| taint.cpp:142:5:142:10 | select | (const wchar_t *,wchar_t **,int) | | __wcstol | 2 | -| taint.cpp:142:5:142:10 | select | (const wchar_t *,wchar_t **,int) | | __wcstoul | 2 | -| taint.cpp:142:5:142:10 | select | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | -| taint.cpp:142:5:142:10 | select | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | -| taint.cpp:142:5:142:10 | select | (database_dyn *,size_t,int) | | mempool_alloc | 2 | -| taint.cpp:142:5:142:10 | select | (database_dyn *,time_t,int) | | prune_cache | 2 | -| taint.cpp:142:5:142:10 | select | (double,double,int) | | __kernel_standard | 2 | -| taint.cpp:142:5:142:10 | select | (float,float,int) | | __kernel_standard_f | 2 | -| taint.cpp:142:5:142:10 | select | (gconv_spec *,__gconv_t *,int) | | __gconv_open | 2 | -| taint.cpp:142:5:142:10 | select | (gzFile,char *,int) | | gzgets | 2 | -| taint.cpp:142:5:142:10 | select | (gzFile,int,int) | | gzsetparams | 1 | -| taint.cpp:142:5:142:10 | select | (gzFile,int,int) | | gzsetparams | 2 | -| taint.cpp:142:5:142:10 | select | (gzFile,off64_t,int) | | gzseek64 | 2 | -| taint.cpp:142:5:142:10 | select | (gzFile,off_t,int) | | gzseek | 2 | -| taint.cpp:142:5:142:10 | select | (int *,short *,int) | | __lll_lock_elision | 2 | -| taint.cpp:142:5:142:10 | select | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | -| taint.cpp:142:5:142:10 | select | (int,int,int) | | ASN1_object_size | 0 | -| taint.cpp:142:5:142:10 | select | (int,int,int) | | ASN1_object_size | 1 | -| taint.cpp:142:5:142:10 | select | (int,int,int) | | ASN1_object_size | 2 | -| taint.cpp:142:5:142:10 | select | (int,int,int) | | EVP_CIPHER_meth_new | 0 | -| taint.cpp:142:5:142:10 | select | (int,int,int) | | EVP_CIPHER_meth_new | 1 | -| taint.cpp:142:5:142:10 | select | (int,int,int) | | EVP_CIPHER_meth_new | 2 | -| taint.cpp:142:5:142:10 | select | (long double,long double,int) | | __kernel_sinl | 2 | -| taint.cpp:142:5:142:10 | select | (long double,long double,int) | | __kernel_standard_l | 2 | -| taint.cpp:142:5:142:10 | select | (long double,long double,int) | | __kernel_tanl | 2 | -| taint.cpp:142:5:142:10 | select | (mp_srcptr,int,int) | | __mpn_construct_double | 1 | -| taint.cpp:142:5:142:10 | select | (mp_srcptr,int,int) | | __mpn_construct_double | 2 | -| taint.cpp:142:5:142:10 | select | (mp_srcptr,int,int) | | __mpn_construct_float | 1 | -| taint.cpp:142:5:142:10 | select | (mp_srcptr,int,int) | | __mpn_construct_float | 2 | -| taint.cpp:142:5:142:10 | select | (mp_srcptr,int,int) | | __mpn_construct_float128 | 1 | -| taint.cpp:142:5:142:10 | select | (mp_srcptr,int,int) | | __mpn_construct_float128 | 2 | -| taint.cpp:142:5:142:10 | select | (regex_t *,const char *,int) | | jim_regcomp | 2 | -| taint.cpp:142:5:142:10 | select | (requestlist *,requestlist *,int) | | __aio_remove_request | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3 *,const char *,int) | | sqlite3_overload_function | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3 *,int,int) | | sqlite3_limit | 1 | -| taint.cpp:142:5:142:10 | select | (sqlite3 *,int,int) | | sqlite3_limit | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3_context *,const char *,int) | | sqlite3_result_error | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3_context *,const void *,int) | | sqlite3_result_error16 | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3_index_info *,int,int) | | sqlite3_vtab_in | 1 | -| taint.cpp:142:5:142:10 | select | (sqlite3_index_info *,int,int) | | sqlite3_vtab_in | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3_stmt *,int,int) | | sqlite3_bind_int | 1 | -| taint.cpp:142:5:142:10 | select | (sqlite3_stmt *,int,int) | | sqlite3_bind_int | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3_stmt *,int,int) | | sqlite3_bind_zeroblob | 1 | -| taint.cpp:142:5:142:10 | select | (sqlite3_stmt *,int,int) | | sqlite3_bind_zeroblob | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3_stmt *,int,int) | | sqlite3_stmt_status | 1 | -| taint.cpp:142:5:142:10 | select | (sqlite3_stmt *,int,int) | | sqlite3_stmt_status | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3_str *,const char *,int) | | sqlite3_str_append | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3expert *,int,int) | | sqlite3_expert_report | 1 | -| taint.cpp:142:5:142:10 | select | (sqlite3expert *,int,int) | | sqlite3_expert_report | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509 **,X509 *,int) | | ossl_x509_add_cert_new | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509 **,stack_st_X509 *,int) | | ossl_x509_add_certs_new | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509 *,ASIdentifiers *,int) | | X509v3_asid_validate_resource_set | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509 *,IPAddrBlocks *,int) | | X509v3_addr_validate_resource_set | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509 *,X509 *,int) | | X509_add_cert | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509 *,stack_st_X509 *,int) | | X509_add_certs | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509_ALGOR **,int,int) | | CMS_add_simple_smimecap | 1 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509_ALGOR **,int,int) | | CMS_add_simple_smimecap | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509_ALGOR *,int,int) | | PKCS7_simple_smimecap | 1 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509_ALGOR *,int,int) | | PKCS7_simple_smimecap | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509_EXTENSION **,X509_EXTENSION *,int) | | X509v3_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (td_thragent_t *,uint32_t *,int) | | _td_check_sizeof | 2 | -| taint.cpp:142:5:142:10 | select | (uint8_t[56],const gf,int) | | gf_serialize | 2 | -| taint.cpp:142:5:142:10 | select | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned char *,const char *,int) | | data_string | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned char *,const unsigned char *,int) | | EVP_EncodeBlock | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned int,const char *,int) | | _IO_adjust_column | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned int,const wchar_t *,int) | | _IO_adjust_wcolumn | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned int,int,int) | | ossl_blob_length | 1 | -| taint.cpp:142:5:142:10 | select | (unsigned int,int,int) | | ossl_blob_length | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | -| taint.cpp:142:5:142:10 | select | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | -| taint.cpp:142:5:142:10 | select | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | -| taint.cpp:142:5:142:10 | select | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | -| taint.cpp:142:5:142:10 | select | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | -| taint.cpp:142:5:142:10 | select | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | -| taint.cpp:142:5:142:10 | select | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | -| taint.cpp:142:5:142:10 | select | (uv_stream_t *,int,int) | | uv__stream_open | 1 | -| taint.cpp:142:5:142:10 | select | (uv_stream_t *,int,int) | | uv__stream_open | 2 | -| taint.cpp:142:5:142:10 | select | (void *,cmsghdr **,int) | | inet6_option_init | 2 | -| taint.cpp:142:5:142:10 | select | (void *,const char *,int) | | CRYPTO_secure_free | 2 | -| taint.cpp:142:5:142:10 | select | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | -| taint.cpp:142:5:142:10 | select | (void *,socklen_t,int) | | inet6_opt_finish | 2 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | ASN1_tag2str | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | Jim_SignalId | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | PKCS12_init | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | Symbol_Nth | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __btowc | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __current_locale_name | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __fdopendir | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __get_errlist | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __get_errname | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __math_invalid_i | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __math_invalidf_i | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __p_class | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __p_rcode | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __p_type | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __pkey_get | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __sigdescr_np | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __strerrordesc_np | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | _tolower | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | _toupper | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | btowc | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | c_tolower | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | c_toupper | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | curlx_sitouz | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | inet6_option_space | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isalnum | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isalpha | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isblank | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | iscntrl | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isdigit | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isgraph | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | islower | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isprint | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | ispunct | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isspace | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isupper | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isxdigit | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | ossl_tolower | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | ossl_toupper | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | sigabbrev_np | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | sqlite3_errstr | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | strerrorname_np | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | support_report_failure | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | svcudp_create | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | tls13_alert_code | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | toascii | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | tolower | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | toupper | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | uabs | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | uv__accept | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_err_name | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_strerror | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | zError | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:156:7:156:12 | strcpy | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| taint.cpp:156:7:156:12 | strcpy | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| taint.cpp:156:7:156:12 | strcpy | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| taint.cpp:156:7:156:12 | strcpy | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| taint.cpp:156:7:156:12 | strcpy | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| taint.cpp:156:7:156:12 | strcpy | (CONF *,const char *) | | _CONF_new_section | 1 | -| taint.cpp:156:7:156:12 | strcpy | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| taint.cpp:156:7:156:12 | strcpy | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| taint.cpp:156:7:156:12 | strcpy | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| taint.cpp:156:7:156:12 | strcpy | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| taint.cpp:156:7:156:12 | strcpy | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| taint.cpp:156:7:156:12 | strcpy | (DSO *,const char *) | | DSO_convert_filename | 1 | -| taint.cpp:156:7:156:12 | strcpy | (DSO *,const char *) | | DSO_set_filename | 1 | -| taint.cpp:156:7:156:12 | strcpy | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| taint.cpp:156:7:156:12 | strcpy | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| taint.cpp:156:7:156:12 | strcpy | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| taint.cpp:156:7:156:12 | strcpy | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (GlobalConfig *,const char *) | | setvariable | 1 | -| taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| taint.cpp:156:7:156:12 | strcpy | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| taint.cpp:156:7:156:12 | strcpy | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| taint.cpp:156:7:156:12 | strcpy | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| taint.cpp:156:7:156:12 | strcpy | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| taint.cpp:156:7:156:12 | strcpy | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| taint.cpp:156:7:156:12 | strcpy | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL *,const char *) | | SSL_add1_host | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL *,const char *) | | SSL_set1_host | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| taint.cpp:156:7:156:12 | strcpy | (UI *,const char *) | | UI_add_error_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (UI *,const char *) | | UI_add_info_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (UI *,const char *) | | UI_dup_error_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (UI *,const char *) | | UI_dup_info_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (X509 *,const char *) | | x509_ctrl_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| taint.cpp:156:7:156:12 | strcpy | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| taint.cpp:156:7:156:12 | strcpy | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| taint.cpp:156:7:156:12 | strcpy | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| taint.cpp:156:7:156:12 | strcpy | (char **,const char *) | | Curl_setstropt | 1 | -| taint.cpp:156:7:156:12 | strcpy | (char **,const char *) | | __strsep | 1 | -| taint.cpp:156:7:156:12 | strcpy | (char *,const char *) | | xstrdup | 0 | -| taint.cpp:156:7:156:12 | strcpy | (char *,const char *) | | xstrdup | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | Configcmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | Curl_timestrcmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | DES_crypt | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __bindtextdomain | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __dgettext | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __gconv_compare_alias | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strcasestr | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strcspn_generic | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strcspn_sse42 | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strpbrk_generic | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strspn_generic | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strspn_sse42 | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strstr_generic | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strverscmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | advance | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | c_strcasecmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | charmap_aliases | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | charmap_open | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | chroot_canon | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | get_passwd | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | gzopen | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | gzopen64 | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | iconv_open | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | openssl_fopen | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | sqlite3_strglob | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | sqlite3_stricmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | step | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | tempnam | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | xfopen | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const mntent *,const char *) | | __hasmntopt | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const nis_error,const char *) | | nis_sperror | 1 | -| taint.cpp:156:7:156:12 | strcpy | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| taint.cpp:156:7:156:12 | strcpy | (curl_off_t *,const char *) | | str2offset | 1 | -| taint.cpp:156:7:156:12 | strcpy | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| taint.cpp:156:7:156:12 | strcpy | (curl_slist **,const char *) | | add2list | 1 | -| taint.cpp:156:7:156:12 | strcpy | (curl_slist *,const char *) | | curl_slist_append | 1 | -| taint.cpp:156:7:156:12 | strcpy | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| taint.cpp:156:7:156:12 | strcpy | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| taint.cpp:156:7:156:12 | strcpy | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| taint.cpp:156:7:156:12 | strcpy | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| taint.cpp:156:7:156:12 | strcpy | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| taint.cpp:156:7:156:12 | strcpy | (gzFile,const char *) | | gzputs | 1 | -| taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | BIO_meth_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | _IO_new_fdopen | 1 | -| taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | gzdopen | 1 | -| taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | setlocale | 1 | -| taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | xsetlocale | 1 | -| taint.cpp:156:7:156:12 | strcpy | (lemon *,const char *) | | file_makename | 1 | -| taint.cpp:156:7:156:12 | strcpy | (long *,const char *) | | secs2ms | 1 | -| taint.cpp:156:7:156:12 | strcpy | (long *,const char *) | | str2num | 1 | -| taint.cpp:156:7:156:12 | strcpy | (long *,const char *) | | str2unum | 1 | -| taint.cpp:156:7:156:12 | strcpy | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| taint.cpp:156:7:156:12 | strcpy | (size_t *,const char *) | | next_protos_parse | 1 | -| taint.cpp:156:7:156:12 | strcpy | (slist_wc **,const char *) | | easysrc_add | 1 | -| taint.cpp:156:7:156:12 | strcpy | (slist_wc *,const char *) | | slist_wc_append | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| taint.cpp:156:7:156:12 | strcpy | (stringtable *,const char *) | | stringtable_add | 1 | -| taint.cpp:156:7:156:12 | strcpy | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| taint.cpp:156:7:156:12 | strcpy | (unsigned long *,const char *) | | set_cert_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (unsigned long *,const char *) | | set_name_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| taint.cpp:157:7:157:12 | strcat | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| taint.cpp:157:7:157:12 | strcat | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| taint.cpp:157:7:157:12 | strcat | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| taint.cpp:157:7:157:12 | strcat | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| taint.cpp:157:7:157:12 | strcat | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| taint.cpp:157:7:157:12 | strcat | (CONF *,const char *) | | _CONF_new_section | 1 | -| taint.cpp:157:7:157:12 | strcat | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| taint.cpp:157:7:157:12 | strcat | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| taint.cpp:157:7:157:12 | strcat | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| taint.cpp:157:7:157:12 | strcat | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| taint.cpp:157:7:157:12 | strcat | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| taint.cpp:157:7:157:12 | strcat | (DSO *,const char *) | | DSO_convert_filename | 1 | -| taint.cpp:157:7:157:12 | strcat | (DSO *,const char *) | | DSO_set_filename | 1 | -| taint.cpp:157:7:157:12 | strcat | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| taint.cpp:157:7:157:12 | strcat | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| taint.cpp:157:7:157:12 | strcat | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| taint.cpp:157:7:157:12 | strcat | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (GlobalConfig *,const char *) | | setvariable | 1 | -| taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| taint.cpp:157:7:157:12 | strcat | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| taint.cpp:157:7:157:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| taint.cpp:157:7:157:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| taint.cpp:157:7:157:12 | strcat | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| taint.cpp:157:7:157:12 | strcat | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| taint.cpp:157:7:157:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| taint.cpp:157:7:157:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| taint.cpp:157:7:157:12 | strcat | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| taint.cpp:157:7:157:12 | strcat | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL *,const char *) | | SSL_add1_host | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL *,const char *) | | SSL_set1_host | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| taint.cpp:157:7:157:12 | strcat | (UI *,const char *) | | UI_add_error_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (UI *,const char *) | | UI_add_info_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (UI *,const char *) | | UI_dup_error_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (UI *,const char *) | | UI_dup_info_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (X509 *,const char *) | | x509_ctrl_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| taint.cpp:157:7:157:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| taint.cpp:157:7:157:12 | strcat | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| taint.cpp:157:7:157:12 | strcat | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| taint.cpp:157:7:157:12 | strcat | (char **,const char *) | | Curl_setstropt | 1 | -| taint.cpp:157:7:157:12 | strcat | (char **,const char *) | | __strsep | 1 | -| taint.cpp:157:7:157:12 | strcat | (char *,const char *) | | xstrdup | 0 | -| taint.cpp:157:7:157:12 | strcat | (char *,const char *) | | xstrdup | 1 | -| taint.cpp:157:7:157:12 | strcat | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | Configcmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | Curl_timestrcmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | DES_crypt | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __bindtextdomain | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __dgettext | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __gconv_compare_alias | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strcasestr | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strcspn_generic | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strcspn_sse42 | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strpbrk_generic | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strspn_generic | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strspn_sse42 | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strstr_generic | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strverscmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | advance | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | c_strcasecmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | charmap_aliases | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | charmap_open | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | chroot_canon | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | get_passwd | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | gzopen | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | gzopen64 | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | iconv_open | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | openssl_fopen | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | sqlite3_strglob | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | sqlite3_stricmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | step | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | tempnam | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | xfopen | 1 | -| taint.cpp:157:7:157:12 | strcat | (const mntent *,const char *) | | __hasmntopt | 1 | -| taint.cpp:157:7:157:12 | strcat | (const nis_error,const char *) | | nis_sperror | 1 | -| taint.cpp:157:7:157:12 | strcat | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| taint.cpp:157:7:157:12 | strcat | (curl_off_t *,const char *) | | str2offset | 1 | -| taint.cpp:157:7:157:12 | strcat | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| taint.cpp:157:7:157:12 | strcat | (curl_slist **,const char *) | | add2list | 1 | -| taint.cpp:157:7:157:12 | strcat | (curl_slist *,const char *) | | curl_slist_append | 1 | -| taint.cpp:157:7:157:12 | strcat | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| taint.cpp:157:7:157:12 | strcat | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| taint.cpp:157:7:157:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| taint.cpp:157:7:157:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| taint.cpp:157:7:157:12 | strcat | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| taint.cpp:157:7:157:12 | strcat | (gzFile,const char *) | | gzputs | 1 | -| taint.cpp:157:7:157:12 | strcat | (int,const char *) | | BIO_meth_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (int,const char *) | | _IO_new_fdopen | 1 | -| taint.cpp:157:7:157:12 | strcat | (int,const char *) | | gzdopen | 1 | -| taint.cpp:157:7:157:12 | strcat | (int,const char *) | | setlocale | 1 | -| taint.cpp:157:7:157:12 | strcat | (int,const char *) | | xsetlocale | 1 | -| taint.cpp:157:7:157:12 | strcat | (lemon *,const char *) | | file_makename | 1 | -| taint.cpp:157:7:157:12 | strcat | (long *,const char *) | | secs2ms | 1 | -| taint.cpp:157:7:157:12 | strcat | (long *,const char *) | | str2num | 1 | -| taint.cpp:157:7:157:12 | strcat | (long *,const char *) | | str2unum | 1 | -| taint.cpp:157:7:157:12 | strcat | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| taint.cpp:157:7:157:12 | strcat | (size_t *,const char *) | | next_protos_parse | 1 | -| taint.cpp:157:7:157:12 | strcat | (slist_wc **,const char *) | | easysrc_add | 1 | -| taint.cpp:157:7:157:12 | strcat | (slist_wc *,const char *) | | slist_wc_append | 1 | -| taint.cpp:157:7:157:12 | strcat | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| taint.cpp:157:7:157:12 | strcat | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| taint.cpp:157:7:157:12 | strcat | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| taint.cpp:157:7:157:12 | strcat | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| taint.cpp:157:7:157:12 | strcat | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| taint.cpp:157:7:157:12 | strcat | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| taint.cpp:157:7:157:12 | strcat | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| taint.cpp:157:7:157:12 | strcat | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| taint.cpp:157:7:157:12 | strcat | (stringtable *,const char *) | | stringtable_add | 1 | -| taint.cpp:157:7:157:12 | strcat | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| taint.cpp:157:7:157:12 | strcat | (unsigned long *,const char *) | | set_cert_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (unsigned long *,const char *) | | set_name_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| taint.cpp:180:7:180:12 | callee | (int *) | | rresvport | 0 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_OCTET_STRING **,const unsigned char *,int) | | ossl_cmp_asn1_octet_string_set1_bytes | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_OCTET_STRING *,const unsigned char *,int) | | ASN1_OCTET_STRING_set | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_STRING *,const void *,int) | | ASN1_STRING_set | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_STRING *,void *,int) | | ASN1_STRING_set0 | 1 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_STRING *,void *,int) | | ASN1_STRING_set0 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_TIME *,tm *,int) | | ossl_asn1_time_from_tm | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_TYPE *,unsigned char *,int) | | ASN1_TYPE_set_octetstring | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_item_embed_free | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_primitive_free | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIGNUM *,const BIGNUM *,int) | | BN_lshift | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIGNUM *,const BIGNUM *,int) | | BN_rshift | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIGNUM *,const BIGNUM *,int) | | BN_with_flags | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIGNUM *,const BIGNUM *,int) | | bn_lshift_fixed_top | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIGNUM *,const BIGNUM *,int) | | bn_rshift_fixed_top | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIGNUM *,const unsigned long *,int) | | bn_set_static_words | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIGNUM *,const unsigned long *,int) | | bn_set_words | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIO *,BIO *,int) | | OSSL_HTTP_REQ_CTX_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIO *,BIO *,int) | | SMIME_crlf_copy | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIO *,GENERAL_NAMES *,int) | | OSSL_GENERAL_NAMES_print | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIO *,char *,int) | | BIO_get_line | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIO *,const DSA *,int) | | DSA_print | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIO *,const RSA *,int) | | RSA_print | 2 | -| taint.cpp:190:7:190:12 | memcpy | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | -| taint.cpp:190:7:190:12 | memcpy | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 1 | -| taint.cpp:190:7:190:12 | memcpy | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | -| taint.cpp:190:7:190:12 | memcpy | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | -| taint.cpp:190:7:190:12 | memcpy | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EC_KEY *,const OSSL_PARAM[],int) | | ossl_ec_key_fromdata | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ENGINE *,ENGINE_DYNAMIC_ID,int) | | engine_add_dynamic_id | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_export_to_provider | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_find_operation_cache | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY *,EVP_PKEY *,int) | | evp_keymgmt_util_copy | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,EVP_PKEY *,int) | | EVP_PKEY_derive_set_peer_ex | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const char *,int) | | EVP_PKEY_CTX_set1_pbe_pass | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_hkdf_info | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_tls1_prf_seed | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_key | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_salt | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_scrypt_salt | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_tls1_prf_secret | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set_mac_key | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const void *,int) | | EVP_PKEY_CTX_set1_id | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,int *,int) | | EVP_PKEY_CTX_set0_keygen_info | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FFC_PARAMS *,unsigned int,int) | | ossl_ffc_params_enable_flags | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FILE *,_IO_marker *,int) | | _IO_seekmark | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FILE *,_IO_marker *,int) | | _IO_seekwmark | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FILE *,__FILE *,int) | | fwide | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FILE *,const DSA *,int) | | DSA_print_fp | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FILE *,const RSA *,int) | | RSA_print_fp | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FILE *,off64_t,int) | | _IO_cookie_seek | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FILE *,rule *,int) | | RulePrint | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FTS *,FTSENT *,int) | | fts_set | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetCommand | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetGlobalVariable | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetVariable | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,Jim_Obj *,int) | | Jim_ListGetIndex | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,Jim_Obj *,int) | | Jim_UnsetVariable | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewDictObj | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewListObj | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,char *,int) | | Jim_NewStringObjNoAlloc | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_GetGlobalVariableStr | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_GetVariableStr | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | -| taint.cpp:190:7:190:12 | memcpy | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_ONEREQ *,X509_EXTENSION *,int) | | OCSP_ONEREQ_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_ONEREQ *,const ASN1_OBJECT *,int) | | OCSP_ONEREQ_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_REQUEST *,X509_EXTENSION *,int) | | OCSP_REQUEST_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_REQUEST *,const ASN1_OBJECT *,int) | | OCSP_REQUEST_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_SINGLERESP *,X509_EXTENSION *,int) | | OCSP_SINGLERESP_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_SINGLERESP *,const ASN1_OBJECT *,int) | | OCSP_SINGLERESP_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OPENSSL_STACK *,const void *,int) | | OPENSSL_sk_insert | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_referenceValue | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_secretValue | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_CMP_CTX *,int,int) | | OSSL_CMP_CTX_set_option | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | EC_GROUP_new_by_curve_name_ex | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | EC_KEY_new_by_curve_name_ex | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | OSSL_PROVIDER_try_load | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_dsa_key_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_kem_key_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | ossl_parse_query | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_name | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_value | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_PROVIDER *,OSSL_PROVIDER **,int) | | ossl_provider_add_to_store | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_QRL_ENC_LEVEL_SET *,uint32_t,int) | | ossl_qrl_enc_level_set_get | 2 | -| taint.cpp:190:7:190:12 | memcpy | (PKCS7 *,stack_st_X509 *,int) | | PKCS7_get0_signers | 2 | -| taint.cpp:190:7:190:12 | memcpy | (POLICYINFO *,const ASN1_OBJECT *,int) | | ossl_policy_data_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (PROV_CTX *,const char *,int) | | ossl_prov_ctx_get_bool_param | 2 | -| taint.cpp:190:7:190:12 | memcpy | (PROV_CTX *,const char *,int) | | ossl_prov_ml_dsa_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (PROV_CTX *,const char *,int) | | ossl_prov_ml_kem_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (QLOG *,uint32_t,int) | | ossl_qlog_set_event_type_enabled | 2 | -| taint.cpp:190:7:190:12 | memcpy | (QUIC_RXFC *,uint64_t,int) | | ossl_quic_rxfc_on_rx_stream_frame | 2 | -| taint.cpp:190:7:190:12 | memcpy | (QUIC_STREAM_ITER *,QUIC_STREAM_MAP *,int) | | ossl_quic_stream_iter_init | 2 | -| taint.cpp:190:7:190:12 | memcpy | (QUIC_STREAM_MAP *,uint64_t,int) | | ossl_quic_stream_map_alloc | 2 | -| taint.cpp:190:7:190:12 | memcpy | (RSA *,const OSSL_PARAM[],int) | | ossl_rsa_fromdata | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,const unsigned char *,int) | | SSL_use_certificate_ASN1 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,const void *,int) | | SSL_write | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,void *,int) | | SSL_peek | 1 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,void *,int) | | SSL_peek | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,void *,int) | | SSL_read | 1 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,void *,int) | | SSL_read | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,void *,int) | | SSL_set_session_ticket_ext | 1 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,void *,int) | | SSL_set_session_ticket_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL_CIPHER *,const SSL_CIPHER *,int) | | OBJ_bsearch_ssl_cipher_id | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL_CONNECTION *,PACKET *,int) | | ssl_cache_cipherlist | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_close_construct_packet | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_set_handshake_header | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL_CONNECTION *,WPACKET *,int) | | tls_close_construct_packet | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL_CONNECTION *,int,int) | | ssl3_send_alert | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_MSG_IMPRINT *,unsigned char *,int) | | TS_MSG_IMPRINT_set_msg | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_REQ *,X509_EXTENSION *,int) | | TS_REQ_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_REQ *,const ASN1_OBJECT *,int) | | TS_REQ_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_TST_INFO *,X509_EXTENSION *,int) | | TS_TST_INFO_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_TST_INFO *,const ASN1_OBJECT *,int) | | TS_TST_INFO_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (X509 *,X509_EXTENSION *,int) | | X509_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (X509 *,int,int) | | X509_check_purpose | 2 | -| taint.cpp:190:7:190:12 | memcpy | (X509 *,int,int) | | X509_check_trust | 2 | -| taint.cpp:190:7:190:12 | memcpy | (X509_CRL *,X509_EXTENSION *,int) | | X509_CRL_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (X509_PUBKEY *,unsigned char *,int) | | X509_PUBKEY_set0_public_key | 2 | -| taint.cpp:190:7:190:12 | memcpy | (X509_REVOKED *,X509_EXTENSION *,int) | | X509_REVOKED_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (X509_STORE_CTX *,X509 *,int) | | ossl_x509_check_cert_time | 2 | -| taint.cpp:190:7:190:12 | memcpy | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | -| taint.cpp:190:7:190:12 | memcpy | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | -| taint.cpp:190:7:190:12 | memcpy | (_Float128,_Float128,int) | | __kernel_sinf128 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (_Float128,_Float128,int) | | __kernel_tanf128 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (_IO_strfile *,const char *,int) | | _IO_str_init_readonly | 2 | -| taint.cpp:190:7:190:12 | memcpy | (action *,FILE *,int) | | PrintAction | 2 | -| taint.cpp:190:7:190:12 | memcpy | (acttab *,int,int) | | acttab_action | 2 | -| taint.cpp:190:7:190:12 | memcpy | (char *,size_t,int) | | __argz_stringify | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const ASN1_VALUE *,const ASN1_TEMPLATE *,int) | | ossl_asn1_do_adb | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const BIGNUM *,int[],int) | | BN_GF2m_poly2arr | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const BIGNUM *,unsigned char *,int) | | BN_bn2binpad | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const BIGNUM *,unsigned char *,int) | | BN_bn2lebinpad | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const BIGNUM *,unsigned char *,int) | | BN_bn2nativepad | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2bin | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2lebin | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2native | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const CMS_ContentInfo *,BIO *,int) | | ossl_cms_DigestedData_do_final | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_signed_get_attr_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const OSSL_PARAM *,BIO *,int) | | OSSL_PARAM_print_to_bio | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const OSSL_PROVIDER *,const char *,int) | | OSSL_PROVIDER_conf_get_bool | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const SSL *,char *,int) | | SSL_get_shared_ciphers | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const SSL *,int,int) | | apps_ssl_info_callback | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const SSL_CIPHER *,char *,int) | | SSL_CIPHER_description | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509 *,const ASN1_OBJECT *,int) | | X509_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509 *,const stack_st_X509 *,int) | | OSSL_ESS_signing_cert_new_init | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509 *,int,int) | | X509_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509 *,int,int) | | X509_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_ACERT *,const ASN1_OBJECT *,int) | | X509_ACERT_get_attr_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_ACERT *,int,int) | | X509_ACERT_get_attr_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_CRL *,const ASN1_OBJECT *,int) | | X509_CRL_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_CRL *,const X509 *,int) | | OSSL_CMP_CRLSTATUS_create | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_NAME *,char *,int) | | X509_NAME_oneline | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_NAME *,const ASN1_OBJECT *,int) | | X509_NAME_get_index_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_NAME *,int,int) | | X509_NAME_get_index_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_REQ *,const ASN1_OBJECT *,int) | | X509_REQ_get_attr_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_REQ *,int,int) | | X509_REQ_get_attr_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_REVOKED *,const ASN1_OBJECT *,int) | | X509_REVOKED_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,char **,int) | | __strtol | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,char **,int) | | __strtoul | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,const char *,int) | | CRYPTO_strdup | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,const char *,int) | | __dcgettext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,int,int) | | __old_strpbrk_c2 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,long *,int) | | Jim_StringToWide | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,size_t *,int) | | _dl_sysdep_read_whole_file | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,sqlite3_filename,int) | | sqlite3_uri_key | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,void *,int) | | support_readdir_check | 1 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,void *,int) | | support_readdir_check | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,wordexp_t *,int) | | wordexp | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const cmsghdr *,uint8_t **,int) | | inet6_option_find | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_ATTRIBUTE *,const ASN1_OBJECT *,int) | | X509at_get_attr_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_ATTRIBUTE *,int,int) | | X509at_get_attr_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const void *,socklen_t,int) | | res_gethostbyaddr | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const wchar_t *,wchar_t **,int) | | __wcstol | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const wchar_t *,wchar_t **,int) | | __wcstoul | 2 | -| taint.cpp:190:7:190:12 | memcpy | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | -| taint.cpp:190:7:190:12 | memcpy | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | -| taint.cpp:190:7:190:12 | memcpy | (database_dyn *,size_t,int) | | mempool_alloc | 2 | -| taint.cpp:190:7:190:12 | memcpy | (database_dyn *,time_t,int) | | prune_cache | 2 | -| taint.cpp:190:7:190:12 | memcpy | (double,double,int) | | __kernel_standard | 2 | -| taint.cpp:190:7:190:12 | memcpy | (float,float,int) | | __kernel_standard_f | 2 | -| taint.cpp:190:7:190:12 | memcpy | (gconv_spec *,__gconv_t *,int) | | __gconv_open | 2 | -| taint.cpp:190:7:190:12 | memcpy | (gzFile,char *,int) | | gzgets | 2 | -| taint.cpp:190:7:190:12 | memcpy | (gzFile,int,int) | | gzsetparams | 2 | -| taint.cpp:190:7:190:12 | memcpy | (gzFile,off64_t,int) | | gzseek64 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (gzFile,off_t,int) | | gzseek | 2 | -| taint.cpp:190:7:190:12 | memcpy | (int *,short *,int) | | __lll_lock_elision | 2 | -| taint.cpp:190:7:190:12 | memcpy | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | -| taint.cpp:190:7:190:12 | memcpy | (int,int,int) | | ASN1_object_size | 2 | -| taint.cpp:190:7:190:12 | memcpy | (int,int,int) | | EVP_CIPHER_meth_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (long double,long double,int) | | __kernel_sinl | 2 | -| taint.cpp:190:7:190:12 | memcpy | (long double,long double,int) | | __kernel_standard_l | 2 | -| taint.cpp:190:7:190:12 | memcpy | (long double,long double,int) | | __kernel_tanl | 2 | -| taint.cpp:190:7:190:12 | memcpy | (mp_srcptr,int,int) | | __mpn_construct_double | 2 | -| taint.cpp:190:7:190:12 | memcpy | (mp_srcptr,int,int) | | __mpn_construct_float | 2 | -| taint.cpp:190:7:190:12 | memcpy | (mp_srcptr,int,int) | | __mpn_construct_float128 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (regex_t *,const char *,int) | | jim_regcomp | 2 | -| taint.cpp:190:7:190:12 | memcpy | (requestlist *,requestlist *,int) | | __aio_remove_request | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3 *,const char *,int) | | sqlite3_overload_function | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3 *,int,int) | | sqlite3_limit | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3_context *,const char *,int) | | sqlite3_result_error | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3_context *,const void *,int) | | sqlite3_result_error16 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3_index_info *,int,int) | | sqlite3_vtab_in | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3_stmt *,int,int) | | sqlite3_bind_int | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3_stmt *,int,int) | | sqlite3_bind_zeroblob | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3_stmt *,int,int) | | sqlite3_stmt_status | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3_str *,const char *,int) | | sqlite3_str_append | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3expert *,int,int) | | sqlite3_expert_report | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509 **,X509 *,int) | | ossl_x509_add_cert_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509 **,stack_st_X509 *,int) | | ossl_x509_add_certs_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509 *,ASIdentifiers *,int) | | X509v3_asid_validate_resource_set | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509 *,IPAddrBlocks *,int) | | X509v3_addr_validate_resource_set | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509 *,X509 *,int) | | X509_add_cert | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509 *,stack_st_X509 *,int) | | X509_add_certs | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509_ALGOR **,int,int) | | CMS_add_simple_smimecap | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509_ALGOR *,int,int) | | PKCS7_simple_smimecap | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509_EXTENSION **,X509_EXTENSION *,int) | | X509v3_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (td_thragent_t *,uint32_t *,int) | | _td_check_sizeof | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uint8_t[56],const gf,int) | | gf_serialize | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned char *,const char *,int) | | data_string | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned char *,const unsigned char *,int) | | EVP_EncodeBlock | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned int,const char *,int) | | _IO_adjust_column | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned int,const wchar_t *,int) | | _IO_adjust_wcolumn | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned int,int,int) | | ossl_blob_length | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uv_stream_t *,int,int) | | uv__stream_open | 2 | -| taint.cpp:190:7:190:12 | memcpy | (void *,cmsghdr **,int) | | inet6_option_init | 2 | -| taint.cpp:190:7:190:12 | memcpy | (void *,const char *,int) | | CRYPTO_secure_free | 2 | -| taint.cpp:190:7:190:12 | memcpy | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | -| taint.cpp:190:7:190:12 | memcpy | (void *,socklen_t,int) | | inet6_opt_finish | 2 | -| taint.cpp:192:6:192:16 | test_memcpy | (int *) | | rresvport | 0 | -| taint.cpp:249:13:249:13 | _FUN | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:249:13:249:13 | _FUN | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:249:13:249:13 | _FUN | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:249:13:249:13 | _FUN | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:249:13:249:13 | _FUN | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:249:13:249:13 | _FUN | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FTS *,int) | | fts_children | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:249:13:249:13 | _FUN | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:249:13:249:13 | _FUN | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:249:13:249:13 | _FUN | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:249:13:249:13 | _FUN | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:249:13:249:13 | _FUN | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:249:13:249:13 | _FUN | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:249:13:249:13 | _FUN | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:249:13:249:13 | _FUN | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:249:13:249:13 | _FUN | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:249:13:249:13 | _FUN | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:249:13:249:13 | _FUN | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (char **,int) | | addrsort | 1 | -| taint.cpp:249:13:249:13 | _FUN | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:249:13:249:13 | _FUN | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | ftok | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (double,int) | | __ldexp | 1 | -| taint.cpp:249:13:249:13 | _FUN | (double,int) | | __scalbn | 1 | -| taint.cpp:249:13:249:13 | _FUN | (double[],int) | | getloadavg | 1 | -| taint.cpp:249:13:249:13 | _FUN | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:249:13:249:13 | _FUN | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:249:13:249:13 | _FUN | (float,int) | | __ldexpf | 1 | -| taint.cpp:249:13:249:13 | _FUN | (float,int) | | __scalbnf | 1 | -| taint.cpp:249:13:249:13 | _FUN | (gzFile,int) | | gzflush | 1 | -| taint.cpp:249:13:249:13 | _FUN | (gzFile,int) | | gzputc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | BN_security_bits | 0 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | BN_security_bits | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | EVP_MD_meth_new | 0 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | EVP_PKEY_meth_new | 0 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | __isctype | 0 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | __isctype | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | acttab_alloc | 0 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | acttab_alloc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | div | 0 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | div | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | inet6_rth_space | 0 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:249:13:249:13 | _FUN | (long double,int) | | __ldexpl | 1 | -| taint.cpp:249:13:249:13 | _FUN | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:249:13:249:13 | _FUN | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:249:13:249:13 | _FUN | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:249:13:249:13 | _FUN | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:249:13:249:13 | _FUN | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:249:13:249:13 | _FUN | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:249:13:249:13 | _FUN | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:249:13:249:13 | _FUN | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:249:13:249:13 | _FUN | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:249:13:249:13 | _FUN | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:249:13:249:13 | _FUN | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:249:13:249:13 | _FUN | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:249:13:249:13 | _FUN | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:249:13:249:13 | _FUN | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:249:13:249:13 | _FUN | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:249:13:249:13 | _FUN | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:249:13:249:13 | _FUN | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:249:13:249:13 | _FUN | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:249:13:249:13 | _FUN | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:249:13:249:13 | _FUN | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:249:13:249:13 | _FUN | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:249:13:249:13 | _FUN | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:249:13:249:13 | _FUN | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:249:13:249:13 | _FUN | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:249:13:249:13 | _FUN | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:249:13:249:13 | operator() | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:249:13:249:13 | operator() | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:249:13:249:13 | operator() | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:249:13:249:13 | operator() | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:249:13:249:13 | operator() | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:249:13:249:13 | operator() | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:249:13:249:13 | operator() | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:249:13:249:13 | operator() | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:249:13:249:13 | operator() | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:249:13:249:13 | operator() | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:249:13:249:13 | operator() | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:249:13:249:13 | operator() | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:249:13:249:13 | operator() | (FTS *,int) | | fts_children | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:249:13:249:13 | operator() | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:249:13:249:13 | operator() | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:249:13:249:13 | operator() | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:249:13:249:13 | operator() | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:249:13:249:13 | operator() | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:249:13:249:13 | operator() | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:249:13:249:13 | operator() | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:249:13:249:13 | operator() | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:249:13:249:13 | operator() | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:249:13:249:13 | operator() | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:249:13:249:13 | operator() | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:249:13:249:13 | operator() | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:249:13:249:13 | operator() | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:249:13:249:13 | operator() | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:249:13:249:13 | operator() | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:249:13:249:13 | operator() | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:249:13:249:13 | operator() | (char **,int) | | addrsort | 1 | -| taint.cpp:249:13:249:13 | operator() | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:249:13:249:13 | operator() | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:249:13:249:13 | operator() | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:249:13:249:13 | operator() | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:249:13:249:13 | operator() | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:249:13:249:13 | operator() | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:249:13:249:13 | operator() | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:249:13:249:13 | operator() | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:249:13:249:13 | operator() | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:249:13:249:13 | operator() | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:249:13:249:13 | operator() | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:249:13:249:13 | operator() | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:249:13:249:13 | operator() | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:249:13:249:13 | operator() | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:249:13:249:13 | operator() | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | ftok | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:249:13:249:13 | operator() | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:249:13:249:13 | operator() | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:249:13:249:13 | operator() | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:249:13:249:13 | operator() | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:249:13:249:13 | operator() | (double,int) | | __ldexp | 1 | -| taint.cpp:249:13:249:13 | operator() | (double,int) | | __scalbn | 1 | -| taint.cpp:249:13:249:13 | operator() | (double[],int) | | getloadavg | 1 | -| taint.cpp:249:13:249:13 | operator() | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:249:13:249:13 | operator() | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:249:13:249:13 | operator() | (float,int) | | __ldexpf | 1 | -| taint.cpp:249:13:249:13 | operator() | (float,int) | | __scalbnf | 1 | -| taint.cpp:249:13:249:13 | operator() | (gzFile,int) | | gzflush | 1 | -| taint.cpp:249:13:249:13 | operator() | (gzFile,int) | | gzputc | 1 | -| taint.cpp:249:13:249:13 | operator() | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:249:13:249:13 | operator() | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:249:13:249:13 | operator() | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | BN_security_bits | 0 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | BN_security_bits | 1 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | EVP_MD_meth_new | 0 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | EVP_PKEY_meth_new | 0 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | __isctype | 0 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | __isctype | 1 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | acttab_alloc | 0 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | acttab_alloc | 1 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | div | 0 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | div | 1 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | inet6_rth_space | 0 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:249:13:249:13 | operator() | (long double,int) | | __ldexpl | 1 | -| taint.cpp:249:13:249:13 | operator() | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:249:13:249:13 | operator() | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:249:13:249:13 | operator() | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:249:13:249:13 | operator() | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:249:13:249:13 | operator() | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:249:13:249:13 | operator() | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:249:13:249:13 | operator() | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:249:13:249:13 | operator() | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:249:13:249:13 | operator() | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:249:13:249:13 | operator() | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:249:13:249:13 | operator() | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:249:13:249:13 | operator() | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:249:13:249:13 | operator() | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:249:13:249:13 | operator() | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:249:13:249:13 | operator() | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:249:13:249:13 | operator() | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:249:13:249:13 | operator() | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:249:13:249:13 | operator() | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:249:13:249:13 | operator() | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:249:13:249:13 | operator() | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:249:13:249:13 | operator() | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:249:13:249:13 | operator() | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:249:13:249:13 | operator() | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:249:13:249:13 | operator() | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:249:13:249:13 | operator() | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:249:13:249:13 | operator() | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:249:13:249:13 | operator() | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:249:13:249:13 | operator() | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:249:13:249:13 | operator() | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:249:13:249:13 | operator() | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:266:5:266:6 | id | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | ASN1_tag2str | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | Jim_SignalId | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | PKCS12_init | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | Symbol_Nth | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __btowc | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __current_locale_name | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __fdopendir | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __get_errlist | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __get_errname | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __math_invalid_i | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __math_invalidf_i | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __p_class | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __p_rcode | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __p_type | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __pkey_get | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __sigdescr_np | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __strerrordesc_np | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | _tolower | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | _toupper | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | btowc | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | c_tolower | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | c_toupper | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | curlx_sitouz | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | inet6_option_space | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isalnum | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isalpha | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isblank | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | iscntrl | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isdigit | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isgraph | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | islower | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isprint | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | ispunct | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isspace | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isupper | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isxdigit | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | ossl_tolower | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | ossl_toupper | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | sigabbrev_np | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | sqlite3_errstr | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | strerrorname_np | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | support_report_failure | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | svcudp_create | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | tls13_alert_code | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | toascii | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | tolower | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | toupper | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | uabs | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | uv__accept | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | uv_err_name | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | uv_strerror | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | zError | 0 | -| taint.cpp:266:5:266:6 | id | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:302:6:302:14 | myAssign2 | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FTS *,int) | | fts_children | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (char **,int) | | addrsort | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | ftok | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (double,int) | | __ldexp | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (double,int) | | __scalbn | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (double[],int) | | getloadavg | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (float,int) | | __ldexpf | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (float,int) | | __scalbnf | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (gzFile,int) | | gzflush | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (gzFile,int) | | gzputc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | BN_security_bits | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | __isctype | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | acttab_alloc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | div | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (long double,int) | | __ldexpl | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FTS *,int) | | fts_children | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (char **,int) | | addrsort | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | ftok | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (double,int) | | __ldexp | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (double,int) | | __scalbn | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (double[],int) | | getloadavg | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (float,int) | | __ldexpf | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (float,int) | | __scalbnf | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (gzFile,int) | | gzflush | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (gzFile,int) | | gzputc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_PURPOSE_set | 0 | -| taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_TRUST_set | 0 | -| taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | __lll_unlock_elision | 0 | -| taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | BN_security_bits | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | __isctype | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | acttab_alloc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | div | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (long double,int) | | __ldexpl | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FTS *,int) | | fts_children | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (char **,int) | | addrsort | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | ftok | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (double,int) | | __ldexp | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (double,int) | | __scalbn | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (double[],int) | | getloadavg | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (float,int) | | __ldexpf | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (float,int) | | __scalbnf | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (gzFile,int) | | gzflush | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (gzFile,int) | | gzputc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_PURPOSE_set | 0 | -| taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_TRUST_set | 0 | -| taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | __lll_unlock_elision | 0 | -| taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | BN_security_bits | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | __isctype | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | acttab_alloc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | div | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (long double,int) | | __ldexpl | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | BIO_gethostbyname | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | Curl_copy_header_value | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | Curl_get_scheme_handler | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | Curl_getdate_capped | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | Jim_StrDup | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | OPENSSL_LH_strhash | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | Strsafe | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | Symbol_new | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | UI_create_method | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | X509V3_parse_list | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | X509_LOOKUP_meth_new | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __basename | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __gconv_find_shlib | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __gettext | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __hash_string | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __nss_action_parse | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __strdup | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __textdomain | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __tzset_parse_tz | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __tzstring | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | a2i_IPADDRESS | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | a2i_IPADDRESS_NC | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | a64l | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | charmap_opendir | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | ether_aton | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | getdate | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | inetstr2int | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | last_component | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | opt_path_end | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | opt_progname | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | ossl_lh_strcasehash | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | repertoire_read | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | res_gethostbyname | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | sgetsgent | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | sgetspent | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | strhash | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | uc_script_byname | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | uv__strdup | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | xstrdup | 0 | -| taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| taint.cpp:362:7:362:13 | strndup | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| taint.cpp:362:7:362:13 | strndup | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| taint.cpp:362:7:362:13 | strndup | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| taint.cpp:362:7:362:13 | strndup | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 | -| taint.cpp:362:7:362:13 | strndup | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 | -| taint.cpp:362:7:362:13 | strndup | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (Curl_hash *,size_t) | | Curl_init_dnscache | 1 | -| taint.cpp:362:7:362:13 | strndup | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_HPKE_SUITE,size_t) | | OSSL_HPKE_get_ciphertext_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_HTTP_REQ_CTX *,size_t) | | OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_LIB_CTX *,size_t) | | ossl_quic_lcidm_new | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_PARAM *,size_t) | | OSSL_PARAM_set_size_t | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_PQUEUE *,size_t) | | ossl_pqueue_remove | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_PROVIDER *,size_t) | | ossl_provider_set_operation_bit | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_QTX *,size_t) | | ossl_qtx_set_mdpl | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_add_unvalidated_credit | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_consume_unvalidated_credit | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_record_received_closing_bytes | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_RECORD_LAYER *,size_t) | | tls_set_max_frag_len | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_RECORD_LAYER *,size_t) | | tls_set_max_pipelines | 1 | -| taint.cpp:362:7:362:13 | strndup | (QUIC_RSTREAM *,size_t) | | ossl_quic_rstream_release_record | 1 | -| taint.cpp:362:7:362:13 | strndup | (QUIC_RSTREAM *,size_t) | | ossl_quic_rstream_resize_rbuf | 1 | -| taint.cpp:362:7:362:13 | strndup | (QUIC_RXFC *,size_t) | | ossl_quic_rxfc_set_max_window_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (QUIC_SSTREAM *,size_t) | | ossl_quic_sstream_set_buffer_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (QUIC_STREAM_MAP *,size_t) | | ossl_quic_stream_map_set_rr_stepping | 1 | -| taint.cpp:362:7:362:13 | strndup | (RAND_POOL *,size_t) | | ossl_rand_pool_add_begin | 1 | -| taint.cpp:362:7:362:13 | strndup | (SIPHASH *,size_t) | | SipHash_set_hash_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL *,size_t) | | SSL_set_block_padding | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL *,size_t) | | SSL_set_default_read_buffer_len | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL *,size_t) | | SSL_set_num_tickets | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL_CTX *,size_t) | | SSL_CTX_set_block_padding | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL_CTX *,size_t) | | SSL_CTX_set_default_read_buffer_len | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL_CTX *,size_t) | | SSL_CTX_set_num_tickets | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (WPACKET *,size_t) | | WPACKET_init_null | 1 | -| taint.cpp:362:7:362:13 | strndup | (WPACKET *,size_t) | | WPACKET_set_max_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (WPACKET *,size_t) | | WPACKET_start_sub_packet_len__ | 1 | -| taint.cpp:362:7:362:13 | strndup | (WPACKET *,size_t) | | ossl_quic_wire_encode_padding | 1 | -| taint.cpp:362:7:362:13 | strndup | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (__gconv_step *,size_t) | | __gconv_close_transform | 1 | -| taint.cpp:362:7:362:13 | strndup | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_lmargin | 1 | -| taint.cpp:362:7:362:13 | strndup | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_rmargin | 1 | -| taint.cpp:362:7:362:13 | strndup | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_wmargin | 1 | -| taint.cpp:362:7:362:13 | strndup | (bufq *,size_t) | | Curl_bufq_skip | 1 | -| taint.cpp:362:7:362:13 | strndup | (bufq *,size_t) | | Curl_bufq_unwrite | 1 | -| taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | RAND_file_name | 1 | -| taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | __getcwd | 1 | -| taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | __gets_chk | 1 | -| taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | __getwd_chk | 1 | -| taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | plain_method | 1 | -| taint.cpp:362:7:362:13 | strndup | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_getn_scheme_handler | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_getn_scheme_handler | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_memdup0 | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_memdup0 | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | OPENSSL_strnlen | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | OPENSSL_strnlen | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | __nss_module_allocate | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | __nss_module_allocate | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | __strndup | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | __strndup | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | charmap_hash | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | charmap_hash | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | locfile_hash | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | locfile_hash | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | mblen | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | mblen | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | uv__strndup | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | uv__strndup | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | xstrndup | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | xstrndup | 1 | -| taint.cpp:362:7:362:13 | strndup | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 | -| taint.cpp:362:7:362:13 | strndup | (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 | -| taint.cpp:362:7:362:13 | strndup | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 | -| taint.cpp:362:7:362:13 | strndup | (const void *,size_t) | | Curl_memdup | 1 | -| taint.cpp:362:7:362:13 | strndup | (const void *,size_t) | | __nis_hash | 1 | -| taint.cpp:362:7:362:13 | strndup | (const void *,size_t) | | __nss_hash | 1 | -| taint.cpp:362:7:362:13 | strndup | (const void *,size_t) | | compute_hashval | 1 | -| taint.cpp:362:7:362:13 | strndup | (const wchar_t *,size_t) | | __wcsnlen_generic | 1 | -| taint.cpp:362:7:362:13 | strndup | (const wchar_t *,size_t) | | wcswidth | 1 | -| taint.cpp:362:7:362:13 | strndup | (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 | -| taint.cpp:362:7:362:13 | strndup | (dl_find_object_internal *,size_t) | | _dlfo_sort_mappings | 1 | -| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | Curl_dyn_init | 1 | -| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | Curl_dyn_setlen | 1 | -| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | Curl_dyn_tail | 1 | -| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | curlx_dyn_init | 1 | -| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | curlx_dyn_setlen | 1 | -| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | curlx_dyn_tail | 1 | -| taint.cpp:362:7:362:13 | strndup | (dynhds *,size_t) | | Curl_dynhds_getn | 1 | -| taint.cpp:362:7:362:13 | strndup | (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 | -| taint.cpp:362:7:362:13 | strndup | (hash_table *,unsigned long) | | init_hash | 1 | -| taint.cpp:362:7:362:13 | strndup | (int,size_t) | | ossl_calculate_comp_expansion | 1 | -| taint.cpp:362:7:362:13 | strndup | (link_map *,size_t) | | _dl_make_tlsdesc_dynamic | 1 | -| taint.cpp:362:7:362:13 | strndup | (locale_file *,size_t) | | init_locale_data | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 | -| taint.cpp:362:7:362:13 | strndup | (nss_action *,size_t) | | __nss_action_allocate | 1 | -| taint.cpp:362:7:362:13 | strndup | (pthread_attr_t *,size_t) | | __pthread_attr_setguardsize | 1 | -| taint.cpp:362:7:362:13 | strndup | (pthread_attr_t *,size_t) | | __pthread_attr_setstacksize | 1 | -| taint.cpp:362:7:362:13 | strndup | (size_t,size_t) | | __libc_memalign | 1 | -| taint.cpp:362:7:362:13 | strndup | (size_t,size_t) | | aligned_alloc | 1 | -| taint.cpp:362:7:362:13 | strndup | (u_long,unsigned long) | | __p_option | 1 | -| taint.cpp:362:7:362:13 | strndup | (uint8_t *,size_t) | | nghttp2_downcase | 1 | -| taint.cpp:362:7:362:13 | strndup | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | JimDefaultAllocator | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | __arc4random_buf | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | __libc_realloc | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | __minimal_realloc | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | getentropy | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | uv__random_devurandom | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | uv__random_getrandom | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | xrealloc | 1 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | BIO_gethostbyname | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Curl_copy_header_value | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Curl_get_scheme_handler | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Curl_getdate_capped | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Jim_StrDup | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | OPENSSL_LH_strhash | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Strsafe | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Symbol_new | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | UI_create_method | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | X509V3_parse_list | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | X509_LOOKUP_meth_new | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __basename | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __gconv_find_shlib | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __gettext | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __hash_string | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __nss_action_parse | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __strdup | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __textdomain | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __tzset_parse_tz | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __tzstring | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | a2i_IPADDRESS | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | a2i_IPADDRESS_NC | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | a64l | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | charmap_opendir | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | ether_aton | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | getdate | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | inetstr2int | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | last_component | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | opt_path_end | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | opt_progname | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | ossl_lh_strcasehash | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | repertoire_read | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | res_gethostbyname | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | sgetsgent | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | sgetspent | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | strhash | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | uc_script_byname | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | uv__strdup | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | xstrdup | 0 | -| taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| taint.cpp:365:7:365:14 | strndupa | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| taint.cpp:365:7:365:14 | strndupa | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| taint.cpp:365:7:365:14 | strndupa | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| taint.cpp:365:7:365:14 | strndupa | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 | -| taint.cpp:365:7:365:14 | strndupa | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 | -| taint.cpp:365:7:365:14 | strndupa | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (Curl_hash *,size_t) | | Curl_init_dnscache | 1 | -| taint.cpp:365:7:365:14 | strndupa | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_HPKE_SUITE,size_t) | | OSSL_HPKE_get_ciphertext_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_HTTP_REQ_CTX *,size_t) | | OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_LIB_CTX *,size_t) | | ossl_quic_lcidm_new | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_PARAM *,size_t) | | OSSL_PARAM_set_size_t | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_PQUEUE *,size_t) | | ossl_pqueue_remove | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_PROVIDER *,size_t) | | ossl_provider_set_operation_bit | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_QTX *,size_t) | | ossl_qtx_set_mdpl | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_add_unvalidated_credit | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_consume_unvalidated_credit | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_record_received_closing_bytes | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_RECORD_LAYER *,size_t) | | tls_set_max_frag_len | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_RECORD_LAYER *,size_t) | | tls_set_max_pipelines | 1 | -| taint.cpp:365:7:365:14 | strndupa | (QUIC_RSTREAM *,size_t) | | ossl_quic_rstream_release_record | 1 | -| taint.cpp:365:7:365:14 | strndupa | (QUIC_RSTREAM *,size_t) | | ossl_quic_rstream_resize_rbuf | 1 | -| taint.cpp:365:7:365:14 | strndupa | (QUIC_RXFC *,size_t) | | ossl_quic_rxfc_set_max_window_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (QUIC_SSTREAM *,size_t) | | ossl_quic_sstream_set_buffer_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (QUIC_STREAM_MAP *,size_t) | | ossl_quic_stream_map_set_rr_stepping | 1 | -| taint.cpp:365:7:365:14 | strndupa | (RAND_POOL *,size_t) | | ossl_rand_pool_add_begin | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SIPHASH *,size_t) | | SipHash_set_hash_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL *,size_t) | | SSL_set_block_padding | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL *,size_t) | | SSL_set_default_read_buffer_len | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL *,size_t) | | SSL_set_num_tickets | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL_CTX *,size_t) | | SSL_CTX_set_block_padding | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL_CTX *,size_t) | | SSL_CTX_set_default_read_buffer_len | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL_CTX *,size_t) | | SSL_CTX_set_num_tickets | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (WPACKET *,size_t) | | WPACKET_init_null | 1 | -| taint.cpp:365:7:365:14 | strndupa | (WPACKET *,size_t) | | WPACKET_set_max_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (WPACKET *,size_t) | | WPACKET_start_sub_packet_len__ | 1 | -| taint.cpp:365:7:365:14 | strndupa | (WPACKET *,size_t) | | ossl_quic_wire_encode_padding | 1 | -| taint.cpp:365:7:365:14 | strndupa | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (__gconv_step *,size_t) | | __gconv_close_transform | 1 | -| taint.cpp:365:7:365:14 | strndupa | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_lmargin | 1 | -| taint.cpp:365:7:365:14 | strndupa | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_rmargin | 1 | -| taint.cpp:365:7:365:14 | strndupa | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_wmargin | 1 | -| taint.cpp:365:7:365:14 | strndupa | (bufq *,size_t) | | Curl_bufq_skip | 1 | -| taint.cpp:365:7:365:14 | strndupa | (bufq *,size_t) | | Curl_bufq_unwrite | 1 | -| taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | RAND_file_name | 1 | -| taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | __getcwd | 1 | -| taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | __gets_chk | 1 | -| taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | __getwd_chk | 1 | -| taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | plain_method | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_getn_scheme_handler | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_getn_scheme_handler | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_memdup0 | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_memdup0 | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | OPENSSL_strnlen | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | OPENSSL_strnlen | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | __nss_module_allocate | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | __nss_module_allocate | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | __strndup | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | __strndup | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | charmap_hash | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | charmap_hash | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | locfile_hash | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | locfile_hash | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | mblen | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | mblen | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | uv__strndup | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | uv__strndup | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | xstrndup | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | xstrndup | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const void *,size_t) | | Curl_memdup | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const void *,size_t) | | __nis_hash | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const void *,size_t) | | __nss_hash | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const void *,size_t) | | compute_hashval | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const wchar_t *,size_t) | | __wcsnlen_generic | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const wchar_t *,size_t) | | wcswidth | 1 | -| taint.cpp:365:7:365:14 | strndupa | (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dl_find_object_internal *,size_t) | | _dlfo_sort_mappings | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | Curl_dyn_init | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | Curl_dyn_setlen | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | Curl_dyn_tail | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | curlx_dyn_init | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | curlx_dyn_setlen | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | curlx_dyn_tail | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dynhds *,size_t) | | Curl_dynhds_getn | 1 | -| taint.cpp:365:7:365:14 | strndupa | (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 | -| taint.cpp:365:7:365:14 | strndupa | (hash_table *,unsigned long) | | init_hash | 1 | -| taint.cpp:365:7:365:14 | strndupa | (int,size_t) | | ossl_calculate_comp_expansion | 1 | -| taint.cpp:365:7:365:14 | strndupa | (link_map *,size_t) | | _dl_make_tlsdesc_dynamic | 1 | -| taint.cpp:365:7:365:14 | strndupa | (locale_file *,size_t) | | init_locale_data | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nss_action *,size_t) | | __nss_action_allocate | 1 | -| taint.cpp:365:7:365:14 | strndupa | (pthread_attr_t *,size_t) | | __pthread_attr_setguardsize | 1 | -| taint.cpp:365:7:365:14 | strndupa | (pthread_attr_t *,size_t) | | __pthread_attr_setstacksize | 1 | -| taint.cpp:365:7:365:14 | strndupa | (size_t,size_t) | | __libc_memalign | 1 | -| taint.cpp:365:7:365:14 | strndupa | (size_t,size_t) | | aligned_alloc | 1 | -| taint.cpp:365:7:365:14 | strndupa | (u_long,unsigned long) | | __p_option | 1 | -| taint.cpp:365:7:365:14 | strndupa | (uint8_t *,size_t) | | nghttp2_downcase | 1 | -| taint.cpp:365:7:365:14 | strndupa | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | JimDefaultAllocator | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | __arc4random_buf | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | __libc_realloc | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | __minimal_realloc | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | getentropy | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | uv__random_devurandom | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | uv__random_getrandom | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | xrealloc | 1 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | _IO_gets | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | __mktemp | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | __nis_default_group | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | __nis_default_owner | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | __xpg_basename | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | ctermid | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | cuserid | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | defossilize | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | des_setparity | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | dirname | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | getwd | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | make_uppercase | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | mkdtemp | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | next_item | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | strfry | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | CStringT | CStringT | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | ASN1_tag2str | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | Jim_SignalId | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | PKCS12_init | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | Symbol_Nth | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __btowc | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __current_locale_name | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __fdopendir | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __get_errlist | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __get_errname | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __math_invalid_i | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __math_invalidf_i | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __p_class | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __p_rcode | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __p_type | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __pkey_get | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __sigdescr_np | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __strerrordesc_np | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | _tolower | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | _toupper | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | btowc | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | c_tolower | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | c_toupper | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | curlx_sitouz | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | inet6_option_space | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isalnum | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isalpha | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isblank | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | iscntrl | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isdigit | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isgraph | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | islower | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isprint | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | ispunct | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isspace | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isupper | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isxdigit | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | ossl_tolower | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | ossl_toupper | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | sigabbrev_np | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | sqlite3_errstr | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | strerrorname_np | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | support_report_failure | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | svcudp_create | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | tls13_alert_code | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | toascii | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | tolower | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | toupper | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | uabs | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv__accept | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_err_name | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_strerror | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | zError | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:387:6:387:16 | test_wcsdup | (wchar_t *) | CStringT | CStringT | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | _IO_gets | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | __mktemp | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | __nis_default_group | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | __nis_default_owner | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | __xpg_basename | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | ctermid | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | cuserid | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | defossilize | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | des_setparity | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | dirname | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | getwd | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | make_uppercase | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | mkdtemp | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | next_item | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | strfry | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | CStringT | CStringT | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ASN1_tag2str | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | Jim_SignalId | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | PKCS12_init | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | Symbol_Nth | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __btowc | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __current_locale_name | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __fdopendir | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __get_errlist | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __get_errname | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __math_invalid_i | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __math_invalidf_i | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __p_class | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __p_rcode | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __p_type | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __pkey_get | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __sigdescr_np | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __strerrordesc_np | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | _tolower | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | _toupper | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | btowc | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | c_tolower | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | c_toupper | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | curlx_sitouz | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | inet6_option_space | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isalnum | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isalpha | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isblank | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | iscntrl | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isdigit | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isgraph | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | islower | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isprint | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ispunct | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isspace | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isupper | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isxdigit | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ossl_tolower | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ossl_toupper | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | sigabbrev_np | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | sqlite3_errstr | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | strerrorname_np | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | support_report_failure | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | svcudp_create | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | tls13_alert_code | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | toascii | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | tolower | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | toupper | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uabs | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv__accept | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_err_name | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_strerror | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | zError | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ASN1_tag2str | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | Jim_SignalId | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | PKCS12_init | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | Symbol_Nth | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __btowc | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __current_locale_name | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __fdopendir | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __get_errlist | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __get_errname | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __math_invalid_i | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __math_invalidf_i | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __p_class | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __p_rcode | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __p_type | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __pkey_get | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __sigdescr_np | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __strerrordesc_np | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | _tolower | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | _toupper | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | btowc | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | c_tolower | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | c_toupper | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | curlx_sitouz | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | inet6_option_space | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isalnum | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isalpha | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isblank | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | iscntrl | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isdigit | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isgraph | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | islower | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isprint | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ispunct | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isspace | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isupper | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isxdigit | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ossl_tolower | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ossl_toupper | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | sigabbrev_np | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | sqlite3_errstr | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | strerrorname_np | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | support_report_failure | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | svcudp_create | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | tls13_alert_code | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | toascii | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | tolower | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | toupper | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uabs | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv__accept | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_err_name | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_strerror | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | zError | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | ASN1_tag2str | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | Jim_SignalId | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | PKCS12_init | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | Symbol_Nth | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __btowc | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __current_locale_name | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __fdopendir | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __get_errlist | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __get_errname | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __math_invalid_i | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __math_invalidf_i | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __p_class | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __p_rcode | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __p_type | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __pkey_get | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __sigdescr_np | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __strerrordesc_np | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | _tolower | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | _toupper | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | btowc | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | c_tolower | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | c_toupper | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | curlx_sitouz | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | inet6_option_space | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isalnum | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isalpha | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isblank | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | iscntrl | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isdigit | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isgraph | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | islower | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isprint | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | ispunct | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isspace | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isupper | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isxdigit | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | ossl_tolower | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | ossl_toupper | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | sigabbrev_np | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | sqlite3_errstr | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | strerrorname_np | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | support_report_failure | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | svcudp_create | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | tls13_alert_code | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | toascii | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | tolower | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | toupper | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | uabs | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | uv__accept | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | uv_err_name | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | uv_strerror | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | zError | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | BIO_gethostbyname | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Curl_copy_header_value | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Curl_get_scheme_handler | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Curl_getdate_capped | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Jim_StrDup | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | OPENSSL_LH_strhash | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Strsafe | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Symbol_new | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | UI_create_method | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | X509V3_parse_list | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | X509_LOOKUP_meth_new | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __basename | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __gconv_find_shlib | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __gettext | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __hash_string | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __nss_action_parse | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __strdup | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __textdomain | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __tzset_parse_tz | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __tzstring | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | a2i_IPADDRESS | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | a2i_IPADDRESS_NC | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | a64l | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | charmap_opendir | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | ether_aton | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | getdate | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | inetstr2int | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | last_component | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | opt_path_end | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | opt_progname | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | ossl_lh_strcasehash | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | repertoire_read | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | res_gethostbyname | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | sgetsgent | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | sgetspent | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | strhash | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | uc_script_byname | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | uv__strdup | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | xstrdup | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | BIO_gethostbyname | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | Curl_copy_header_value | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | Curl_get_scheme_handler | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | Curl_getdate_capped | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | Jim_StrDup | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | OPENSSL_LH_strhash | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | Strsafe | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | Symbol_new | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | UI_create_method | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | X509V3_parse_list | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | X509_LOOKUP_meth_new | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __basename | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __gconv_find_shlib | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __gettext | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __hash_string | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __nss_action_parse | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __strdup | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __textdomain | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __tzset_parse_tz | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __tzstring | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | a2i_IPADDRESS | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | a2i_IPADDRESS_NC | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | a64l | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | charmap_opendir | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | ether_aton | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | getdate | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | inetstr2int | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | last_component | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | opt_path_end | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | opt_progname | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | ossl_lh_strcasehash | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | repertoire_read | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | res_gethostbyname | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | sgetsgent | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | sgetspent | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | strhash | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | uc_script_byname | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | uv__strdup | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | xstrdup | 0 | -| taint.cpp:500:5:500:12 | getdelim | (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 3 | -| taint.cpp:500:5:500:12 | getdelim | (char *,size_t,int,FILE *) | | __fgets_chk | 2 | -| taint.cpp:500:5:500:12 | getdelim | (char *,size_t,int,FILE *) | | __fgets_chk | 3 | -| taint.cpp:500:5:500:12 | getdelim | (char *,size_t,int,FILE *) | | __fgets_unlocked_chk | 2 | -| taint.cpp:500:5:500:12 | getdelim | (char *,size_t,int,FILE *) | | __fgets_unlocked_chk | 3 | -| taint.cpp:500:5:500:12 | getdelim | (const void *,size_t,size_t,FILE *) | | _IO_fwrite | 3 | -| taint.cpp:500:5:500:12 | getdelim | (void *,size_t,size_t,FILE *) | | _IO_fread | 3 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_default_uflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_feof | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_ferror | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_file_close_mmap | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_file_underflow_mmap | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_ftell | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_getc | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_getwc | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_new_file_underflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_peekc_locked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_str_count | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_str_underflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_sungetc | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_sungetwc | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_wdefault_uflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_wfile_underflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_wfile_underflow_mmap | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_wstr_count | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_wstr_underflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __fbufsize | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __feof_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __ferror_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __fileno | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __flbf | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __fopen_maybe_mmap | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __fpending | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __ftello | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __fwriting | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __getc_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __getwc_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __uflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __underflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __wuflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __wunderflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | feof_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | ferror_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | fgetc_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | fgetgrent | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | fgetpwent | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | fgetsgent | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | fgetspent | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | getc_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | getmntent | 0 | -| taint.cpp:512:7:512:12 | strtok | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| taint.cpp:512:7:512:12 | strtok | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| taint.cpp:512:7:512:12 | strtok | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| taint.cpp:512:7:512:12 | strtok | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| taint.cpp:512:7:512:12 | strtok | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| taint.cpp:512:7:512:12 | strtok | (CONF *,const char *) | | _CONF_new_section | 1 | -| taint.cpp:512:7:512:12 | strtok | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| taint.cpp:512:7:512:12 | strtok | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| taint.cpp:512:7:512:12 | strtok | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| taint.cpp:512:7:512:12 | strtok | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| taint.cpp:512:7:512:12 | strtok | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| taint.cpp:512:7:512:12 | strtok | (DSO *,const char *) | | DSO_convert_filename | 1 | -| taint.cpp:512:7:512:12 | strtok | (DSO *,const char *) | | DSO_set_filename | 1 | -| taint.cpp:512:7:512:12 | strtok | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| taint.cpp:512:7:512:12 | strtok | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| taint.cpp:512:7:512:12 | strtok | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| taint.cpp:512:7:512:12 | strtok | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (GlobalConfig *,const char *) | | setvariable | 1 | -| taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| taint.cpp:512:7:512:12 | strtok | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| taint.cpp:512:7:512:12 | strtok | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| taint.cpp:512:7:512:12 | strtok | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| taint.cpp:512:7:512:12 | strtok | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| taint.cpp:512:7:512:12 | strtok | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| taint.cpp:512:7:512:12 | strtok | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| taint.cpp:512:7:512:12 | strtok | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| taint.cpp:512:7:512:12 | strtok | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| taint.cpp:512:7:512:12 | strtok | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL *,const char *) | | SSL_add1_host | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL *,const char *) | | SSL_set1_host | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| taint.cpp:512:7:512:12 | strtok | (UI *,const char *) | | UI_add_error_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (UI *,const char *) | | UI_add_info_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (UI *,const char *) | | UI_dup_error_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (UI *,const char *) | | UI_dup_info_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (X509 *,const char *) | | x509_ctrl_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| taint.cpp:512:7:512:12 | strtok | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| taint.cpp:512:7:512:12 | strtok | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| taint.cpp:512:7:512:12 | strtok | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| taint.cpp:512:7:512:12 | strtok | (char **,const char *) | | Curl_setstropt | 1 | -| taint.cpp:512:7:512:12 | strtok | (char **,const char *) | | __strsep | 1 | -| taint.cpp:512:7:512:12 | strtok | (char *,const char *) | | xstrdup | 0 | -| taint.cpp:512:7:512:12 | strtok | (char *,const char *) | | xstrdup | 1 | -| taint.cpp:512:7:512:12 | strtok | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | Configcmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | Curl_timestrcmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | DES_crypt | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __bindtextdomain | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __dgettext | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __gconv_compare_alias | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strcasestr | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strcspn_generic | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strcspn_sse42 | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strpbrk_generic | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strspn_generic | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strspn_sse42 | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strstr_generic | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strverscmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | advance | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | c_strcasecmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | charmap_aliases | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | charmap_open | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | chroot_canon | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | get_passwd | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | gzopen | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | gzopen64 | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | iconv_open | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | openssl_fopen | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | sqlite3_strglob | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | sqlite3_stricmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | step | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | tempnam | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | xfopen | 1 | -| taint.cpp:512:7:512:12 | strtok | (const mntent *,const char *) | | __hasmntopt | 1 | -| taint.cpp:512:7:512:12 | strtok | (const nis_error,const char *) | | nis_sperror | 1 | -| taint.cpp:512:7:512:12 | strtok | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| taint.cpp:512:7:512:12 | strtok | (curl_off_t *,const char *) | | str2offset | 1 | -| taint.cpp:512:7:512:12 | strtok | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| taint.cpp:512:7:512:12 | strtok | (curl_slist **,const char *) | | add2list | 1 | -| taint.cpp:512:7:512:12 | strtok | (curl_slist *,const char *) | | curl_slist_append | 1 | -| taint.cpp:512:7:512:12 | strtok | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| taint.cpp:512:7:512:12 | strtok | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| taint.cpp:512:7:512:12 | strtok | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| taint.cpp:512:7:512:12 | strtok | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| taint.cpp:512:7:512:12 | strtok | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| taint.cpp:512:7:512:12 | strtok | (gzFile,const char *) | | gzputs | 1 | -| taint.cpp:512:7:512:12 | strtok | (int,const char *) | | BIO_meth_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (int,const char *) | | _IO_new_fdopen | 1 | -| taint.cpp:512:7:512:12 | strtok | (int,const char *) | | gzdopen | 1 | -| taint.cpp:512:7:512:12 | strtok | (int,const char *) | | setlocale | 1 | -| taint.cpp:512:7:512:12 | strtok | (int,const char *) | | xsetlocale | 1 | -| taint.cpp:512:7:512:12 | strtok | (lemon *,const char *) | | file_makename | 1 | -| taint.cpp:512:7:512:12 | strtok | (long *,const char *) | | secs2ms | 1 | -| taint.cpp:512:7:512:12 | strtok | (long *,const char *) | | str2num | 1 | -| taint.cpp:512:7:512:12 | strtok | (long *,const char *) | | str2unum | 1 | -| taint.cpp:512:7:512:12 | strtok | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| taint.cpp:512:7:512:12 | strtok | (size_t *,const char *) | | next_protos_parse | 1 | -| taint.cpp:512:7:512:12 | strtok | (slist_wc **,const char *) | | easysrc_add | 1 | -| taint.cpp:512:7:512:12 | strtok | (slist_wc *,const char *) | | slist_wc_append | 1 | -| taint.cpp:512:7:512:12 | strtok | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| taint.cpp:512:7:512:12 | strtok | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| taint.cpp:512:7:512:12 | strtok | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| taint.cpp:512:7:512:12 | strtok | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| taint.cpp:512:7:512:12 | strtok | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| taint.cpp:512:7:512:12 | strtok | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| taint.cpp:512:7:512:12 | strtok | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| taint.cpp:512:7:512:12 | strtok | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| taint.cpp:512:7:512:12 | strtok | (stringtable *,const char *) | | stringtable_add | 1 | -| taint.cpp:512:7:512:12 | strtok | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| taint.cpp:512:7:512:12 | strtok | (unsigned long *,const char *) | | set_cert_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (unsigned long *,const char *) | | set_name_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | _IO_gets | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | __mktemp | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | __nis_default_group | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | __nis_default_owner | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | __xpg_basename | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | ctermid | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | cuserid | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | defossilize | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | des_setparity | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | dirname | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | getwd | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | make_uppercase | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | mkdtemp | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | next_item | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | strfry | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | CStringT | CStringT | 0 | -| taint.cpp:523:7:523:13 | _strset | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:523:7:523:13 | _strset | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:523:7:523:13 | _strset | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:523:7:523:13 | _strset | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:523:7:523:13 | _strset | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:523:7:523:13 | _strset | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:523:7:523:13 | _strset | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:523:7:523:13 | _strset | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:523:7:523:13 | _strset | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:523:7:523:13 | _strset | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:523:7:523:13 | _strset | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:523:7:523:13 | _strset | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:523:7:523:13 | _strset | (FTS *,int) | | fts_children | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:523:7:523:13 | _strset | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:523:7:523:13 | _strset | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:523:7:523:13 | _strset | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:523:7:523:13 | _strset | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:523:7:523:13 | _strset | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:523:7:523:13 | _strset | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:523:7:523:13 | _strset | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:523:7:523:13 | _strset | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:523:7:523:13 | _strset | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:523:7:523:13 | _strset | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:523:7:523:13 | _strset | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:523:7:523:13 | _strset | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:523:7:523:13 | _strset | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:523:7:523:13 | _strset | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:523:7:523:13 | _strset | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:523:7:523:13 | _strset | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:523:7:523:13 | _strset | (char **,int) | | addrsort | 1 | -| taint.cpp:523:7:523:13 | _strset | (char *,int) | | Curl_str2addr | 0 | -| taint.cpp:523:7:523:13 | _strset | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:523:7:523:13 | _strset | (char *,int) | | PEM_proc_type | 0 | -| taint.cpp:523:7:523:13 | _strset | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:523:7:523:13 | _strset | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:523:7:523:13 | _strset | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:523:7:523:13 | _strset | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:523:7:523:13 | _strset | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:523:7:523:13 | _strset | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:523:7:523:13 | _strset | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:523:7:523:13 | _strset | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:523:7:523:13 | _strset | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:523:7:523:13 | _strset | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:523:7:523:13 | _strset | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:523:7:523:13 | _strset | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:523:7:523:13 | _strset | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:523:7:523:13 | _strset | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | ftok | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:523:7:523:13 | _strset | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:523:7:523:13 | _strset | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:523:7:523:13 | _strset | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:523:7:523:13 | _strset | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:523:7:523:13 | _strset | (double,int) | | __ldexp | 1 | -| taint.cpp:523:7:523:13 | _strset | (double,int) | | __scalbn | 1 | -| taint.cpp:523:7:523:13 | _strset | (double[],int) | | getloadavg | 1 | -| taint.cpp:523:7:523:13 | _strset | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:523:7:523:13 | _strset | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:523:7:523:13 | _strset | (float,int) | | __ldexpf | 1 | -| taint.cpp:523:7:523:13 | _strset | (float,int) | | __scalbnf | 1 | -| taint.cpp:523:7:523:13 | _strset | (gzFile,int) | | gzflush | 1 | -| taint.cpp:523:7:523:13 | _strset | (gzFile,int) | | gzputc | 1 | -| taint.cpp:523:7:523:13 | _strset | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:523:7:523:13 | _strset | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:523:7:523:13 | _strset | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:523:7:523:13 | _strset | (int,int) | | BN_security_bits | 1 | -| taint.cpp:523:7:523:13 | _strset | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:523:7:523:13 | _strset | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:523:7:523:13 | _strset | (int,int) | | __isctype | 1 | -| taint.cpp:523:7:523:13 | _strset | (int,int) | | acttab_alloc | 1 | -| taint.cpp:523:7:523:13 | _strset | (int,int) | | div | 1 | -| taint.cpp:523:7:523:13 | _strset | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:523:7:523:13 | _strset | (long double,int) | | __ldexpl | 1 | -| taint.cpp:523:7:523:13 | _strset | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:523:7:523:13 | _strset | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:523:7:523:13 | _strset | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:523:7:523:13 | _strset | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:523:7:523:13 | _strset | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:523:7:523:13 | _strset | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:523:7:523:13 | _strset | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:523:7:523:13 | _strset | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:523:7:523:13 | _strset | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:523:7:523:13 | _strset | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:523:7:523:13 | _strset | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:523:7:523:13 | _strset | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:523:7:523:13 | _strset | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:523:7:523:13 | _strset | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:523:7:523:13 | _strset | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:523:7:523:13 | _strset | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:523:7:523:13 | _strset | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:523:7:523:13 | _strset | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:523:7:523:13 | _strset | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:523:7:523:13 | _strset | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:523:7:523:13 | _strset | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:523:7:523:13 | _strset | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:523:7:523:13 | _strset | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:523:7:523:13 | _strset | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:523:7:523:13 | _strset | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:523:7:523:13 | _strset | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:523:7:523:13 | _strset | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:523:7:523:13 | _strset | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:523:7:523:13 | _strset | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:523:7:523:13 | _strset | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:525:6:525:18 | test_strset_1 | (__printf_buffer *,char) | | __printf_buffer_putc_1 | 1 | -| taint.cpp:525:6:525:18 | test_strset_1 | (char **,char) | | Curl_str_single | 1 | -| taint.cpp:525:6:525:18 | test_strset_1 | (char **,char) | | __old_strsep_1c | 1 | -| taint.cpp:525:6:525:18 | test_strset_1 | (const CStringT &,char) | | operator+ | 1 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | _IO_gets | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | __mktemp | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | __nis_default_group | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | __nis_default_owner | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | __xpg_basename | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | ctermid | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | cuserid | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | defossilize | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | des_setparity | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | dirname | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | getwd | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | make_uppercase | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | mkdtemp | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | next_item | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | strfry | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | CStringT | CStringT | 0 | -| taint.cpp:538:7:538:13 | mempcpy | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BIO *,X509 *,unsigned long) | | ossl_x509_print_ex_brief | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BIO *,X509_CRL *,unsigned long) | | X509_CRL_print_ex | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BIO *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2B_CTX *,const void *,size_t) | | ossl_blake2b_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2B_CTX *,const void *,size_t) | | ossl_blake2b_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_personal | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_salt | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2S_CTX *,const void *,size_t) | | ossl_blake2s_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2S_CTX *,const void *,size_t) | | ossl_blake2s_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_personal | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_salt | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (CCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ccm128_aad | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (CCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ccm128_tag | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FFC_PARAMS *,const unsigned char *,size_t) | | ossl_ffc_params_set_seed | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const char *,size_t) | | _IO_new_do_write | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_default_xsputn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_default_xsputn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_new_file_xsputn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_new_file_xsputn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_wdefault_xsputn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_wdefault_xsputn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_wfile_xsputn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_wfile_xsputn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | __printf_buffer_as_file_xsputn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | __printf_buffer_as_file_xsputn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | __wprintf_buffer_as_file_xsputn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | __wprintf_buffer_as_file_xsputn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,void *,size_t) | | _IO_default_xsgetn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,void *,size_t) | | _IO_file_xsgetn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,void *,size_t) | | _IO_file_xsgetn_mmap | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,void *,size_t) | | _IO_wdefault_xsgetn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_aad | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_setiv | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (GCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_gcm128_tag | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (MD5_CTX *,const void *,size_t) | | MD5_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (MD5_CTX *,const void *,size_t) | | MD5_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (MD5_SHA1_CTX *,const void *,size_t) | | ossl_md5_sha1_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (MD5_SHA1_CTX *,const void *,size_t) | | ossl_md5_sha1_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_JSON_ENC *,const char *,size_t) | | ossl_json_str_len | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_JSON_ENC *,const void *,size_t) | | ossl_json_str_hex | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_JSON_ENC *,const void *,size_t) | | ossl_json_str_hex | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_entropy | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_user_entropy | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_ptr | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_ptr | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string_or_ptr | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string_or_ptr | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_PARAM *,void *,size_t) | | ossl_param_set_secure_block | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_default | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_multiblock | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (POLY1305 *,const unsigned char *,size_t) | | Poly1305_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_generic_initiv | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_hw_tdes_ede3_initkey | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (PROV_GCM_CTX *,const unsigned char *,size_t) | | ossl_gcm_aad_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (QUIC_PN,unsigned char *,size_t) | | ossl_quic_wire_encode_pkt_hdr_pn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (QUIC_RXFC *,OSSL_STATM *,size_t) | | ossl_quic_rstream_new | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (QUIC_TLS *,const unsigned char *,size_t) | | ossl_quic_tls_set_transport_params | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (RAND_POOL *,const unsigned char *,size_t) | | ossl_rand_pool_adin_mix_in | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (RAND_POOL *,size_t,size_t) | | ossl_rand_pool_add_end | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (RIPEMD160_CTX *,const void *,size_t) | | RIPEMD160_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (RIPEMD160_CTX *,const void *,size_t) | | RIPEMD160_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (RIPEMD160_CTX *,const void *,size_t) | | ripemd160_block_data_order | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (RIPEMD160_CTX *,const void *,size_t) | | ripemd160_block_data_order | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT **,const unsigned char **,size_t) | | o2i_SCT | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT *,const unsigned char **,size_t) | | o2i_SCT_signature | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT *,const unsigned char *,size_t) | | SCT_set1_extensions | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT *,const unsigned char *,size_t) | | SCT_set1_log_id | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT *,const unsigned char *,size_t) | | SCT_set1_signature | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT *,unsigned char *,size_t) | | SCT_set0_extensions | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT *,unsigned char *,size_t) | | SCT_set0_log_id | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT *,unsigned char *,size_t) | | SCT_set0_signature | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA256_CTX *,const void *,size_t) | | SHA224_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA256_CTX *,const void *,size_t) | | SHA224_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA256_CTX *,const void *,size_t) | | SHA256_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA256_CTX *,const void *,size_t) | | SHA256_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA512_CTX *,const void *,size_t) | | SHA384_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA512_CTX *,const void *,size_t) | | SHA384_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA512_CTX *,const void *,size_t) | | SHA512_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA512_CTX *,const void *,size_t) | | SHA512_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA_CTX *,const void *,size_t) | | SHA1_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA_CTX *,const void *,size_t) | | SHA1_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SIPHASH *,const unsigned char *,size_t) | | SipHash_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SIPHASH *,unsigned char *,size_t) | | SipHash_Final | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SIV128_CONTEXT *,const unsigned char *,size_t) | | ossl_siv128_set_tag | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SIV128_CONTEXT *,unsigned char *,size_t) | | ossl_siv128_get_tag | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_priv | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_pub | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_block_data_order | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_block_data_order | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL *,const unsigned char *,size_t) | | SSL_set1_client_cert_type | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL *,const unsigned char *,size_t) | | SSL_set1_server_cert_type | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL *,const unsigned char *,size_t) | | SSL_set_quic_tls_transport_params | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL *,size_t,size_t) | | SSL_set_block_padding_ex | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_CONNECTION *,TLS_RECORD *,size_t) | | ssl_release_record | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_CONNECTION *,const unsigned char *,size_t) | | lookup_sess_in_cache | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_client_cert_type | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_server_cert_type | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_CTX *,size_t,size_t) | | SSL_CTX_set_block_padding_ex | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_alpn_selected | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_master_key | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_SESSION *,const void *,size_t) | | SSL_SESSION_set1_ticket_appdata | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_SESSION *,const void *,size_t) | | SSL_SESSION_set1_ticket_appdata | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (Strtab *,const char *,size_t) | | strtabadd | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_BitUpdate | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_BitUpdate | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,BUF_MEM *,size_t) | | WPACKET_init_len | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,const unsigned char *,size_t) | | ossl_quic_wire_encode_frame_new_token | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,const void *,size_t) | | WPACKET_memcpy | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,const void *,size_t) | | WPACKET_memcpy | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,int,size_t) | | WPACKET_memset | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,uint64_t,size_t) | | WPACKET_put_bytes__ | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,unsigned char *,size_t) | | WPACKET_init_der | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,unsigned char *,size_t) | | dtls_raw_hello_verify_request | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_add1_host | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (__printf_buffer *,char,size_t) | | __printf_buffer_pad_1 | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (__printf_buffer *,const char *,size_t) | | __printf_buffer_write | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (__printf_buffer_snprintf *,char *,size_t) | | __printf_buffer_snprintf_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (__wprintf_buffer *,const wchar_t *,size_t) | | __wprintf_buffer_write | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (__wprintf_buffer *,wchar_t,size_t) | | __wprintf_buffer_pad_1 | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (alloc_buffer,const void *,size_t) | | __libc_alloc_buffer_copy_bytes | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (alloc_buffer,const void *,size_t) | | __libc_alloc_buffer_copy_bytes | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (argp_fmtstream *,argp_fmtstream_t,size_t) | | __argp_fmtstream_ensure | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (argp_fmtstream_t,const char *,size_t) | | __argp_fmtstream_write | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char **,size_t *,size_t) | | Curl_str_number | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | Curl_strntolower | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | Curl_strntoupper | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | uv__strscpy | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *,size_t,size_t) | | __getcwd_chk | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *__restrict__,const char *__restrict__,size_t) | | __strlcat | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *__restrict__,const char *__restrict__,size_t) | | __strlcpy | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const EVP_MD *,const unsigned char *,size_t) | | OSSL_STORE_SEARCH_by_key_fingerprint | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const OSSL_CMP_CTX *,char *,size_t) | | OSSL_CMP_CTX_snprint_PKIStatus | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const OSSL_CMP_PKISI *,char *,size_t) | | OSSL_CMP_snprint_PKIStatusInfo | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const OSSL_NAMEMAP *,int,size_t) | | ossl_namemap_num2name | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const OSSL_PARAM *,char **,size_t) | | OSSL_PARAM_get_utf8_string | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const SSL *,unsigned char *,size_t) | | SSL_get_client_random | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const SSL *,unsigned char *,size_t) | | SSL_get_server_random | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | __libc_ns_makecanon | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | __realpath_chk | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | getpass_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | ns_makecanon | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,const char *,size_t) | | c_strncasecmp | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,const char *,unsigned long) | | __ngettext | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,void *,size_t) | | uv__random_readpath | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const charmap_t *,const char *,size_t) | | charmap_find_symbol | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const charmap_t *,const char *,size_t) | | charmap_find_value | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const repertoire_t *,const char *,size_t) | | repertoire_find_value | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const unsigned char *,char *,size_t) | | ___ns_name_ntop | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const void *,size_t,size_t) | | support_blob_repeat_allocate | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const void *,size_t,size_t) | | support_blob_repeat_allocate_shared | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const_nis_name,char *,size_t) | | nis_domain_of_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const_nis_name,char *,size_t) | | nis_leaf_of_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const_nis_name,char *,size_t) | | nis_name_of_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int *,int *,size_t) | | EVP_PBE_get | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | Curl_strerror | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | __strerror_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | __ttyname_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | uv_err_name_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | uv_strerror_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,const void *,size_t) | | _nl_intern_locale_data | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (int,const void *,size_t) | | _nl_intern_locale_data | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,const void *,size_t) | | writeall | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (int,const void *,size_t) | | writeall | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,void *,size_t) | | __readall | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (locale_file *,const uint32_t *,size_t) | | add_locale_uint32_array | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (ns_rr_cursor *,const unsigned char *,size_t) | | __ns_rr_cursor_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (pthread_attr_t *,void *,size_t) | | __pthread_attr_setstack | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (scratch_buffer *,size_t,size_t) | | __libc_scratch_buffer_set_array_size | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (unsigned int,char *,size_t) | | __initstate | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (void **,size_t,size_t) | | __posix_memalign | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (void *,size_t,size_t) | | Curl_hash_str | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (void *,size_t,size_t) | | __libc_reallocarray | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (wchar_t *,const wchar_t *,size_t) | | __wmemcpy | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (wchar_t *,const wchar_t *,size_t) | | __wmemmove | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcat | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcpy | 2 | -| taint.cpp:540:6:540:17 | test_mempcpy | (int *) | | rresvport | 0 | -| taint.cpp:548:7:548:13 | memccpy | (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 3 | -| taint.cpp:548:7:548:13 | memccpy | (BIGNUM *,BIGNUM *,const unsigned char **,size_t) | | ossl_decode_der_dsa_sig | 3 | -| taint.cpp:548:7:548:13 | memccpy | (BIO *,X509 *,unsigned long,unsigned long) | | X509_print_ex | 3 | -| taint.cpp:548:7:548:13 | memccpy | (BIO *,X509_ACERT *,unsigned long,unsigned long) | | X509_ACERT_print_ex | 3 | -| taint.cpp:548:7:548:13 | memccpy | (BIO *,X509_REQ *,unsigned long,unsigned long) | | X509_REQ_print_ex | 3 | -| taint.cpp:548:7:548:13 | memccpy | (BIO *,const X509_NAME *,int,unsigned long) | | X509_NAME_print_ex | 2 | -| taint.cpp:548:7:548:13 | memccpy | (BIO *,const X509_NAME *,int,unsigned long) | | X509_NAME_print_ex | 3 | -| taint.cpp:548:7:548:13 | memccpy | (CCM128_CONTEXT *,const unsigned char *,size_t,size_t) | | CRYPTO_ccm128_setiv | 3 | -| taint.cpp:548:7:548:13 | memccpy | (CCM128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_ccm128_decrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (CCM128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_ccm128_encrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (EVP_KEYMGMT *,void *,char *,size_t) | | evp_keymgmt_util_get_deflt_digest_name | 3 | -| taint.cpp:548:7:548:13 | memccpy | (FILE *,const X509_NAME *,int,unsigned long) | | X509_NAME_print_ex_fp | 2 | -| taint.cpp:548:7:548:13 | memccpy | (FILE *,const X509_NAME *,int,unsigned long) | | X509_NAME_print_ex_fp | 3 | -| taint.cpp:548:7:548:13 | memccpy | (GCM128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_gcm128_decrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (GCM128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_gcm128_encrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (KECCAK1600_CTX *,unsigned char,size_t,size_t) | | ossl_keccak_init | 3 | -| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 3 | -| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 3 | -| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 3 | -| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 3 | -| taint.cpp:548:7:548:13 | memccpy | (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 3 | -| taint.cpp:548:7:548:13 | memccpy | (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 3 | -| taint.cpp:548:7:548:13 | memccpy | (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OCB128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_ocb128_decrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OCB128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_ocb128_encrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OSSL_HPKE_CTX *,const char *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_psk | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OSSL_LIB_CTX *,const OSSL_PROPERTY_LIST *,char *,size_t) | | ossl_property_list_to_string | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OSSL_PARAM[],size_t,size_t,unsigned long) | | ossl_digest_default_get_params | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OSSL_PARAM_BLD *,const char *,const BIGNUM *,size_t) | | OSSL_PARAM_BLD_push_BN_pad | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OSSL_PARAM_BLD *,const char *,const char *,size_t) | | OSSL_PARAM_BLD_push_utf8_string | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OSSL_PARAM_BLD *,const char *,const void *,size_t) | | OSSL_PARAM_BLD_push_octet_string | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OSSL_RECORD_LAYER *,size_t,size_t,size_t) | | tls_setup_write_buffer | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_chunked_cbc | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_chunked_cfb8 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_chunked_cfb128 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_chunked_ofb128 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_generic_cbc | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_generic_cfb1 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_generic_cfb8 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_generic_cfb128 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_generic_ctr | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_generic_ofb128 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_tdes_cbc | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_tdes_ecb | 3 | -| taint.cpp:548:7:548:13 | memccpy | (RAND_POOL *,const unsigned char *,size_t,size_t) | | ossl_rand_pool_add | 3 | -| taint.cpp:548:7:548:13 | memccpy | (SIV128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | ossl_siv128_decrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (SIV128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | ossl_siv128_encrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (SSL *,uint64_t,const SSL_SHUTDOWN_EX_ARGS *,size_t) | | SSL_shutdown_ex | 3 | -| taint.cpp:548:7:548:13 | memccpy | (SSL_CONNECTION *,unsigned char **,const void *,size_t) | | construct_key_exchange_tbs | 3 | -| taint.cpp:548:7:548:13 | memccpy | (WPACKET *,const void *,size_t,size_t) | | WPACKET_sub_memcpy__ | 3 | -| taint.cpp:548:7:548:13 | memccpy | (WPACKET *,int,const unsigned char *,size_t) | | ossl_DER_w_octet_string | 3 | -| taint.cpp:548:7:548:13 | memccpy | (WPACKET *,int,const unsigned char *,size_t) | | ossl_DER_w_precompiled | 3 | -| taint.cpp:548:7:548:13 | memccpy | (WPACKET *,size_t,unsigned char **,size_t) | | WPACKET_sub_allocate_bytes__ | 3 | -| taint.cpp:548:7:548:13 | memccpy | (WPACKET *,size_t,unsigned char **,size_t) | | WPACKET_sub_reserve_bytes__ | 3 | -| taint.cpp:548:7:548:13 | memccpy | (WPACKET *,uint64_t,const unsigned char *,size_t) | | ossl_quic_wire_encode_transport_param_bytes | 3 | -| taint.cpp:548:7:548:13 | memccpy | (WPACKET *,unsigned char *,size_t,size_t) | | WPACKET_init_static_len | 3 | -| taint.cpp:548:7:548:13 | memccpy | (alloc_buffer *,size_t,size_t,size_t) | | __libc_alloc_buffer_alloc_array | 3 | -| taint.cpp:548:7:548:13 | memccpy | (char *,const wchar_t *,size_t,size_t) | | __wcstombs_chk | 3 | -| taint.cpp:548:7:548:13 | memccpy | (char *__restrict__,const char *__restrict__,size_t,size_t) | | __strlcat_chk | 3 | -| taint.cpp:548:7:548:13 | memccpy | (char *__restrict__,const char *__restrict__,size_t,size_t) | | __strlcpy_chk | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const ML_DSA_KEY *,int,const uint8_t *,size_t) | | ossl_ml_dsa_mu_init | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const VECTOR *,uint32_t,uint8_t *,size_t) | | ossl_ml_dsa_w1_encode | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const char *,const char *,const char *,unsigned long) | | __dngettext | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const char *,u_char *,unsigned char *,size_t) | | __b64_pton | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const nis_error,const char *,char *,size_t) | | nis_sperror_r | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const u128[16],uint8_t *,const uint8_t *,size_t) | | ossl_polyval_ghash_hash | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const void *,size_t,const void *,size_t) | | __memmem | 3 | -| taint.cpp:548:7:548:13 | memccpy | (dynarray_header *,size_t,void *,size_t) | | __libc_dynarray_resize | 3 | -| taint.cpp:548:7:548:13 | memccpy | (dynarray_header *,size_t,void *,size_t) | | __libc_dynarray_resize_clear | 3 | -| taint.cpp:548:7:548:13 | memccpy | (in_addr_t,uint32_t,char *,size_t) | | inet_neta | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int *,X509 *,stack_st_X509 *,unsigned long) | | X509_chain_check_suiteb | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int,ENGINE *,const unsigned char *,size_t) | | EVP_PKEY_new_raw_private_key | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int,ENGINE *,const unsigned char *,size_t) | | EVP_PKEY_new_raw_public_key | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int,char *,size_t,size_t) | | __ttyname_r_chk | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int,const char *,void *,size_t) | | inet_net_pton | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int,const regex_t *,char *,size_t) | | jim_regerror | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int,const void *,char *,size_t) | | uv_inet_ntop | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int,int,size_t,size_t) | | ossl_rand_pool_new | 3 | -| taint.cpp:548:7:548:13 | memccpy | (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 3 | -| taint.cpp:548:7:548:13 | memccpy | (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 3 | -| taint.cpp:548:7:548:13 | memccpy | (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 3 | -| taint.cpp:548:7:548:13 | memccpy | (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 3 | -| taint.cpp:548:7:548:13 | memccpy | (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 3 | -| taint.cpp:548:7:548:13 | memccpy | (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 3 | -| taint.cpp:548:7:548:13 | memccpy | (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 3 | -| taint.cpp:548:7:548:13 | memccpy | (resolv_context *,const char *,char *,size_t) | | __res_context_hostalias | 3 | -| taint.cpp:548:7:548:13 | memccpy | (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 3 | -| taint.cpp:548:7:548:13 | memccpy | (u64[2],const u128[16],const u8 *,size_t) | | ossl_gcm_ghash_4bit | 3 | -| taint.cpp:548:7:548:13 | memccpy | (u_long,unsigned long,char *,size_t) | | ns_format_ttl | 3 | -| taint.cpp:548:7:548:13 | memccpy | (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 3 | -| taint.cpp:548:7:548:13 | memccpy | (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 3 | -| taint.cpp:548:7:548:13 | memccpy | (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 3 | -| taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_add_words | 2 | -| taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_add_words | 3 | -| taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_words | 2 | -| taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_words | 3 | -| taint.cpp:548:7:548:13 | memccpy | (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 3 | -| taint.cpp:548:7:548:13 | memccpy | (void *,const void *,int,size_t) | | __memccpy | 0 | -| taint.cpp:548:7:548:13 | memccpy | (void *,const void *,int,size_t) | | __memccpy | 1 | -| taint.cpp:548:7:548:13 | memccpy | (void *,const void *,int,size_t) | | __memccpy | 2 | -| taint.cpp:548:7:548:13 | memccpy | (void *,const void *,int,size_t) | | __memccpy | 3 | -| taint.cpp:548:7:548:13 | memccpy | (void *,unsigned char *,size_t *,size_t) | | ossl_ccm_stream_final | 3 | -| taint.cpp:548:7:548:13 | memccpy | (void *,unsigned char *,size_t *,size_t) | | ossl_cipher_generic_block_final | 3 | -| taint.cpp:548:7:548:13 | memccpy | (void *,unsigned char *,size_t *,size_t) | | ossl_gcm_stream_final | 3 | -| taint.cpp:548:7:548:13 | memccpy | (wchar_t *,const char *,size_t,size_t) | | __mbstowcs_chk | 3 | -| taint.cpp:548:7:548:13 | memccpy | (wchar_t *,const wchar_t *,size_t,size_t) | | __wmemmove_chk | 3 | -| taint.cpp:550:6:550:17 | test_memccpy | (int *) | | rresvport | 0 | -| taint.cpp:558:7:558:12 | strcat | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| taint.cpp:558:7:558:12 | strcat | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| taint.cpp:558:7:558:12 | strcat | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| taint.cpp:558:7:558:12 | strcat | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| taint.cpp:558:7:558:12 | strcat | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| taint.cpp:558:7:558:12 | strcat | (CONF *,const char *) | | _CONF_new_section | 1 | -| taint.cpp:558:7:558:12 | strcat | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| taint.cpp:558:7:558:12 | strcat | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| taint.cpp:558:7:558:12 | strcat | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| taint.cpp:558:7:558:12 | strcat | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| taint.cpp:558:7:558:12 | strcat | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| taint.cpp:558:7:558:12 | strcat | (DSO *,const char *) | | DSO_convert_filename | 1 | -| taint.cpp:558:7:558:12 | strcat | (DSO *,const char *) | | DSO_set_filename | 1 | -| taint.cpp:558:7:558:12 | strcat | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| taint.cpp:558:7:558:12 | strcat | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| taint.cpp:558:7:558:12 | strcat | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| taint.cpp:558:7:558:12 | strcat | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (GlobalConfig *,const char *) | | setvariable | 1 | -| taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| taint.cpp:558:7:558:12 | strcat | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| taint.cpp:558:7:558:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| taint.cpp:558:7:558:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| taint.cpp:558:7:558:12 | strcat | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| taint.cpp:558:7:558:12 | strcat | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| taint.cpp:558:7:558:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| taint.cpp:558:7:558:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| taint.cpp:558:7:558:12 | strcat | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| taint.cpp:558:7:558:12 | strcat | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL *,const char *) | | SSL_add1_host | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL *,const char *) | | SSL_set1_host | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| taint.cpp:558:7:558:12 | strcat | (UI *,const char *) | | UI_add_error_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (UI *,const char *) | | UI_add_info_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (UI *,const char *) | | UI_dup_error_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (UI *,const char *) | | UI_dup_info_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (X509 *,const char *) | | x509_ctrl_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| taint.cpp:558:7:558:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| taint.cpp:558:7:558:12 | strcat | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| taint.cpp:558:7:558:12 | strcat | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| taint.cpp:558:7:558:12 | strcat | (char **,const char *) | | Curl_setstropt | 1 | -| taint.cpp:558:7:558:12 | strcat | (char **,const char *) | | __strsep | 1 | -| taint.cpp:558:7:558:12 | strcat | (char *,const char *) | | xstrdup | 0 | -| taint.cpp:558:7:558:12 | strcat | (char *,const char *) | | xstrdup | 1 | -| taint.cpp:558:7:558:12 | strcat | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | Configcmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | Curl_timestrcmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | DES_crypt | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __bindtextdomain | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __dgettext | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __gconv_compare_alias | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strcasestr | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strcspn_generic | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strcspn_sse42 | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strpbrk_generic | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strspn_generic | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strspn_sse42 | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strstr_generic | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strverscmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | advance | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | c_strcasecmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | charmap_aliases | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | charmap_open | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | chroot_canon | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | get_passwd | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | gzopen | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | gzopen64 | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | iconv_open | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | openssl_fopen | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | sqlite3_strglob | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | sqlite3_stricmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | step | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | tempnam | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | xfopen | 1 | -| taint.cpp:558:7:558:12 | strcat | (const mntent *,const char *) | | __hasmntopt | 1 | -| taint.cpp:558:7:558:12 | strcat | (const nis_error,const char *) | | nis_sperror | 1 | -| taint.cpp:558:7:558:12 | strcat | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| taint.cpp:558:7:558:12 | strcat | (curl_off_t *,const char *) | | str2offset | 1 | -| taint.cpp:558:7:558:12 | strcat | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| taint.cpp:558:7:558:12 | strcat | (curl_slist **,const char *) | | add2list | 1 | -| taint.cpp:558:7:558:12 | strcat | (curl_slist *,const char *) | | curl_slist_append | 1 | -| taint.cpp:558:7:558:12 | strcat | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| taint.cpp:558:7:558:12 | strcat | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| taint.cpp:558:7:558:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| taint.cpp:558:7:558:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| taint.cpp:558:7:558:12 | strcat | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| taint.cpp:558:7:558:12 | strcat | (gzFile,const char *) | | gzputs | 1 | -| taint.cpp:558:7:558:12 | strcat | (int,const char *) | | BIO_meth_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (int,const char *) | | _IO_new_fdopen | 1 | -| taint.cpp:558:7:558:12 | strcat | (int,const char *) | | gzdopen | 1 | -| taint.cpp:558:7:558:12 | strcat | (int,const char *) | | setlocale | 1 | -| taint.cpp:558:7:558:12 | strcat | (int,const char *) | | xsetlocale | 1 | -| taint.cpp:558:7:558:12 | strcat | (lemon *,const char *) | | file_makename | 1 | -| taint.cpp:558:7:558:12 | strcat | (long *,const char *) | | secs2ms | 1 | -| taint.cpp:558:7:558:12 | strcat | (long *,const char *) | | str2num | 1 | -| taint.cpp:558:7:558:12 | strcat | (long *,const char *) | | str2unum | 1 | -| taint.cpp:558:7:558:12 | strcat | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| taint.cpp:558:7:558:12 | strcat | (size_t *,const char *) | | next_protos_parse | 1 | -| taint.cpp:558:7:558:12 | strcat | (slist_wc **,const char *) | | easysrc_add | 1 | -| taint.cpp:558:7:558:12 | strcat | (slist_wc *,const char *) | | slist_wc_append | 1 | -| taint.cpp:558:7:558:12 | strcat | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| taint.cpp:558:7:558:12 | strcat | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| taint.cpp:558:7:558:12 | strcat | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| taint.cpp:558:7:558:12 | strcat | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| taint.cpp:558:7:558:12 | strcat | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| taint.cpp:558:7:558:12 | strcat | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| taint.cpp:558:7:558:12 | strcat | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| taint.cpp:558:7:558:12 | strcat | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| taint.cpp:558:7:558:12 | strcat | (stringtable *,const char *) | | stringtable_add | 1 | -| taint.cpp:558:7:558:12 | strcat | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| taint.cpp:558:7:558:12 | strcat | (unsigned long *,const char *) | | set_cert_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (unsigned long *,const char *) | | set_name_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| taint.cpp:560:6:560:16 | test_strcat | (PKCS7 *,int,long,char *) | | PKCS7_ctrl | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (SSL_CTX *,srpsrvparm *,char *,char *) | | set_up_srp_verifier_file | 2 | -| taint.cpp:560:6:560:16 | test_strcat | (SSL_CTX *,srpsrvparm *,char *,char *) | | set_up_srp_verifier_file | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_init | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_old_init | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (_IO_strfile *,char *,int,char *) | | _IO_str_init_static | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (action **,e_action,symbol *,char *) | | Action_add | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (const char *,const char *,char *,char *) | | uv__idna_toascii | 2 | -| taint.cpp:560:6:560:16 | test_strcat | (const char *,const char *,char *,char *) | | uv__idna_toascii | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (int,const u_char *,const unsigned char *,char *) | | inet_nsap_ntoa | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (int,u_int,u_int,char *) | | svcunix_create | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_bio_CMS | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,DH **,pem_password_cb *,void *) | | PEM_read_bio_DHparams | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSAPrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSA_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSAparams | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,EC_GROUP **,pem_password_cb *,void *) | | PEM_read_bio_ECPKParameters | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_bio_ECPrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_bio_EC_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_bio_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_bio_PrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,EVP_PKEY **,pem_password_cb *,void *) | | d2i_PKCS8PrivateKey_bio | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,NETSCAPE_CERT_SEQUENCE **,pem_password_cb *,void *) | | PEM_read_bio_NETSCAPE_CERT_SEQUENCE | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,PKCS7 **,pem_password_cb *,void *) | | PEM_read_bio_PKCS7 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,PKCS8_PRIV_KEY_INFO **,pem_password_cb *,void *) | | PEM_read_bio_PKCS8_PRIV_KEY_INFO | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,RSA **,pem_password_cb *,void *) | | PEM_read_bio_RSAPrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,RSA **,pem_password_cb *,void *) | | PEM_read_bio_RSAPublicKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,RSA **,pem_password_cb *,void *) | | PEM_read_bio_RSA_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,SSL_SESSION **,pem_password_cb *,void *) | | PEM_read_bio_SSL_SESSION | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509 **,pem_password_cb *,void *) | | PEM_read_bio_X509 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509 **,pem_password_cb *,void *) | | PEM_read_bio_X509_AUX | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509_ACERT **,pem_password_cb *,void *) | | PEM_read_bio_X509_ACERT | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509_CRL **,pem_password_cb *,void *) | | PEM_read_bio_X509_CRL | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509_PUBKEY **,pem_password_cb *,void *) | | PEM_read_bio_X509_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509_REQ **,pem_password_cb *,void *) | | PEM_read_bio_X509_REQ | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509_SIG **,pem_password_cb *,void *) | | PEM_read_bio_PKCS8 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,size_t,..(*)(..),void *) | | ossl_quic_demux_new | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read_bio | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (DSO *,int,long,void *) | | DSO_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (EVP_CIPHER_CTX *,int,int,void *) | | EVP_CIPHER_CTX_ctrl | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (EVP_CIPHER_CTX *,int,int,void *) | | EVP_CIPHER_CTX_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_CMS | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,DH **,pem_password_cb *,void *) | | PEM_read_DHparams | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,DSA **,pem_password_cb *,void *) | | PEM_read_DSAPrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,DSA **,pem_password_cb *,void *) | | PEM_read_DSA_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,DSA **,pem_password_cb *,void *) | | PEM_read_DSAparams | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,EC_GROUP **,pem_password_cb *,void *) | | PEM_read_ECPKParameters | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_ECPrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_EC_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_PrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,EVP_PKEY **,pem_password_cb *,void *) | | d2i_PKCS8PrivateKey_fp | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,NETSCAPE_CERT_SEQUENCE **,pem_password_cb *,void *) | | PEM_read_NETSCAPE_CERT_SEQUENCE | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,PKCS7 **,pem_password_cb *,void *) | | PEM_read_PKCS7 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,PKCS8_PRIV_KEY_INFO **,pem_password_cb *,void *) | | PEM_read_PKCS8_PRIV_KEY_INFO | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,RSA **,pem_password_cb *,void *) | | PEM_read_RSAPrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,RSA **,pem_password_cb *,void *) | | PEM_read_RSAPublicKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,RSA **,pem_password_cb *,void *) | | PEM_read_RSA_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,SSL_SESSION **,pem_password_cb *,void *) | | PEM_read_SSL_SESSION | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,X509 **,pem_password_cb *,void *) | | PEM_read_X509 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,X509 **,pem_password_cb *,void *) | | PEM_read_X509_AUX | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,X509_ACERT **,pem_password_cb *,void *) | | PEM_read_X509_ACERT | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,X509_CRL **,pem_password_cb *,void *) | | PEM_read_X509_CRL | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,X509_PUBKEY **,pem_password_cb *,void *) | | PEM_read_X509_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,X509_REQ **,pem_password_cb *,void *) | | PEM_read_X509_REQ | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,X509_SIG **,pem_password_cb *,void *) | | PEM_read_PKCS8 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (MD5_SHA1_CTX *,int,int,void *) | | ossl_md5_sha1_ctrl | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (MD5_SHA1_CTX *,int,int,void *) | | ossl_md5_sha1_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (OCB128_CONTEXT *,OCB128_CONTEXT *,void *,void *) | | CRYPTO_ocb128_copy_ctx | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (OPENSSL_LHASH *,OPENSSL_LH_DOALL_FUNCARG_THUNK,OPENSSL_LH_DOALL_FUNCARG,void *) | | OPENSSL_LH_doall_arg_thunk | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (OSSL_PROVIDER *,int,..(*)(..),void *) | | evp_names_do_all | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (OSSL_QTX *,ossl_mutate_packet_cb,ossl_finish_mutate_cb,void *) | | ossl_qtx_set_mutator | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (QUIC_CHANNEL *,ossl_mutate_packet_cb,ossl_finish_mutate_cb,void *) | | ossl_quic_channel_set_mutator | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (QUIC_RXFC *,uint64_t,..(*)(..),void *) | | ossl_quic_rxfc_init_standalone | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SHA_CTX *,int,int,void *) | | ossl_sha1_ctrl | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SHA_CTX *,int,int,void *) | | ossl_sha1_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL *,int,long,void *) | | SSL_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL *,int,long,void *) | | dtls1_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL *,int,long,void *) | | ossl_quic_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL *,int,long,void *) | | ssl3_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL *,ossl_statem_mutate_handshake_cb,ossl_statem_finish_mutate_handshake_cb,void *) | | ossl_statem_set_mutator | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL_CTX *,SSL_CTX_generate_session_ticket_fn,SSL_CTX_decrypt_session_ticket_fn,void *) | | SSL_CTX_set_session_ticket_cb | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL_CTX *,int,long,void *) | | SSL_CTX_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL_CTX *,int,long,void *) | | ossl_quic_ctx_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL_CTX *,int,long,void *) | | ssl3_ctx_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (X509_ALGOR *,ASN1_OBJECT *,int,void *) | | X509_ALGOR_set0 | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (X509_ALGOR *,ASN1_OBJECT *,int,void *) | | X509_ALGOR_set0 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | PEM_def_callback | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | PEM_def_callback | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pem_password | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pem_password | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pvk_password | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pvk_password | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | Curl_mime_read | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | tool_header_cb | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | tool_read_cb | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (const OSSL_NAMEMAP *,int,..(*)(..),void *) | | ossl_namemap_doall_names | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (const char *,int,void *,void *) | | support_readdir_r_check | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (hash_table *,const void *,size_t,void *) | | insert_entry | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (int,unsigned long,..(*)(..),void *) | | RSA_generate_key | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_recover_init_sql | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_rtree_geometry_callback | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,const sqlite3_module *,void *) | | sqlite3_create_module | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,int,void *) | | sqlite3_file_control | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,int,void *) | | sqlite3_file_control | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,int,..(*)(..),void *) | | sqlite3_progress_handler | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,unsigned int,..(*)(..),void *) | | sqlite3_trace_v2 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (void *,const char *,const char *,void *) | | _dl_vsym | 3 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (ENGINE *,const char *,long,void *,..(*)(..),int) | | ENGINE_ctrl_cmd | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (ENGINE_TABLE **,ENGINE_CLEANUP_CB *,ENGINE *,const int *,int,int) | | engine_table_register | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (EVP_CIPHER_CTX *,const EVP_CIPHER *,ENGINE *,const unsigned char *,const unsigned char *,int) | | EVP_CipherInit_ex | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (FILE *,const char *,int,int,int,int) | | _IO_file_open | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (GENERAL_NAME *,const X509V3_EXT_METHOD *,X509V3_CTX *,int,const char *,int) | | a2i_GENERAL_NAME | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (Jim_Interp *,Jim_Obj *,Jim_Obj *const *,int,Jim_Obj **,int) | | Jim_DictKeysVector | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (Jim_Interp *,Jim_Obj *,Jim_Obj *const *,int,Jim_Obj *,int) | | Jim_SetDictKeysVector | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (Jim_Interp *,Jim_Obj *,const char *const *,int *,const char *,int) | | Jim_GetEnum | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (PKCS7 *,stack_st_X509 *,X509_STORE *,BIO *,BIO *,int) | | PKCS7_verify | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (QUIC_STREAM_MAP *,..(*)(..),void *,QUIC_RXFC *,QUIC_RXFC *,int) | | ossl_quic_stream_map_init | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (RSA *,const unsigned char *,const EVP_MD *,const EVP_MD *,const unsigned char *,int) | | RSA_verify_PKCS1_PSS_mgf1 | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (RSA *,unsigned char *,const unsigned char *,const EVP_MD *,const EVP_MD *,int) | | RSA_padding_add_PKCS1_PSS_mgf1 | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (SSL_CONNECTION *,PACKET *,unsigned int,RAW_EXTENSION **,size_t *,int) | | tls_collect_extensions | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (SSL_CONNECTION *,int,RAW_EXTENSION *,X509 *,size_t,int) | | tls_parse_all_extensions | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (UI *,const char *,int,char *,int,int) | | UI_add_input_string | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (UI *,const char *,int,char *,int,int) | | UI_dup_input_string | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (X509V3_CTX *,X509 *,X509 *,X509_REQ *,X509_CRL *,int) | | X509V3_set_ctx | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (X509_ALGOR *,const ASN1_ITEM *,const char *,int,void *,int) | | PKCS12_item_i2d_encrypt | 4 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (X509_ALGOR *,const ASN1_ITEM *,const char *,int,void *,int) | | PKCS12_item_i2d_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (X509_PUBKEY *,ASN1_OBJECT *,int,void *,unsigned char *,int) | | X509_PUBKEY_set0_param | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const BIGNUM *,int,..(*)(..),BN_CTX *,void *,int) | | BN_is_prime_fasttest | 4 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const BIGNUM *,int,..(*)(..),BN_CTX *,void *,int) | | BN_is_prime_fasttest | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const X509_ALGOR *,const ASN1_ITEM *,const char *,int,const ASN1_OCTET_STRING *,int) | | PKCS12_item_decrypt_d2i | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const XTS128_CONTEXT *,const unsigned char[16],const unsigned char *,unsigned char *,size_t,int) | | CRYPTO_xts128_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const XTS128_CONTEXT *,const unsigned char[16],const unsigned char *,unsigned char *,size_t,int) | | ossl_crypto_xts128gb_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const char *,const char *,const char *,int,unsigned long,int) | | __dcigettext | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const char *,const char *,int,int,unsigned char *,int) | | ___res_querydomain | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const char *,const char *__restrict__,char **,char **__restrict__,int,int) | | __strtol_internal | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const char *,const char *__restrict__,char **,char **__restrict__,int,int) | | __strtoul_internal | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const u_char *,const unsigned char *,const u_char *,const unsigned char *,ns_sect,int) | | ns_skiprr | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,long,DES_key_schedule *,DES_cblock *,int) | | DES_cbc_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,long,DES_key_schedule *,DES_cblock *,int) | | DES_ncbc_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,long,IDEA_KEY_SCHEDULE *,unsigned char *,int) | | IDEA_cbc_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,long,RC2_KEY *,unsigned char *,int) | | RC2_cbc_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,long,const BF_KEY *,unsigned char *,int) | | BF_cbc_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,long,const CAST_KEY *,unsigned char *,int) | | CAST_cbc_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,size_t,const SEED_KEY_SCHEDULE *,unsigned char[16],int) | | SEED_cbc_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const void *,const void *,int,int,..(*)(..),int) | | OBJ_bsearch_ex_ | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const void *,const void *,int,int,..(*)(..),int) | | ossl_bsearch | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const wchar_t *,const wchar_t *__restrict__,wchar_t **,wchar_t **__restrict__,int,int) | | __wcstol_internal | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const wchar_t *,const wchar_t *__restrict__,wchar_t **,wchar_t **__restrict__,int,int) | | __wcstoul_internal | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (res_state,const char *,int,int,unsigned char *,int) | | ___res_nquery | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (res_state,const char *,int,int,unsigned char *,int) | | ___res_nsearch | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (unsigned char *,int,const unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_PKCS1_OAEP | 5 | -| taint.cpp:589:7:589:12 | strsep | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| taint.cpp:589:7:589:12 | strsep | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| taint.cpp:589:7:589:12 | strsep | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| taint.cpp:589:7:589:12 | strsep | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| taint.cpp:589:7:589:12 | strsep | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| taint.cpp:589:7:589:12 | strsep | (CONF *,const char *) | | _CONF_new_section | 1 | -| taint.cpp:589:7:589:12 | strsep | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| taint.cpp:589:7:589:12 | strsep | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| taint.cpp:589:7:589:12 | strsep | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| taint.cpp:589:7:589:12 | strsep | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| taint.cpp:589:7:589:12 | strsep | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| taint.cpp:589:7:589:12 | strsep | (DSO *,const char *) | | DSO_convert_filename | 1 | -| taint.cpp:589:7:589:12 | strsep | (DSO *,const char *) | | DSO_set_filename | 1 | -| taint.cpp:589:7:589:12 | strsep | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| taint.cpp:589:7:589:12 | strsep | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| taint.cpp:589:7:589:12 | strsep | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| taint.cpp:589:7:589:12 | strsep | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (GlobalConfig *,const char *) | | setvariable | 1 | -| taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| taint.cpp:589:7:589:12 | strsep | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| taint.cpp:589:7:589:12 | strsep | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| taint.cpp:589:7:589:12 | strsep | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| taint.cpp:589:7:589:12 | strsep | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| taint.cpp:589:7:589:12 | strsep | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| taint.cpp:589:7:589:12 | strsep | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| taint.cpp:589:7:589:12 | strsep | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| taint.cpp:589:7:589:12 | strsep | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| taint.cpp:589:7:589:12 | strsep | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL *,const char *) | | SSL_add1_host | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL *,const char *) | | SSL_set1_host | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| taint.cpp:589:7:589:12 | strsep | (UI *,const char *) | | UI_add_error_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (UI *,const char *) | | UI_add_info_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (UI *,const char *) | | UI_dup_error_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (UI *,const char *) | | UI_dup_info_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (X509 *,const char *) | | x509_ctrl_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| taint.cpp:589:7:589:12 | strsep | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| taint.cpp:589:7:589:12 | strsep | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| taint.cpp:589:7:589:12 | strsep | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| taint.cpp:589:7:589:12 | strsep | (char **,const char *) | | Curl_setstropt | 0 | -| taint.cpp:589:7:589:12 | strsep | (char **,const char *) | | Curl_setstropt | 1 | -| taint.cpp:589:7:589:12 | strsep | (char **,const char *) | | __strsep | 0 | -| taint.cpp:589:7:589:12 | strsep | (char **,const char *) | | __strsep | 1 | -| taint.cpp:589:7:589:12 | strsep | (char *,const char *) | | xstrdup | 1 | -| taint.cpp:589:7:589:12 | strsep | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | Configcmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | Curl_timestrcmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | DES_crypt | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __bindtextdomain | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __dgettext | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __gconv_compare_alias | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strcasestr | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strcspn_generic | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strcspn_sse42 | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strpbrk_generic | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strspn_generic | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strspn_sse42 | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strstr_generic | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strverscmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | advance | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | c_strcasecmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | charmap_aliases | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | charmap_open | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | chroot_canon | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | get_passwd | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | gzopen | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | gzopen64 | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | iconv_open | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | openssl_fopen | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | sqlite3_strglob | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | sqlite3_stricmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | step | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | tempnam | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | xfopen | 1 | -| taint.cpp:589:7:589:12 | strsep | (const mntent *,const char *) | | __hasmntopt | 1 | -| taint.cpp:589:7:589:12 | strsep | (const nis_error,const char *) | | nis_sperror | 1 | -| taint.cpp:589:7:589:12 | strsep | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| taint.cpp:589:7:589:12 | strsep | (curl_off_t *,const char *) | | str2offset | 1 | -| taint.cpp:589:7:589:12 | strsep | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| taint.cpp:589:7:589:12 | strsep | (curl_slist **,const char *) | | add2list | 1 | -| taint.cpp:589:7:589:12 | strsep | (curl_slist *,const char *) | | curl_slist_append | 1 | -| taint.cpp:589:7:589:12 | strsep | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| taint.cpp:589:7:589:12 | strsep | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| taint.cpp:589:7:589:12 | strsep | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| taint.cpp:589:7:589:12 | strsep | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| taint.cpp:589:7:589:12 | strsep | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| taint.cpp:589:7:589:12 | strsep | (gzFile,const char *) | | gzputs | 1 | -| taint.cpp:589:7:589:12 | strsep | (int,const char *) | | BIO_meth_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (int,const char *) | | _IO_new_fdopen | 1 | -| taint.cpp:589:7:589:12 | strsep | (int,const char *) | | gzdopen | 1 | -| taint.cpp:589:7:589:12 | strsep | (int,const char *) | | setlocale | 1 | -| taint.cpp:589:7:589:12 | strsep | (int,const char *) | | xsetlocale | 1 | -| taint.cpp:589:7:589:12 | strsep | (lemon *,const char *) | | file_makename | 1 | -| taint.cpp:589:7:589:12 | strsep | (long *,const char *) | | secs2ms | 1 | -| taint.cpp:589:7:589:12 | strsep | (long *,const char *) | | str2num | 1 | -| taint.cpp:589:7:589:12 | strsep | (long *,const char *) | | str2unum | 1 | -| taint.cpp:589:7:589:12 | strsep | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| taint.cpp:589:7:589:12 | strsep | (size_t *,const char *) | | next_protos_parse | 1 | -| taint.cpp:589:7:589:12 | strsep | (slist_wc **,const char *) | | easysrc_add | 1 | -| taint.cpp:589:7:589:12 | strsep | (slist_wc *,const char *) | | slist_wc_append | 1 | -| taint.cpp:589:7:589:12 | strsep | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| taint.cpp:589:7:589:12 | strsep | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| taint.cpp:589:7:589:12 | strsep | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| taint.cpp:589:7:589:12 | strsep | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| taint.cpp:589:7:589:12 | strsep | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| taint.cpp:589:7:589:12 | strsep | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| taint.cpp:589:7:589:12 | strsep | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| taint.cpp:589:7:589:12 | strsep | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| taint.cpp:589:7:589:12 | strsep | (stringtable *,const char *) | | stringtable_add | 1 | -| taint.cpp:589:7:589:12 | strsep | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| taint.cpp:589:7:589:12 | strsep | (unsigned long *,const char *) | | set_cert_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (unsigned long *,const char *) | | set_name_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | _IO_gets | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | __mktemp | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | __nis_default_group | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | __nis_default_owner | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | __xpg_basename | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | ctermid | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | cuserid | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | defossilize | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | des_setparity | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | dirname | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | getwd | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | make_uppercase | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | mkdtemp | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | next_item | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | strfry | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | CStringT | CStringT | 0 | -| taint.cpp:602:7:602:13 | _strinc | (..(*)(..),void *) | | OSSL_STORE_do_all_loaders | 1 | -| taint.cpp:602:7:602:13 | _strinc | (..(*)(..),void *) | | _dlerror_run | 1 | -| taint.cpp:602:7:602:13 | _strinc | (..(*)(..),void *) | __pthread_cleanup_class | __pthread_cleanup_class | 1 | -| taint.cpp:602:7:602:13 | _strinc | (ASN1_SCTX *,void *) | | ASN1_SCTX_set_app_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (BIO *,void *) | | BIO_set_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (CONF_IMODULE *,void *) | | CONF_imodule_set_usr_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (CONF_MODULE *,void *) | | CONF_module_set_usr_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (CRYPTO_THREAD_LOCAL *,void *) | | CRYPTO_THREAD_set_local | 1 | -| taint.cpp:602:7:602:13 | _strinc | (Curl_tree *,void *) | | Curl_splayset | 1 | -| taint.cpp:602:7:602:13 | _strinc | (DH_METHOD *,void *) | | DH_meth_set0_app_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (DSA_METHOD *,void *) | | DSA_meth_set0_app_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (EVP_CIPHER_CTX *,void *) | | EVP_CIPHER_CTX_set_app_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (EVP_CIPHER_CTX *,void *) | | EVP_CIPHER_CTX_set_cipher_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (EVP_KEYMGMT *,void *) | | evp_keymgmt_util_make_pkey | 1 | -| taint.cpp:602:7:602:13 | _strinc | (EVP_MAC_CTX **,void *) | | _libssh2_hmac_final | 1 | -| taint.cpp:602:7:602:13 | _strinc | (EVP_PKEY_CTX *,void *) | | EVP_PKEY_CTX_get1_id | 1 | -| taint.cpp:602:7:602:13 | _strinc | (EVP_PKEY_CTX *,void *) | | EVP_PKEY_CTX_set_app_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (EVP_PKEY_CTX *,void *) | | EVP_PKEY_CTX_set_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (Jim_Stack *,void *) | | Jim_StackPush | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OPENSSL_LHASH *,void *) | | OPENSSL_LH_insert | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_CMP_CTX *,void *) | | OSSL_CMP_CTX_set_certConf_cb_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_CMP_CTX *,void *) | | OSSL_CMP_CTX_set_http_cb_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_CMP_CTX *,void *) | | OSSL_CMP_CTX_set_transfer_cb_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_DECODER *,void *) | | ossl_decoder_instance_new | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_DECODER_CTX *,void *) | | OSSL_DECODER_CTX_set_construct_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_ENCODER_CTX *,void *) | | OSSL_ENCODER_CTX_set_construct_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_QRX *,void *) | | ossl_qrx_set_msg_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_QTX *,void *) | | ossl_qtx_set_msg_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_QUIC_TX_PACKETISER *,void *) | | ossl_quic_tx_packetiser_set_msg_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (QUIC_CHANNEL *,void *) | | ossl_quic_channel_set_msg_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (RSA_METHOD *,void *) | | RSA_meth_set0_app_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL *,void *) | | SSL_set0_security_ex_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL *,void *) | | SSL_set_async_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL *,void *) | | SSL_set_default_passwd_cb_userdata | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL *,void *) | | SSL_set_record_padding_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL_CTX *,void *) | | SSL_CTX_set0_security_ex_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL_CTX *,void *) | | SSL_CTX_set_async_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL_CTX *,void *) | | SSL_CTX_set_default_passwd_cb_userdata | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL_CTX *,void *) | | SSL_CTX_set_record_padding_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL_CTX *,void *) | | SSL_CTX_set_srp_cb_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (UI *,void *) | | UI_add_user_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (X509_CRL *,void *) | | X509_CRL_set_meth_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (X509_LOOKUP *,void *) | | X509_LOOKUP_set_method_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (const OSSL_DISPATCH *,void *) | | ossl_prov_free_key | 1 | -| taint.cpp:602:7:602:13 | _strinc | (const OSSL_PARAM[],void *) | | ossl_store_handle_load_result | 1 | -| taint.cpp:602:7:602:13 | _strinc | (const char *,void *) | | collect_names | 0 | -| taint.cpp:602:7:602:13 | _strinc | (const char *,void *) | | collect_names | 1 | -| taint.cpp:602:7:602:13 | _strinc | (const md5_ctx *,void *) | | __md5_read_ctx | 1 | -| taint.cpp:602:7:602:13 | _strinc | (const void *,void *) | | inet6_rth_reverse | 1 | -| taint.cpp:602:7:602:13 | _strinc | (int,void *) | | OSSL_STORE_INFO_new | 1 | -| taint.cpp:602:7:602:13 | _strinc | (int,void *) | | sqlite3_randomness | 1 | -| taint.cpp:602:7:602:13 | _strinc | (md5_ctx *,void *) | | __md5_finish_ctx | 1 | -| taint.cpp:602:7:602:13 | _strinc | (nghttp2_queue *,void *) | | nghttp2_queue_push | 1 | -| taint.cpp:602:7:602:13 | _strinc | (nghttp2_session *,void *) | | nghttp2_session_set_user_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (obstack *,void *) | | _obstack_allocated_p | 1 | -| taint.cpp:602:7:602:13 | _strinc | (obstack *,void *) | | obstack_free | 1 | -| taint.cpp:602:7:602:13 | _strinc | (pthread_attr_t *,void *) | | __pthread_attr_setstackaddr | 1 | -| taint.cpp:602:7:602:13 | _strinc | (tunable_id_t,void *) | | __tunable_get_default | 1 | -| taint.cpp:602:7:602:13 | _strinc | (unsigned char *,void *) | | pitem_new | 1 | -| taint.cpp:602:7:602:13 | _strinc | (uv_handle_t *,void *) | | uv_handle_set_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (uv_key_t *,void *) | | uv_key_set | 1 | -| taint.cpp:602:7:602:13 | _strinc | (uv_loop_t *,void *) | | uv_loop_set_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (uv_req_t *,void *) | | uv_req_set_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (void *,void *) | | insque | 1 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | Curl_read16_be | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | Curl_read16_le | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | Curl_read32_le | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | _getlong | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | _getshort | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | _libssh2_ntohu32 | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | _libssh2_ntohu64 | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | ossl_quic_vlint_decode_unchecked | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | CStringT | CStringT | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | CStringT | operator= | 0 | -| taint.cpp:604:16:604:22 | _strdec | (MD4_CTX *,const unsigned char *) | | MD4_Transform | 1 | -| taint.cpp:604:16:604:22 | _strdec | (RIPEMD160_CTX *,const unsigned char *) | | RIPEMD160_Transform | 1 | -| taint.cpp:604:16:604:22 | _strdec | (SM3_CTX *,const unsigned char *) | | ossl_sm3_transform | 1 | -| taint.cpp:604:16:604:22 | _strdec | (TLS_RL_RECORD *,const unsigned char *) | | ossl_tls_rl_record_set_seq_num | 1 | -| taint.cpp:604:16:604:22 | _strdec | (const u_char *,const unsigned char *) | | ns_get16 | 1 | -| taint.cpp:604:16:604:22 | _strdec | (const u_char *,const unsigned char *) | | ns_get32 | 1 | -| taint.cpp:604:16:604:22 | _strdec | (const unsigned char **,const unsigned char *) | | ___ns_name_skip | 1 | -| taint.cpp:604:16:604:22 | _strdec | (const unsigned char *,const unsigned char *) | | ___dn_skipname | 0 | -| taint.cpp:604:16:604:22 | _strdec | (const unsigned char *,const unsigned char *) | | ___dn_skipname | 1 | -| taint.cpp:604:16:604:22 | _strdec | (const unsigned char *,const unsigned char *) | | __ns_name_length_uncompressed | 0 | -| taint.cpp:604:16:604:22 | _strdec | (const unsigned char *,const unsigned char *) | | __ns_name_length_uncompressed | 1 | -| taint.cpp:606:6:606:17 | test__strinc | (BIO *,const EVP_PKEY *,int,pem_password_cb *,void *) | | i2b_PVK_bio | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (EVP_CIPHER_INFO *,unsigned char *,long *,pem_password_cb *,void *) | | PEM_do_header | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (EVP_PKEY *,EVP_KEYMGMT *,void *,OSSL_CALLBACK *,void *) | | evp_keymgmt_util_gen | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (EVP_PKEY_CTX *,int,int,int,void *) | | RSA_pkey_ctx_ctrl | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (OSSL_QUIC_TX_PACKETISER *,const unsigned char *,size_t,ossl_quic_initial_token_free_fn *,void *) | | ossl_quic_tx_packetiser_set_initial_token | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (char *,size_t,size_t *,const OSSL_PARAM[],void *) | | ossl_pw_passphrase_callback_dec | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (char *,size_t,size_t *,const OSSL_PARAM[],void *) | | ossl_pw_passphrase_callback_enc | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (const BIGNUM *,int,..(*)(..),BN_CTX *,void *) | | BN_is_prime | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (const char **,const char **,bool *,..(*)(..),void *) | | _dl_catch_error | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (const char *,const UI_METHOD *,void *,OSSL_STORE_post_process_info_fn,void *) | | OSSL_STORE_open | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (const char *,int,int,..(*)(..),void *) | | CONF_parse_list | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (sqlite3 *,const char *,const char *,..(*)(..),void *) | | recoverInit | 4 | -| taint.cpp:616:6:616:17 | test__mbsinc | (PKCS7 *,int,long,char *) | | PKCS7_ctrl | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (SSL_CTX *,srpsrvparm *,char *,char *) | | set_up_srp_verifier_file | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_init | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_old_init | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (_IO_strfile *,char *,int,char *) | | _IO_str_init_static | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (action **,e_action,symbol *,char *) | | Action_add | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (const char *,const char *,char *,char *) | | uv__idna_toascii | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (int,const u_char *,const unsigned char *,char *) | | inet_nsap_ntoa | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (int,u_int,u_int,char *) | | svcunix_create | 3 | -| taint.cpp:626:6:626:17 | test__strdec | (BIO *,const BIGNUM *,const char *,int,unsigned char *) | | print_bignum_var | 4 | -| taint.cpp:626:6:626:17 | test__strdec | (OSSL_LIB_CTX *,const char *,const QUIC_PKT_HDR *,const QUIC_CONN_ID *,unsigned char *) | | ossl_quic_calculate_retry_integrity_tag | 4 | -| taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_decrypt_fields | 3 | -| taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_decrypt_fields | 4 | -| taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_encrypt_fields | 3 | -| taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_encrypt_fields | 4 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | BIO_gethostbyname | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Curl_copy_header_value | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Curl_get_scheme_handler | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Curl_getdate_capped | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Jim_StrDup | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | OPENSSL_LH_strhash | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Strsafe | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Symbol_new | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | UI_create_method | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | X509V3_parse_list | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | X509_LOOKUP_meth_new | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __basename | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __gconv_find_shlib | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __gettext | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __hash_string | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __nss_action_parse | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __strdup | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __textdomain | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __tzset_parse_tz | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __tzstring | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | a2i_IPADDRESS | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | a2i_IPADDRESS_NC | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | a64l | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | charmap_opendir | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | ether_aton | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | getdate | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | inetstr2int | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | last_component | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | opt_path_end | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | opt_progname | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | ossl_lh_strcasehash | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | repertoire_read | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | res_gethostbyname | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | sgetsgent | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | sgetspent | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | strhash | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | uc_script_byname | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | uv__strdup | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | xstrdup | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | BIO_gethostbyname | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Curl_copy_header_value | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Curl_get_scheme_handler | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Curl_getdate_capped | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Jim_StrDup | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | OPENSSL_LH_strhash | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Strsafe | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Symbol_new | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | UI_create_method | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | X509V3_parse_list | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | X509_LOOKUP_meth_new | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __basename | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __gconv_find_shlib | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __gettext | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __hash_string | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __nss_action_parse | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __strdup | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __textdomain | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __tzset_parse_tz | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __tzstring | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | a2i_IPADDRESS | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | a2i_IPADDRESS_NC | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | a64l | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | charmap_opendir | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | ether_aton | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | getdate | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | inetstr2int | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | last_component | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | opt_path_end | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | opt_progname | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | ossl_lh_strcasehash | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | repertoire_read | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | res_gethostbyname | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | sgetsgent | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | sgetspent | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | strhash | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | uc_script_byname | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | uv__strdup | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | xstrdup | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | _IO_gets | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | __mktemp | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | __nis_default_group | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | __nis_default_owner | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | __xpg_basename | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | ctermid | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | cuserid | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | defossilize | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | des_setparity | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | dirname | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | getwd | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | make_uppercase | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | mkdtemp | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | next_item | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | strfry | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | CStringT | CStringT | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | _IO_gets | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | __mktemp | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | __nis_default_group | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | __nis_default_owner | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | __xpg_basename | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | ctermid | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | cuserid | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | defossilize | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | des_setparity | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | dirname | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | getwd | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | make_uppercase | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | mkdtemp | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | next_item | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | strfry | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | CStringT | CStringT | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | Curl_cpool_upkeep | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | __dlclose | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | __libc_dlclose | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | __libc_free | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | __malloc_usable_size | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | _dl_allocate_tls | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | _dl_close | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | malloc_usable_size | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | ossl_kdf_data_new | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | support_shared_free | 0 | -| taint.cpp:707:8:707:14 | strncpy | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | -| taint.cpp:707:8:707:14 | strncpy | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | -| taint.cpp:707:8:707:14 | strncpy | (BIO *,X509 *,unsigned long) | | ossl_x509_print_ex_brief | 2 | -| taint.cpp:707:8:707:14 | strncpy | (BIO *,X509_CRL *,unsigned long) | | X509_CRL_print_ex | 2 | -| taint.cpp:707:8:707:14 | strncpy | (BIO *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex | 2 | -| taint.cpp:707:8:707:14 | strncpy | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | -| taint.cpp:707:8:707:14 | strncpy | (const char *,const char *,unsigned long) | | __ngettext | 1 | -| taint.cpp:707:8:707:14 | strncpy | (const char *,const char *,unsigned long) | | __ngettext | 2 | -| taint.cpp:707:8:707:14 | strncpy | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | -| taint.cpp:709:6:709:17 | test_strncpy | (ARGS *,char *) | | chopup_args | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (BIO *,char *) | | BIO_set_callback_arg | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (SRP_VBASE *,char *) | | SRP_VBASE_get1_by_user | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (SRP_VBASE *,char *) | | SRP_VBASE_get_by_user | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (SSL_CTX *,char *) | | SSL_CTX_set_srp_password | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (SSL_CTX *,char *) | | SSL_CTX_set_srp_username | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (XDR *,char *) | | xdr_char | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (char *,char *) | | passwd2des_internal | 0 | -| taint.cpp:709:6:709:17 | test_strncpy | (char *,char *) | | passwd2des_internal | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (char *,char *) | | xdecrypt | 0 | -| taint.cpp:709:6:709:17 | test_strncpy | (char *,char *) | | xdecrypt | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (char *,char *) | | xencrypt | 0 | -| taint.cpp:709:6:709:17 | test_strncpy | (char *,char *) | | xencrypt | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (const char *,char *) | | __old_realpath | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (const char *,char *) | | __realpath | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (const char *,char *) | | sha1sum_file | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (const char *,char *) | | sha3sum_file | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (const ether_addr *,char *) | | ether_ntoa_r | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (const tm *,char *) | | __asctime_r | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (curl_slist *,char *) | | Curl_slist_append_nodup | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (unsigned long,char *) | | ERR_error_string | 1 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_OCTET_STRING **,const unsigned char *,int) | | ossl_cmp_asn1_octet_string_set1_bytes | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_OCTET_STRING *,const unsigned char *,int) | | ASN1_OCTET_STRING_set | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_STRING *,const void *,int) | | ASN1_STRING_set | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_STRING *,void *,int) | | ASN1_STRING_set0 | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_TIME *,tm *,int) | | ossl_asn1_time_from_tm | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_TYPE *,unsigned char *,int) | | ASN1_TYPE_set_octetstring | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_item_embed_free | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_primitive_free | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIGNUM *,const BIGNUM *,int) | | BN_lshift | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIGNUM *,const BIGNUM *,int) | | BN_rshift | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIGNUM *,const BIGNUM *,int) | | BN_with_flags | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIGNUM *,const BIGNUM *,int) | | bn_lshift_fixed_top | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIGNUM *,const BIGNUM *,int) | | bn_rshift_fixed_top | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIGNUM *,const unsigned long *,int) | | bn_set_static_words | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIGNUM *,const unsigned long *,int) | | bn_set_words | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIO *,BIO *,int) | | OSSL_HTTP_REQ_CTX_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIO *,BIO *,int) | | SMIME_crlf_copy | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIO *,GENERAL_NAMES *,int) | | OSSL_GENERAL_NAMES_print | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIO *,char *,int) | | BIO_get_line | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIO *,const DSA *,int) | | DSA_print | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIO *,const RSA *,int) | | RSA_print | 2 | -| taint.cpp:725:10:725:15 | strtol | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | -| taint.cpp:725:10:725:15 | strtol | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | -| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | -| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | -| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | -| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | -| taint.cpp:725:10:725:15 | strtol | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | -| taint.cpp:725:10:725:15 | strtol | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | -| taint.cpp:725:10:725:15 | strtol | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | -| taint.cpp:725:10:725:15 | strtol | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | -| taint.cpp:725:10:725:15 | strtol | (EC_KEY *,const OSSL_PARAM[],int) | | ossl_ec_key_fromdata | 2 | -| taint.cpp:725:10:725:15 | strtol | (ENGINE *,ENGINE_DYNAMIC_ID,int) | | engine_add_dynamic_id | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_export_to_provider | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_find_operation_cache | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY *,EVP_PKEY *,int) | | evp_keymgmt_util_copy | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,EVP_PKEY *,int) | | EVP_PKEY_derive_set_peer_ex | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const char *,int) | | EVP_PKEY_CTX_set1_pbe_pass | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_hkdf_info | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_tls1_prf_seed | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_key | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_salt | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_scrypt_salt | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_tls1_prf_secret | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set_mac_key | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const void *,int) | | EVP_PKEY_CTX_set1_id | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,int *,int) | | EVP_PKEY_CTX_set0_keygen_info | 2 | -| taint.cpp:725:10:725:15 | strtol | (FFC_PARAMS *,unsigned int,int) | | ossl_ffc_params_enable_flags | 2 | -| taint.cpp:725:10:725:15 | strtol | (FILE *,_IO_marker *,int) | | _IO_seekmark | 2 | -| taint.cpp:725:10:725:15 | strtol | (FILE *,_IO_marker *,int) | | _IO_seekwmark | 2 | -| taint.cpp:725:10:725:15 | strtol | (FILE *,__FILE *,int) | | fwide | 2 | -| taint.cpp:725:10:725:15 | strtol | (FILE *,const DSA *,int) | | DSA_print_fp | 2 | -| taint.cpp:725:10:725:15 | strtol | (FILE *,const RSA *,int) | | RSA_print_fp | 2 | -| taint.cpp:725:10:725:15 | strtol | (FILE *,off64_t,int) | | _IO_cookie_seek | 2 | -| taint.cpp:725:10:725:15 | strtol | (FILE *,rule *,int) | | RulePrint | 2 | -| taint.cpp:725:10:725:15 | strtol | (FTS *,FTSENT *,int) | | fts_set | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetCommand | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetGlobalVariable | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetVariable | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,Jim_Obj *,int) | | Jim_ListGetIndex | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,Jim_Obj *,int) | | Jim_UnsetVariable | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewDictObj | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewListObj | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,char *,int) | | Jim_NewStringObjNoAlloc | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_GetGlobalVariableStr | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_GetVariableStr | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | -| taint.cpp:725:10:725:15 | strtol | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | -| taint.cpp:725:10:725:15 | strtol | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_ONEREQ *,X509_EXTENSION *,int) | | OCSP_ONEREQ_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_ONEREQ *,const ASN1_OBJECT *,int) | | OCSP_ONEREQ_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_REQUEST *,X509_EXTENSION *,int) | | OCSP_REQUEST_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_REQUEST *,const ASN1_OBJECT *,int) | | OCSP_REQUEST_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_SINGLERESP *,X509_EXTENSION *,int) | | OCSP_SINGLERESP_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_SINGLERESP *,const ASN1_OBJECT *,int) | | OCSP_SINGLERESP_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (OPENSSL_STACK *,const void *,int) | | OPENSSL_sk_insert | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_referenceValue | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_secretValue | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_CMP_CTX *,int,int) | | OSSL_CMP_CTX_set_option | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | EC_GROUP_new_by_curve_name_ex | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | EC_KEY_new_by_curve_name_ex | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | OSSL_PROVIDER_try_load | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_dsa_key_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_kem_key_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | ossl_parse_query | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_name | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_value | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_PROVIDER *,OSSL_PROVIDER **,int) | | ossl_provider_add_to_store | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_QRL_ENC_LEVEL_SET *,uint32_t,int) | | ossl_qrl_enc_level_set_get | 2 | -| taint.cpp:725:10:725:15 | strtol | (PKCS7 *,stack_st_X509 *,int) | | PKCS7_get0_signers | 2 | -| taint.cpp:725:10:725:15 | strtol | (POLICYINFO *,const ASN1_OBJECT *,int) | | ossl_policy_data_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (PROV_CTX *,const char *,int) | | ossl_prov_ctx_get_bool_param | 2 | -| taint.cpp:725:10:725:15 | strtol | (PROV_CTX *,const char *,int) | | ossl_prov_ml_dsa_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (PROV_CTX *,const char *,int) | | ossl_prov_ml_kem_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (QLOG *,uint32_t,int) | | ossl_qlog_set_event_type_enabled | 2 | -| taint.cpp:725:10:725:15 | strtol | (QUIC_RXFC *,uint64_t,int) | | ossl_quic_rxfc_on_rx_stream_frame | 2 | -| taint.cpp:725:10:725:15 | strtol | (QUIC_STREAM_ITER *,QUIC_STREAM_MAP *,int) | | ossl_quic_stream_iter_init | 2 | -| taint.cpp:725:10:725:15 | strtol | (QUIC_STREAM_MAP *,uint64_t,int) | | ossl_quic_stream_map_alloc | 2 | -| taint.cpp:725:10:725:15 | strtol | (RSA *,const OSSL_PARAM[],int) | | ossl_rsa_fromdata | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL *,const unsigned char *,int) | | SSL_use_certificate_ASN1 | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL *,const void *,int) | | SSL_write | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL *,void *,int) | | SSL_peek | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL *,void *,int) | | SSL_read | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL *,void *,int) | | SSL_set_session_ticket_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL_CIPHER *,const SSL_CIPHER *,int) | | OBJ_bsearch_ssl_cipher_id | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL_CONNECTION *,PACKET *,int) | | ssl_cache_cipherlist | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_close_construct_packet | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_set_handshake_header | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL_CONNECTION *,WPACKET *,int) | | tls_close_construct_packet | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL_CONNECTION *,int,int) | | ssl3_send_alert | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_MSG_IMPRINT *,unsigned char *,int) | | TS_MSG_IMPRINT_set_msg | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_REQ *,X509_EXTENSION *,int) | | TS_REQ_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_REQ *,const ASN1_OBJECT *,int) | | TS_REQ_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_TST_INFO *,X509_EXTENSION *,int) | | TS_TST_INFO_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_TST_INFO *,const ASN1_OBJECT *,int) | | TS_TST_INFO_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (X509 *,X509_EXTENSION *,int) | | X509_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (X509 *,int,int) | | X509_check_purpose | 2 | -| taint.cpp:725:10:725:15 | strtol | (X509 *,int,int) | | X509_check_trust | 2 | -| taint.cpp:725:10:725:15 | strtol | (X509_CRL *,X509_EXTENSION *,int) | | X509_CRL_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (X509_PUBKEY *,unsigned char *,int) | | X509_PUBKEY_set0_public_key | 2 | -| taint.cpp:725:10:725:15 | strtol | (X509_REVOKED *,X509_EXTENSION *,int) | | X509_REVOKED_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (X509_STORE_CTX *,X509 *,int) | | ossl_x509_check_cert_time | 2 | -| taint.cpp:725:10:725:15 | strtol | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | -| taint.cpp:725:10:725:15 | strtol | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | -| taint.cpp:725:10:725:15 | strtol | (_Float128,_Float128,int) | | __kernel_sinf128 | 2 | -| taint.cpp:725:10:725:15 | strtol | (_Float128,_Float128,int) | | __kernel_tanf128 | 2 | -| taint.cpp:725:10:725:15 | strtol | (_IO_strfile *,const char *,int) | | _IO_str_init_readonly | 2 | -| taint.cpp:725:10:725:15 | strtol | (action *,FILE *,int) | | PrintAction | 2 | -| taint.cpp:725:10:725:15 | strtol | (acttab *,int,int) | | acttab_action | 2 | -| taint.cpp:725:10:725:15 | strtol | (char *,size_t,int) | | __argz_stringify | 2 | -| taint.cpp:725:10:725:15 | strtol | (const ASN1_VALUE *,const ASN1_TEMPLATE *,int) | | ossl_asn1_do_adb | 2 | -| taint.cpp:725:10:725:15 | strtol | (const BIGNUM *,int[],int) | | BN_GF2m_poly2arr | 2 | -| taint.cpp:725:10:725:15 | strtol | (const BIGNUM *,unsigned char *,int) | | BN_bn2binpad | 2 | -| taint.cpp:725:10:725:15 | strtol | (const BIGNUM *,unsigned char *,int) | | BN_bn2lebinpad | 2 | -| taint.cpp:725:10:725:15 | strtol | (const BIGNUM *,unsigned char *,int) | | BN_bn2nativepad | 2 | -| taint.cpp:725:10:725:15 | strtol | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2bin | 2 | -| taint.cpp:725:10:725:15 | strtol | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2lebin | 2 | -| taint.cpp:725:10:725:15 | strtol | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2native | 2 | -| taint.cpp:725:10:725:15 | strtol | (const CMS_ContentInfo *,BIO *,int) | | ossl_cms_DigestedData_do_final | 2 | -| taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_signed_get_attr_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | -| taint.cpp:725:10:725:15 | strtol | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | -| taint.cpp:725:10:725:15 | strtol | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const OSSL_PARAM *,BIO *,int) | | OSSL_PARAM_print_to_bio | 2 | -| taint.cpp:725:10:725:15 | strtol | (const OSSL_PROVIDER *,const char *,int) | | OSSL_PROVIDER_conf_get_bool | 2 | -| taint.cpp:725:10:725:15 | strtol | (const SSL *,char *,int) | | SSL_get_shared_ciphers | 2 | -| taint.cpp:725:10:725:15 | strtol | (const SSL *,int,int) | | apps_ssl_info_callback | 2 | -| taint.cpp:725:10:725:15 | strtol | (const SSL_CIPHER *,char *,int) | | SSL_CIPHER_description | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509 *,const ASN1_OBJECT *,int) | | X509_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509 *,const stack_st_X509 *,int) | | OSSL_ESS_signing_cert_new_init | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509 *,int,int) | | X509_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509 *,int,int) | | X509_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_ACERT *,const ASN1_OBJECT *,int) | | X509_ACERT_get_attr_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_ACERT *,int,int) | | X509_ACERT_get_attr_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_CRL *,const ASN1_OBJECT *,int) | | X509_CRL_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_CRL *,const X509 *,int) | | OSSL_CMP_CRLSTATUS_create | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_NAME *,char *,int) | | X509_NAME_oneline | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_NAME *,const ASN1_OBJECT *,int) | | X509_NAME_get_index_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_NAME *,int,int) | | X509_NAME_get_index_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_REQ *,const ASN1_OBJECT *,int) | | X509_REQ_get_attr_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_REQ *,int,int) | | X509_REQ_get_attr_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_REVOKED *,const ASN1_OBJECT *,int) | | X509_REVOKED_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | __strtol | 0 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | __strtol | 1 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | __strtol | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | __strtoul | 0 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | __strtoul | 1 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | __strtoul | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | idn2_to_ascii_8z | 0 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | idn2_to_ascii_8z | 1 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,const char *,int) | | CRYPTO_strdup | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,const char *,int) | | __dcgettext | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,int,int) | | __old_strpbrk_c2 | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,long *,int) | | Jim_StringToWide | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,size_t *,int) | | _dl_sysdep_read_whole_file | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,sqlite3_filename,int) | | sqlite3_uri_key | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,void *,int) | | support_readdir_check | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,wordexp_t *,int) | | wordexp | 2 | -| taint.cpp:725:10:725:15 | strtol | (const cmsghdr *,uint8_t **,int) | | inet6_option_find | 2 | -| taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_ATTRIBUTE *,const ASN1_OBJECT *,int) | | X509at_get_attr_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_ATTRIBUTE *,int,int) | | X509at_get_attr_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | -| taint.cpp:725:10:725:15 | strtol | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | -| taint.cpp:725:10:725:15 | strtol | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | -| taint.cpp:725:10:725:15 | strtol | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | -| taint.cpp:725:10:725:15 | strtol | (const void *,socklen_t,int) | | res_gethostbyaddr | 2 | -| taint.cpp:725:10:725:15 | strtol | (const wchar_t *,wchar_t **,int) | | __wcstol | 2 | -| taint.cpp:725:10:725:15 | strtol | (const wchar_t *,wchar_t **,int) | | __wcstoul | 2 | -| taint.cpp:725:10:725:15 | strtol | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | -| taint.cpp:725:10:725:15 | strtol | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | -| taint.cpp:725:10:725:15 | strtol | (database_dyn *,size_t,int) | | mempool_alloc | 2 | -| taint.cpp:725:10:725:15 | strtol | (database_dyn *,time_t,int) | | prune_cache | 2 | -| taint.cpp:725:10:725:15 | strtol | (double,double,int) | | __kernel_standard | 2 | -| taint.cpp:725:10:725:15 | strtol | (float,float,int) | | __kernel_standard_f | 2 | -| taint.cpp:725:10:725:15 | strtol | (gconv_spec *,__gconv_t *,int) | | __gconv_open | 2 | -| taint.cpp:725:10:725:15 | strtol | (gzFile,char *,int) | | gzgets | 2 | -| taint.cpp:725:10:725:15 | strtol | (gzFile,int,int) | | gzsetparams | 2 | -| taint.cpp:725:10:725:15 | strtol | (gzFile,off64_t,int) | | gzseek64 | 2 | -| taint.cpp:725:10:725:15 | strtol | (gzFile,off_t,int) | | gzseek | 2 | -| taint.cpp:725:10:725:15 | strtol | (int *,short *,int) | | __lll_lock_elision | 2 | -| taint.cpp:725:10:725:15 | strtol | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | -| taint.cpp:725:10:725:15 | strtol | (int,int,int) | | ASN1_object_size | 2 | -| taint.cpp:725:10:725:15 | strtol | (int,int,int) | | EVP_CIPHER_meth_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (long double,long double,int) | | __kernel_sinl | 2 | -| taint.cpp:725:10:725:15 | strtol | (long double,long double,int) | | __kernel_standard_l | 2 | -| taint.cpp:725:10:725:15 | strtol | (long double,long double,int) | | __kernel_tanl | 2 | -| taint.cpp:725:10:725:15 | strtol | (mp_srcptr,int,int) | | __mpn_construct_double | 2 | -| taint.cpp:725:10:725:15 | strtol | (mp_srcptr,int,int) | | __mpn_construct_float | 2 | -| taint.cpp:725:10:725:15 | strtol | (mp_srcptr,int,int) | | __mpn_construct_float128 | 2 | -| taint.cpp:725:10:725:15 | strtol | (regex_t *,const char *,int) | | jim_regcomp | 2 | -| taint.cpp:725:10:725:15 | strtol | (requestlist *,requestlist *,int) | | __aio_remove_request | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3 *,const char *,int) | | sqlite3_overload_function | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3 *,int,int) | | sqlite3_limit | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3_context *,const char *,int) | | sqlite3_result_error | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3_context *,const void *,int) | | sqlite3_result_error16 | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3_index_info *,int,int) | | sqlite3_vtab_in | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3_stmt *,int,int) | | sqlite3_bind_int | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3_stmt *,int,int) | | sqlite3_bind_zeroblob | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3_stmt *,int,int) | | sqlite3_stmt_status | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3_str *,const char *,int) | | sqlite3_str_append | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3expert *,int,int) | | sqlite3_expert_report | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509 **,X509 *,int) | | ossl_x509_add_cert_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509 **,stack_st_X509 *,int) | | ossl_x509_add_certs_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509 *,ASIdentifiers *,int) | | X509v3_asid_validate_resource_set | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509 *,IPAddrBlocks *,int) | | X509v3_addr_validate_resource_set | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509 *,X509 *,int) | | X509_add_cert | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509 *,stack_st_X509 *,int) | | X509_add_certs | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509_ALGOR **,int,int) | | CMS_add_simple_smimecap | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509_ALGOR *,int,int) | | PKCS7_simple_smimecap | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509_EXTENSION **,X509_EXTENSION *,int) | | X509v3_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (td_thragent_t *,uint32_t *,int) | | _td_check_sizeof | 2 | -| taint.cpp:725:10:725:15 | strtol | (uint8_t[56],const gf,int) | | gf_serialize | 2 | -| taint.cpp:725:10:725:15 | strtol | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned char *,const char *,int) | | data_string | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned char *,const unsigned char *,int) | | EVP_EncodeBlock | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned int,const char *,int) | | _IO_adjust_column | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned int,const wchar_t *,int) | | _IO_adjust_wcolumn | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned int,int,int) | | ossl_blob_length | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | -| taint.cpp:725:10:725:15 | strtol | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | -| taint.cpp:725:10:725:15 | strtol | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | -| taint.cpp:725:10:725:15 | strtol | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | -| taint.cpp:725:10:725:15 | strtol | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | -| taint.cpp:725:10:725:15 | strtol | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | -| taint.cpp:725:10:725:15 | strtol | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | -| taint.cpp:725:10:725:15 | strtol | (uv_stream_t *,int,int) | | uv__stream_open | 2 | -| taint.cpp:725:10:725:15 | strtol | (void *,cmsghdr **,int) | | inet6_option_init | 2 | -| taint.cpp:725:10:725:15 | strtol | (void *,const char *,int) | | CRYPTO_secure_free | 2 | -| taint.cpp:725:10:725:15 | strtol | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | -| taint.cpp:725:10:725:15 | strtol | (void *,socklen_t,int) | | inet6_opt_finish | 2 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | _IO_gets | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | __mktemp | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | __nis_default_group | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | __nis_default_owner | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | __xpg_basename | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | ctermid | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | cuserid | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | defossilize | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | des_setparity | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | dirname | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | getwd | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | make_uppercase | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | mkdtemp | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | next_item | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | strfry | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | CStringT | CStringT | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | EVP_PKEY_meth_get0 | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | __libc_malloc | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | __libc_valloc | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | _dl_early_allocate | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztosi | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztosz | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztoui | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztoul | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | malloc | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | ossl_get_extension_type | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | ossl_param_bytes_to_blocks | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | ossl_quic_sstream_new | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | ssl_cert_new | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | support_next_to_fault_allocate | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | support_next_to_fault_allocate_before | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | support_stack_alloc | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | xalloc_sigstack | 0 | -| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | BN_num_bits_word | 0 | -| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | BUF_MEM_new_ex | 0 | -| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | curlx_ultouc | 0 | -| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | curlx_ultous | 0 | -| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | next_prime | 0 | -| taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| taint.cpp:736:7:736:13 | realloc | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| taint.cpp:736:7:736:13 | realloc | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| taint.cpp:736:7:736:13 | realloc | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| taint.cpp:736:7:736:13 | realloc | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 | -| taint.cpp:736:7:736:13 | realloc | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 | -| taint.cpp:736:7:736:13 | realloc | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (Curl_hash *,size_t) | | Curl_init_dnscache | 1 | -| taint.cpp:736:7:736:13 | realloc | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_HPKE_SUITE,size_t) | | OSSL_HPKE_get_ciphertext_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_HTTP_REQ_CTX *,size_t) | | OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_LIB_CTX *,size_t) | | ossl_quic_lcidm_new | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_PARAM *,size_t) | | OSSL_PARAM_set_size_t | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_PQUEUE *,size_t) | | ossl_pqueue_remove | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_PROVIDER *,size_t) | | ossl_provider_set_operation_bit | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_QTX *,size_t) | | ossl_qtx_set_mdpl | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_add_unvalidated_credit | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_consume_unvalidated_credit | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_record_received_closing_bytes | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_RECORD_LAYER *,size_t) | | tls_set_max_frag_len | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_RECORD_LAYER *,size_t) | | tls_set_max_pipelines | 1 | -| taint.cpp:736:7:736:13 | realloc | (QUIC_RSTREAM *,size_t) | | ossl_quic_rstream_release_record | 1 | -| taint.cpp:736:7:736:13 | realloc | (QUIC_RSTREAM *,size_t) | | ossl_quic_rstream_resize_rbuf | 1 | -| taint.cpp:736:7:736:13 | realloc | (QUIC_RXFC *,size_t) | | ossl_quic_rxfc_set_max_window_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (QUIC_SSTREAM *,size_t) | | ossl_quic_sstream_set_buffer_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (QUIC_STREAM_MAP *,size_t) | | ossl_quic_stream_map_set_rr_stepping | 1 | -| taint.cpp:736:7:736:13 | realloc | (RAND_POOL *,size_t) | | ossl_rand_pool_add_begin | 1 | -| taint.cpp:736:7:736:13 | realloc | (SIPHASH *,size_t) | | SipHash_set_hash_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL *,size_t) | | SSL_set_block_padding | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL *,size_t) | | SSL_set_default_read_buffer_len | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL *,size_t) | | SSL_set_num_tickets | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL_CTX *,size_t) | | SSL_CTX_set_block_padding | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL_CTX *,size_t) | | SSL_CTX_set_default_read_buffer_len | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL_CTX *,size_t) | | SSL_CTX_set_num_tickets | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (WPACKET *,size_t) | | WPACKET_init_null | 1 | -| taint.cpp:736:7:736:13 | realloc | (WPACKET *,size_t) | | WPACKET_set_max_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (WPACKET *,size_t) | | WPACKET_start_sub_packet_len__ | 1 | -| taint.cpp:736:7:736:13 | realloc | (WPACKET *,size_t) | | ossl_quic_wire_encode_padding | 1 | -| taint.cpp:736:7:736:13 | realloc | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (__gconv_step *,size_t) | | __gconv_close_transform | 1 | -| taint.cpp:736:7:736:13 | realloc | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_lmargin | 1 | -| taint.cpp:736:7:736:13 | realloc | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_rmargin | 1 | -| taint.cpp:736:7:736:13 | realloc | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_wmargin | 1 | -| taint.cpp:736:7:736:13 | realloc | (bufq *,size_t) | | Curl_bufq_skip | 1 | -| taint.cpp:736:7:736:13 | realloc | (bufq *,size_t) | | Curl_bufq_unwrite | 1 | -| taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | RAND_file_name | 1 | -| taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | __getcwd | 1 | -| taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | __gets_chk | 1 | -| taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | __getwd_chk | 1 | -| taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | plain_method | 1 | -| taint.cpp:736:7:736:13 | realloc | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | Curl_getn_scheme_handler | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | Curl_memdup0 | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | OPENSSL_strnlen | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | __nss_module_allocate | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | __strndup | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | charmap_hash | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | locfile_hash | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | mblen | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | uv__strndup | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | xstrndup | 1 | -| taint.cpp:736:7:736:13 | realloc | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 | -| taint.cpp:736:7:736:13 | realloc | (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 | -| taint.cpp:736:7:736:13 | realloc | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 | -| taint.cpp:736:7:736:13 | realloc | (const void *,size_t) | | Curl_memdup | 1 | -| taint.cpp:736:7:736:13 | realloc | (const void *,size_t) | | __nis_hash | 1 | -| taint.cpp:736:7:736:13 | realloc | (const void *,size_t) | | __nss_hash | 1 | -| taint.cpp:736:7:736:13 | realloc | (const void *,size_t) | | compute_hashval | 1 | -| taint.cpp:736:7:736:13 | realloc | (const wchar_t *,size_t) | | __wcsnlen_generic | 1 | -| taint.cpp:736:7:736:13 | realloc | (const wchar_t *,size_t) | | wcswidth | 1 | -| taint.cpp:736:7:736:13 | realloc | (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 | -| taint.cpp:736:7:736:13 | realloc | (dl_find_object_internal *,size_t) | | _dlfo_sort_mappings | 1 | -| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | Curl_dyn_init | 1 | -| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | Curl_dyn_setlen | 1 | -| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | Curl_dyn_tail | 1 | -| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | curlx_dyn_init | 1 | -| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | curlx_dyn_setlen | 1 | -| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | curlx_dyn_tail | 1 | -| taint.cpp:736:7:736:13 | realloc | (dynhds *,size_t) | | Curl_dynhds_getn | 1 | -| taint.cpp:736:7:736:13 | realloc | (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 | -| taint.cpp:736:7:736:13 | realloc | (hash_table *,unsigned long) | | init_hash | 1 | -| taint.cpp:736:7:736:13 | realloc | (int,size_t) | | ossl_calculate_comp_expansion | 1 | -| taint.cpp:736:7:736:13 | realloc | (link_map *,size_t) | | _dl_make_tlsdesc_dynamic | 1 | -| taint.cpp:736:7:736:13 | realloc | (locale_file *,size_t) | | init_locale_data | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 | -| taint.cpp:736:7:736:13 | realloc | (nss_action *,size_t) | | __nss_action_allocate | 1 | -| taint.cpp:736:7:736:13 | realloc | (pthread_attr_t *,size_t) | | __pthread_attr_setguardsize | 1 | -| taint.cpp:736:7:736:13 | realloc | (pthread_attr_t *,size_t) | | __pthread_attr_setstacksize | 1 | -| taint.cpp:736:7:736:13 | realloc | (size_t,size_t) | | __libc_memalign | 1 | -| taint.cpp:736:7:736:13 | realloc | (size_t,size_t) | | aligned_alloc | 1 | -| taint.cpp:736:7:736:13 | realloc | (u_long,unsigned long) | | __p_option | 1 | -| taint.cpp:736:7:736:13 | realloc | (uint8_t *,size_t) | | nghttp2_downcase | 1 | -| taint.cpp:736:7:736:13 | realloc | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | JimDefaultAllocator | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | JimDefaultAllocator | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | __arc4random_buf | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | __arc4random_buf | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | __libc_realloc | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | __libc_realloc | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | __minimal_realloc | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | __minimal_realloc | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | getentropy | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | getentropy | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_devurandom | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_devurandom | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_getrandom | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_getrandom | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | xrealloc | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | xrealloc | 1 | -| taint.cpp:758:5:758:11 | sprintf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | -| taint.cpp:758:5:758:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 | -| taint.cpp:758:5:758:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 | -| taint.cpp:758:5:758:11 | sprintf | (char **,const char *,...) | | ___asprintf | 1 | -| taint.cpp:758:5:758:11 | sprintf | (char **,const char *,...) | | ___asprintf | 2 | -| taint.cpp:758:5:758:11 | sprintf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (ARGS *,char *) | | chopup_args | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (BIO *,char *) | | BIO_set_callback_arg | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (SRP_VBASE *,char *) | | SRP_VBASE_get1_by_user | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (SRP_VBASE *,char *) | | SRP_VBASE_get_by_user | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (SSL_CTX *,char *) | | SSL_CTX_set_srp_password | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (SSL_CTX *,char *) | | SSL_CTX_set_srp_username | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (XDR *,char *) | | xdr_char | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (char *,char *) | | passwd2des_internal | 0 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (char *,char *) | | passwd2des_internal | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (char *,char *) | | xdecrypt | 0 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (char *,char *) | | xdecrypt | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (char *,char *) | | xencrypt | 0 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (char *,char *) | | xencrypt | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (const char *,char *) | | __old_realpath | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (const char *,char *) | | __realpath | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (const char *,char *) | | sha1sum_file | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (const char *,char *) | | sha3sum_file | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (const ether_addr *,char *) | | ether_ntoa_r | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (const tm *,char *) | | __asctime_r | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (curl_slist *,char *) | | Curl_slist_append_nodup | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (unsigned long,char *) | | ERR_error_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| taint.cpp:782:7:782:11 | fopen | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| taint.cpp:782:7:782:11 | fopen | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| taint.cpp:782:7:782:11 | fopen | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| taint.cpp:782:7:782:11 | fopen | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| taint.cpp:782:7:782:11 | fopen | (CONF *,const char *) | | _CONF_new_section | 1 | -| taint.cpp:782:7:782:11 | fopen | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| taint.cpp:782:7:782:11 | fopen | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| taint.cpp:782:7:782:11 | fopen | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| taint.cpp:782:7:782:11 | fopen | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| taint.cpp:782:7:782:11 | fopen | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| taint.cpp:782:7:782:11 | fopen | (DSO *,const char *) | | DSO_convert_filename | 1 | -| taint.cpp:782:7:782:11 | fopen | (DSO *,const char *) | | DSO_set_filename | 1 | -| taint.cpp:782:7:782:11 | fopen | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| taint.cpp:782:7:782:11 | fopen | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| taint.cpp:782:7:782:11 | fopen | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| taint.cpp:782:7:782:11 | fopen | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (GlobalConfig *,const char *) | | setvariable | 1 | -| taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| taint.cpp:782:7:782:11 | fopen | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| taint.cpp:782:7:782:11 | fopen | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| taint.cpp:782:7:782:11 | fopen | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| taint.cpp:782:7:782:11 | fopen | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| taint.cpp:782:7:782:11 | fopen | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| taint.cpp:782:7:782:11 | fopen | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| taint.cpp:782:7:782:11 | fopen | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| taint.cpp:782:7:782:11 | fopen | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| taint.cpp:782:7:782:11 | fopen | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL *,const char *) | | SSL_add1_host | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL *,const char *) | | SSL_set1_host | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| taint.cpp:782:7:782:11 | fopen | (UI *,const char *) | | UI_add_error_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (UI *,const char *) | | UI_add_info_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (UI *,const char *) | | UI_dup_error_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (UI *,const char *) | | UI_dup_info_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (X509 *,const char *) | | x509_ctrl_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| taint.cpp:782:7:782:11 | fopen | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| taint.cpp:782:7:782:11 | fopen | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| taint.cpp:782:7:782:11 | fopen | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| taint.cpp:782:7:782:11 | fopen | (char **,const char *) | | Curl_setstropt | 1 | -| taint.cpp:782:7:782:11 | fopen | (char **,const char *) | | __strsep | 1 | -| taint.cpp:782:7:782:11 | fopen | (char *,const char *) | | xstrdup | 1 | -| taint.cpp:782:7:782:11 | fopen | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Configcmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Configcmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Curl_timestrcmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Curl_timestrcmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | DES_crypt | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | DES_crypt | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | OPENSSL_strcasecmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __bind_textdomain_codeset | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __bindtextdomain | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __bindtextdomain | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __dgettext | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __dgettext | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __gconv_compare_alias | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __gconv_compare_alias | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strcasestr | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strcasestr | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strcspn_generic | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strcspn_generic | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strcspn_sse42 | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strcspn_sse42 | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strpbrk_generic | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strpbrk_generic | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strpbrk_sse42 | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strspn_generic | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strspn_generic | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strspn_sse42 | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strspn_sse42 | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strstr_generic | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strstr_generic | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strverscmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strverscmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | _dl_cache_libcmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | advance | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | advance | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | c_strcasecmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | c_strcasecmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | charmap_aliases | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | charmap_aliases | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | charmap_open | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | charmap_open | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | chroot_canon | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | chroot_canon | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | get_passwd | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | get_passwd | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen64 | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen64 | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | iconv_open | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | iconv_open | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | openssl_fopen | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | openssl_fopen | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | ossl_pem_check_suffix | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | ossl_v3_name_cmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_strglob | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_strglob | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_stricmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_stricmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | step | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | step | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | tempnam | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | tempnam | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | xfopen | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | xfopen | 1 | -| taint.cpp:782:7:782:11 | fopen | (const mntent *,const char *) | | __hasmntopt | 1 | -| taint.cpp:782:7:782:11 | fopen | (const nis_error,const char *) | | nis_sperror | 1 | -| taint.cpp:782:7:782:11 | fopen | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| taint.cpp:782:7:782:11 | fopen | (curl_off_t *,const char *) | | str2offset | 1 | -| taint.cpp:782:7:782:11 | fopen | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| taint.cpp:782:7:782:11 | fopen | (curl_slist **,const char *) | | add2list | 1 | -| taint.cpp:782:7:782:11 | fopen | (curl_slist *,const char *) | | curl_slist_append | 1 | -| taint.cpp:782:7:782:11 | fopen | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| taint.cpp:782:7:782:11 | fopen | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| taint.cpp:782:7:782:11 | fopen | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| taint.cpp:782:7:782:11 | fopen | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| taint.cpp:782:7:782:11 | fopen | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| taint.cpp:782:7:782:11 | fopen | (gzFile,const char *) | | gzputs | 1 | -| taint.cpp:782:7:782:11 | fopen | (int,const char *) | | BIO_meth_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (int,const char *) | | _IO_new_fdopen | 1 | -| taint.cpp:782:7:782:11 | fopen | (int,const char *) | | gzdopen | 1 | -| taint.cpp:782:7:782:11 | fopen | (int,const char *) | | setlocale | 1 | -| taint.cpp:782:7:782:11 | fopen | (int,const char *) | | xsetlocale | 1 | -| taint.cpp:782:7:782:11 | fopen | (lemon *,const char *) | | file_makename | 1 | -| taint.cpp:782:7:782:11 | fopen | (long *,const char *) | | secs2ms | 1 | -| taint.cpp:782:7:782:11 | fopen | (long *,const char *) | | str2num | 1 | -| taint.cpp:782:7:782:11 | fopen | (long *,const char *) | | str2unum | 1 | -| taint.cpp:782:7:782:11 | fopen | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| taint.cpp:782:7:782:11 | fopen | (size_t *,const char *) | | next_protos_parse | 1 | -| taint.cpp:782:7:782:11 | fopen | (slist_wc **,const char *) | | easysrc_add | 1 | -| taint.cpp:782:7:782:11 | fopen | (slist_wc *,const char *) | | slist_wc_append | 1 | -| taint.cpp:782:7:782:11 | fopen | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| taint.cpp:782:7:782:11 | fopen | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| taint.cpp:782:7:782:11 | fopen | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| taint.cpp:782:7:782:11 | fopen | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| taint.cpp:782:7:782:11 | fopen | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| taint.cpp:782:7:782:11 | fopen | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| taint.cpp:782:7:782:11 | fopen | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| taint.cpp:782:7:782:11 | fopen | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| taint.cpp:782:7:782:11 | fopen | (stringtable *,const char *) | | stringtable_add | 1 | -| taint.cpp:782:7:782:11 | fopen | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| taint.cpp:782:7:782:11 | fopen | (unsigned long *,const char *) | | set_cert_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (unsigned long *,const char *) | | set_name_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (CTLOG **,const char *,const char *) | | CTLOG_new_from_base64 | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (CTLOG **,const char *,const char *) | | CTLOG_new_from_base64 | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (CURL *,char **,const char *) | | add_file_name_to_url | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (ENGINE *,const char *,const char *) | | make_engine_uri | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (ENGINE *,const char *,const char *) | | make_engine_uri | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (EVP_PKEY_CTX *,const char *,const char *) | | EVP_PKEY_CTX_ctrl_str | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (EVP_PKEY_CTX *,const char *,const char *) | | EVP_PKEY_CTX_ctrl_str | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (FFC_PARAMS *,const char *,const char *) | | ossl_ffc_set_digest | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (FFC_PARAMS *,const char *,const char *) | | ossl_ffc_set_digest | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (FILE *,const char *,const char *) | | _IO_new_proc_open | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (FILE *,const char *,const char *) | | _IO_new_proc_open | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (GlobalConfig *,char **,const char *) | | get_url_file_name | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (Jim_Interp *,Jim_Obj *,const char *) | | Jim_CompareStringImmediate | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (Jim_Interp *,const char *,const char *) | | Jim_SetVariableStrWithStr | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (Jim_Interp *,const char *,const char *) | | Jim_SetVariableStrWithStr | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (LIBSSH2_SESSION *,int,const char *) | | _libssh2_error | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (LIBSSH2_SESSION *,int,const char *) | | libssh2_session_set_last_error | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_CMP_MSG *,OSSL_LIB_CTX *,const char *) | | ossl_cmp_msg_set0_libctx | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_DECODER *,void *,const char *) | | ossl_decoder_instance_new_forprov | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_LIB_CTX *,EVP_PKEY *,const char *) | | EVP_PKEY_CTX_new_from_pkey | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_LIB_CTX *,const char *,const char *) | | EVP_PKEY_CTX_new_from_name | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_LIB_CTX *,const char *,const char *) | | EVP_PKEY_CTX_new_from_name | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_LIB_CTX *,const char *,const char *) | | ossl_slh_dsa_key_new | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_LIB_CTX *,const char *,const char *) | | ossl_slh_dsa_key_new | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_NAMEMAP *,int,const char *) | | ossl_namemap_add_name | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (PROV_CTX *,const char *,const char *) | | ossl_prov_ctx_get_param | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (PROV_CTX *,const char *,const char *) | | ossl_prov_ctx_get_param | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (SRP_user_pwd *,const char *,const char *) | | SRP_user_pwd_set1_ids | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (SRP_user_pwd *,const char *,const char *) | | SRP_user_pwd_set1_ids | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (SSL_CONF_CTX *,const char *,const char *) | | SSL_CONF_cmd | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (SSL_CONF_CTX *,const char *,const char *) | | SSL_CONF_cmd | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (UI *,UI_STRING *,const char *) | | UI_set_result | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (UI *,const char *,const char *) | | UI_construct_prompt | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (UI *,const char *,const char *) | | UI_construct_prompt | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (X509 *,OSSL_LIB_CTX *,const char *) | | ossl_x509_set0_libctx | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (X509V3_EXT_METHOD *,X509V3_CTX *,const char *) | | s2i_ASN1_IA5STRING | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (X509V3_EXT_METHOD *,X509V3_CTX *,const char *) | | s2i_ASN1_UTF8STRING | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (X509_CRL *,OSSL_LIB_CTX *,const char *) | | ossl_x509_crl_set0_libctx | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (X509_REQ *,OSSL_LIB_CTX *,const char *) | | ossl_x509_req_set0_libctx | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (char **,size_t *,const char *) | | envz_remove | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (char[256],const char *,const char *) | | host2netname | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (char[256],const char *,const char *) | | host2netname | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (char[256],const uid_t,const char *) | | user2netname | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const ASN1_ITEM *,OSSL_LIB_CTX *,const char *) | | ASN1_item_new_ex | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const EVP_CIPHER *,OSSL_LIB_CTX *,const char *) | | CMS_AuthEnvelopedData_create_ex | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const EVP_CIPHER *,OSSL_LIB_CTX *,const char *) | | CMS_EnvelopedData_create_ex | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const EVP_MD *,OSSL_LIB_CTX *,const char *) | | ossl_cms_DigestedData_create | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const OSSL_PARAM[],OSSL_LIB_CTX *,const char *) | | EC_GROUP_new_from_params | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const OSSL_PROPERTY_LIST *,OSSL_LIB_CTX *,const char *) | | ossl_property_find_property | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const PKCS8_PRIV_KEY_INFO *,OSSL_LIB_CTX *,const char *) | | EVP_PKCS82PKEY_ex | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const PKCS8_PRIV_KEY_INFO *,OSSL_LIB_CTX *,const char *) | | ossl_ec_key_from_pkcs8 | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const PKCS8_PRIV_KEY_INFO *,OSSL_LIB_CTX *,const char *) | | ossl_ecx_key_from_pkcs8 | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const PKCS8_PRIV_KEY_INFO *,OSSL_LIB_CTX *,const char *) | | ossl_rsa_key_from_pkcs8 | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const PKCS12_SAFEBAG *,OSSL_LIB_CTX *,const char *) | | PKCS12_SAFEBAG_get1_cert_ex | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const PKCS12_SAFEBAG *,OSSL_LIB_CTX *,const char *) | | PKCS12_SAFEBAG_get1_crl_ex | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const QUIC_TSERVER_ARGS *,const char *,const char *) | | ossl_quic_tserver_new | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (const QUIC_TSERVER_ARGS *,const char *,const char *) | | ossl_quic_tserver_new | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const X509_ALGOR *,OSSL_LIB_CTX *,const char *) | | ossl_ec_key_param_from_x509_algor | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const char **,char **,const char *) | | Curl_get_pathname | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const char *,OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_read | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const char *,size_t,const char *) | | __argz_next | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const char *,size_t,const char *) | | argz_next | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const char *,size_t,const char *) | | envz_entry | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const char *,size_t,const char *) | | envz_get | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const char *,sqlite3_filename,const char *) | | sqlite3_uri_parameter | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (dl_exception *,const char *,const char *) | | _dl_exception_create | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (dl_exception *,const char *,const char *) | | _dl_exception_create | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (gconv_spec *,const char *,const char *) | | __gconv_create_spec | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (gconv_spec *,const char *,const char *) | | __gconv_create_spec | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (gz_statep,int,const char *) | | gz_error | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (http_resp **,int,const char *) | | Curl_http_resp_make | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (int,OSSL_LIB_CTX *,const char *) | | PKCS12_init_ex | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (int,char *const *,const char *) | | __posix_getopt | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (int,char *const *,const char *) | | getopt | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (int,dl_exception *,const char *) | | _dl_signal_cexception | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (int,dl_exception *,const char *) | | _dl_signal_exception | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (int,int,const char *) | | OSSL_CMP_STATUSINFO_new | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (lemon *,const char *,const char *) | | file_open | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (lemon *,const char *,const char *) | | file_open | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (locale_t,const char *,const char *) | | __translated_number_width | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (locale_t,const char *,const char *) | | __translated_number_width | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (sqlite3 *,const char *,const char *) | | sqlite3_recover_init | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (sqlite3 *,const char *,const char *) | | sqlite3_recover_init | 2 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | _IO_gets | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | __mktemp | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | __nis_default_group | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | __nis_default_owner | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | __xpg_basename | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | ctermid | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | cuserid | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | defossilize | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | des_setparity | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | dirname | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | getwd | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | make_uppercase | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | mkdtemp | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | next_item | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | strfry | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | CStringT | CStringT | 0 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (ASN1_STRING *,unsigned int) | | ossl_asn1_string_set_bits_left | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (EC_KEY *,unsigned int) | | EC_KEY_set_enc_flags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (EVP_ENCODE_CTX *,unsigned int) | | evp_encode_ctx_set_flags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (FFC_PARAMS *,unsigned int) | | ossl_ffc_params_set_flags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (OSSL_PARAM *,unsigned int) | | OSSL_PARAM_set_uint | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (QUIC_DEMUX *,unsigned int) | | ossl_quic_demux_set_mtu | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (QUIC_OBJ *,unsigned int) | | ossl_quic_obj_set_blocking_mode | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (RAND_POOL *,unsigned int) | | ossl_rand_pool_bytes_needed | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (SSL *,unsigned int) | | SSL_set_hostflags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (SSL_CONF_CTX *,unsigned int) | | SSL_CONF_CTX_clear_flags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (SSL_CONF_CTX *,unsigned int) | | SSL_CONF_CTX_set_flags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (TS_RESP_CTX *,unsigned int) | | TS_RESP_CTX_set_clock_precision_digits | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (WPACKET *,unsigned int) | | WPACKET_set_flags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (X509_STORE_CTX *,unsigned int) | | X509_STORE_CTX_set_current_reasons | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (X509_VERIFY_PARAM *,unsigned int) | | X509_VERIFY_PARAM_set_hostflags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (char *,unsigned int) | | __nis_default_access | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (char *,unsigned int) | | utf8_fromunicode | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (char *,unsigned int) | | uv_buf_init | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (const uv__io_t *,unsigned int) | | uv__io_active | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (const_nis_name,unsigned int) | | __create_ib_request | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (grouping_iterator *,unsigned int) | | __grouping_iterator_init_none | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (gzFile,unsigned int) | | gzbuffer | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (res_state,unsigned int) | | __res_get_nsaddr | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (unsigned int,unsigned int) | | __gnu_dev_makedev | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (unsigned int,unsigned int) | | gnu_dev_makedev | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (z_streamp,unsigned int) | | inflate_fast | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (ASN1_STRING *,unsigned int) | | ossl_asn1_string_set_bits_left | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (EC_KEY *,unsigned int) | | EC_KEY_set_enc_flags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (EVP_ENCODE_CTX *,unsigned int) | | evp_encode_ctx_set_flags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (FFC_PARAMS *,unsigned int) | | ossl_ffc_params_set_flags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (OSSL_PARAM *,unsigned int) | | OSSL_PARAM_set_uint | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (QUIC_DEMUX *,unsigned int) | | ossl_quic_demux_set_mtu | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (QUIC_OBJ *,unsigned int) | | ossl_quic_obj_set_blocking_mode | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (RAND_POOL *,unsigned int) | | ossl_rand_pool_bytes_needed | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (SSL *,unsigned int) | | SSL_set_hostflags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (SSL_CONF_CTX *,unsigned int) | | SSL_CONF_CTX_clear_flags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (SSL_CONF_CTX *,unsigned int) | | SSL_CONF_CTX_set_flags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (TS_RESP_CTX *,unsigned int) | | TS_RESP_CTX_set_clock_precision_digits | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (WPACKET *,unsigned int) | | WPACKET_set_flags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (X509_STORE_CTX *,unsigned int) | | X509_STORE_CTX_set_current_reasons | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (X509_VERIFY_PARAM *,unsigned int) | | X509_VERIFY_PARAM_set_hostflags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (char *,unsigned int) | | __nis_default_access | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (char *,unsigned int) | | utf8_fromunicode | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (char *,unsigned int) | | uv_buf_init | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (const uv__io_t *,unsigned int) | | uv__io_active | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (const_nis_name,unsigned int) | | __create_ib_request | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (grouping_iterator *,unsigned int) | | __grouping_iterator_init_none | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (gzFile,unsigned int) | | gzbuffer | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (res_state,unsigned int) | | __res_get_nsaddr | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (unsigned int,unsigned int) | | __gnu_dev_makedev | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (unsigned int,unsigned int) | | gnu_dev_makedev | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (z_streamp,unsigned int) | | inflate_fast | 1 | -| taint.cpp:815:7:815:12 | strchr | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:815:7:815:12 | strchr | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:815:7:815:12 | strchr | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:815:7:815:12 | strchr | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:815:7:815:12 | strchr | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:815:7:815:12 | strchr | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:815:7:815:12 | strchr | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:815:7:815:12 | strchr | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:815:7:815:12 | strchr | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:815:7:815:12 | strchr | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:815:7:815:12 | strchr | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:815:7:815:12 | strchr | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:815:7:815:12 | strchr | (FTS *,int) | | fts_children | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:815:7:815:12 | strchr | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:815:7:815:12 | strchr | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:815:7:815:12 | strchr | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:815:7:815:12 | strchr | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:815:7:815:12 | strchr | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:815:7:815:12 | strchr | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:815:7:815:12 | strchr | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:815:7:815:12 | strchr | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:815:7:815:12 | strchr | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:815:7:815:12 | strchr | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:815:7:815:12 | strchr | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:815:7:815:12 | strchr | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:815:7:815:12 | strchr | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:815:7:815:12 | strchr | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:815:7:815:12 | strchr | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:815:7:815:12 | strchr | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:815:7:815:12 | strchr | (char **,int) | | addrsort | 1 | -| taint.cpp:815:7:815:12 | strchr | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:815:7:815:12 | strchr | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:815:7:815:12 | strchr | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:815:7:815:12 | strchr | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:815:7:815:12 | strchr | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:815:7:815:12 | strchr | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:815:7:815:12 | strchr | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:815:7:815:12 | strchr | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:815:7:815:12 | strchr | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:815:7:815:12 | strchr | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:815:7:815:12 | strchr | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:815:7:815:12 | strchr | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:815:7:815:12 | strchr | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:815:7:815:12 | strchr | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:815:7:815:12 | strchr | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | DH_meth_new | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | DSA_meth_new | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | Jim_StrDupLen | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | RSA_meth_new | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | ftok | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | ftok | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | gethostbyname2 | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | parse_yesno | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | res_gethostbyname2 | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:815:7:815:12 | strchr | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:815:7:815:12 | strchr | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:815:7:815:12 | strchr | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:815:7:815:12 | strchr | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:815:7:815:12 | strchr | (double,int) | | __ldexp | 1 | -| taint.cpp:815:7:815:12 | strchr | (double,int) | | __scalbn | 1 | -| taint.cpp:815:7:815:12 | strchr | (double[],int) | | getloadavg | 1 | -| taint.cpp:815:7:815:12 | strchr | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:815:7:815:12 | strchr | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:815:7:815:12 | strchr | (float,int) | | __ldexpf | 1 | -| taint.cpp:815:7:815:12 | strchr | (float,int) | | __scalbnf | 1 | -| taint.cpp:815:7:815:12 | strchr | (gzFile,int) | | gzflush | 1 | -| taint.cpp:815:7:815:12 | strchr | (gzFile,int) | | gzputc | 1 | -| taint.cpp:815:7:815:12 | strchr | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:815:7:815:12 | strchr | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:815:7:815:12 | strchr | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:815:7:815:12 | strchr | (int,int) | | BN_security_bits | 1 | -| taint.cpp:815:7:815:12 | strchr | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:815:7:815:12 | strchr | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:815:7:815:12 | strchr | (int,int) | | __isctype | 1 | -| taint.cpp:815:7:815:12 | strchr | (int,int) | | acttab_alloc | 1 | -| taint.cpp:815:7:815:12 | strchr | (int,int) | | div | 1 | -| taint.cpp:815:7:815:12 | strchr | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:815:7:815:12 | strchr | (long double,int) | | __ldexpl | 1 | -| taint.cpp:815:7:815:12 | strchr | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:815:7:815:12 | strchr | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:815:7:815:12 | strchr | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:815:7:815:12 | strchr | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:815:7:815:12 | strchr | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:815:7:815:12 | strchr | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:815:7:815:12 | strchr | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:815:7:815:12 | strchr | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:815:7:815:12 | strchr | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:815:7:815:12 | strchr | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:815:7:815:12 | strchr | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:815:7:815:12 | strchr | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:815:7:815:12 | strchr | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:815:7:815:12 | strchr | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:815:7:815:12 | strchr | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:815:7:815:12 | strchr | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:815:7:815:12 | strchr | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:815:7:815:12 | strchr | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:815:7:815:12 | strchr | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:815:7:815:12 | strchr | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:815:7:815:12 | strchr | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:815:7:815:12 | strchr | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:815:7:815:12 | strchr | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:815:7:815:12 | strchr | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:815:7:815:12 | strchr | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:815:7:815:12 | strchr | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:815:7:815:12 | strchr | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:815:7:815:12 | strchr | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:815:7:815:12 | strchr | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:815:7:815:12 | strchr | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:817:6:817:27 | write_to_const_ptr_ptr | (const OSSL_PARAM *,const char **) | | OSSL_PARAM_get_utf8_ptr | 1 | -| taint.cpp:817:6:817:27 | write_to_const_ptr_ptr | (const OSSL_PARAM *,const char **) | | OSSL_PARAM_get_utf8_string_ptr | 1 | -| taint.cpp:817:6:817:27 | write_to_const_ptr_ptr | (const X509_NAME *,const char **) | | OCSP_url_svcloc_new | 1 | -| taint.cpp:817:6:817:27 | write_to_const_ptr_ptr | (int,const char **) | | _nl_load_locale_from_archive | 1 | -| taint.cpp:817:6:817:27 | write_to_const_ptr_ptr | (sqlite3_intck *,const char **) | | sqlite3_intck_error | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (CONF *,const char *) | | _CONF_new_section | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (DSO *,const char *) | | DSO_convert_filename | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (DSO *,const char *) | | DSO_set_filename | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (GlobalConfig *,const char *) | | setvariable | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL *,const char *) | | SSL_add1_host | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL *,const char *) | | SSL_set1_host | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (UI *,const char *) | | UI_add_error_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (UI *,const char *) | | UI_add_info_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (UI *,const char *) | | UI_dup_error_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (UI *,const char *) | | UI_dup_info_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (X509 *,const char *) | | x509_ctrl_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (char **,const char *) | | Curl_setstropt | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (char **,const char *) | | __strsep | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (char *,const char *) | | xstrdup | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Configcmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Configcmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Curl_timestrcmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Curl_timestrcmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | DES_crypt | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | DES_crypt | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | OPENSSL_strcasecmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __bind_textdomain_codeset | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __bindtextdomain | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __bindtextdomain | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __dgettext | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __dgettext | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __gconv_compare_alias | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __gconv_compare_alias | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strcasestr | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strcasestr | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strcspn_generic | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strcspn_generic | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strcspn_sse42 | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strcspn_sse42 | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strpbrk_generic | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strpbrk_generic | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strpbrk_sse42 | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strspn_generic | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strspn_generic | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strspn_sse42 | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strspn_sse42 | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strstr_generic | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strstr_generic | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strverscmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strverscmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | _dl_cache_libcmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | advance | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | advance | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | c_strcasecmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | c_strcasecmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | charmap_aliases | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | charmap_aliases | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | charmap_open | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | charmap_open | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | chroot_canon | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | chroot_canon | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | get_passwd | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | get_passwd | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen64 | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen64 | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | iconv_open | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | iconv_open | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | openssl_fopen | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | openssl_fopen | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | ossl_pem_check_suffix | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | ossl_v3_name_cmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_strglob | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_strglob | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_stricmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_stricmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | step | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | step | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | tempnam | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | tempnam | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | xfopen | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | xfopen | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const mntent *,const char *) | | __hasmntopt | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const nis_error,const char *) | | nis_sperror | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (curl_off_t *,const char *) | | str2offset | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (curl_slist **,const char *) | | add2list | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (curl_slist *,const char *) | | curl_slist_append | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (gzFile,const char *) | | gzputs | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | BIO_meth_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | _IO_new_fdopen | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | gzdopen | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | setlocale | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | xsetlocale | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (lemon *,const char *) | | file_makename | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (long *,const char *) | | secs2ms | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (long *,const char *) | | str2num | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (long *,const char *) | | str2unum | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (size_t *,const char *) | | next_protos_parse | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (slist_wc **,const char *) | | easysrc_add | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (slist_wc *,const char *) | | slist_wc_append | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (stringtable *,const char *) | | stringtable_add | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (unsigned long *,const char *) | | set_cert_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (unsigned long *,const char *) | | set_name_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_default_uflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_feof | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_ferror | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_file_close_mmap | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_file_underflow_mmap | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_ftell | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_getc | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_getwc | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_new_file_underflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_peekc_locked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_str_count | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_str_underflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_sungetc | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_sungetwc | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_wdefault_uflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_wfile_underflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_wfile_underflow_mmap | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_wstr_count | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_wstr_underflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __fbufsize | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __feof_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __ferror_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __fileno | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __flbf | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __fopen_maybe_mmap | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __fpending | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __ftello | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __fwriting | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __getc_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __getwc_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __uflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __underflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __wuflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __wunderflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | feof_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | ferror_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | fgetc_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | fgetgrent | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | fgetpwent | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | fgetsgent | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | fgetspent | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | getc_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | getmntent | 0 | -| taint.cpp:837:5:837:11 | fprintf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | -| taint.cpp:837:5:837:11 | fprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 | -| taint.cpp:837:5:837:11 | fprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 | -| taint.cpp:837:5:837:11 | fprintf | (char **,const char *,...) | | ___asprintf | 1 | -| taint.cpp:837:5:837:11 | fprintf | (char **,const char *,...) | | ___asprintf | 2 | -| taint.cpp:837:5:837:11 | fprintf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | -| thread.cpp:4:6:4:9 | sink | (int) | | ASN1_STRING_type_new | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | ASN1_tag2bit | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | ASN1_tag2str | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | EVP_PKEY_asn1_get0 | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | Jim_ReturnCode | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | Jim_SignalId | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | OBJ_nid2ln | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | OBJ_nid2obj | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | OBJ_nid2sn | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | OSSL_STORE_INFO_type_string | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | OSSL_trace_get_category_name | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | PKCS12_init | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | Symbol_Nth | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | X509_PURPOSE_get0 | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | X509_PURPOSE_get_by_id | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | X509_TRUST_get0 | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __btowc | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __current_locale_name | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __fdopendir | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __get_errlist | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __get_errname | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __math_invalid_i | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __math_invalidf_i | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __p_class | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __p_rcode | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __p_type | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __pkey_get | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __sigdescr_np | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __strerrordesc_np | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | _tolower | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | _toupper | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | btowc | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | c_tolower | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | c_toupper | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | curlx_sitouz | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | evp_pkey_type2name | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | inet6_option_space | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isalnum | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isalpha | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isblank | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | iscntrl | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isdigit | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isgraph | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | islower | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isprint | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | ispunct | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isspace | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isupper | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isxdigit | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | ossl_tolower | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | ossl_toupper | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | sigabbrev_np | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | sqlite3_compileoption_get | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | sqlite3_errstr | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | strerrorname_np | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | support_report_failure | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | svcudp_create | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | tls13_alert_code | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | toascii | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | tolower | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | toupper | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | uabs | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | uv__accept | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | uv_err_name | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | uv_get_osfhandle | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | uv_strerror | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | uv_translate_sys_error | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | zError | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | __pthread_cleanup_class | __setdoit | 0 | -| thread.cpp:18:6:18:22 | thread_function_3 | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIGNUM *,int) | | BN_clear_bit | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIGNUM *,int) | | BN_mask_bits | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIGNUM *,int) | | BN_set_bit | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIGNUM *,int) | | BN_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIGNUM *,int) | | bn_expand2 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIGNUM *,int) | | bn_wexpand | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIO *,int) | | BIO_clear_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIO *,int) | | BIO_find_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIO *,int) | | BIO_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIO *,int) | | BIO_set_init | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIO *,int) | | BIO_set_retry_reason | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIO *,int) | | BIO_set_shutdown | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIO *,int) | | TXT_DB_read | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (CURL *,int) | | curl_easy_pause | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (DH *,int) | | DH_clear_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (DH *,int) | | DH_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (DSA *,int) | | DSA_clear_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (DSA *,int) | | DSA_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_default_pbackfail | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_fwide | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_init | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_init_internal | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_new_file_attach | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_new_file_overflow | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_old_init | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_sputbackc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_str_overflow | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_str_pbackfail | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FTS *,int) | | fts_children | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (RSA *,int) | | RSA_clear_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (RSA *,int) | | RSA_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_key_update | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_purpose | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_read_ahead | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_security_level | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_shutdown | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_trust | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_verify_depth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | ssl_md | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509 *,int) | | X509_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509 *,int) | | X509_self_signed | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (_Float128,int) | | __ldexpf128 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (_Float128,int) | | __scalbnf128 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (acttab *,int) | | acttab_insert | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (addrinfo *,int) | | support_format_addrinfo | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (char **,int) | | addrsort | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (char *,int) | | Curl_str2addr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (char *,int) | | PEM_proc_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (char,int) | CStringT | CStringT | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const BIGNUM *,int) | | BN_get_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const BIO *,int) | | BIO_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const BIO *,int) | | BIO_test_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const DH *,int) | | DH_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const DH *,int) | | DH_test_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const DH *,int) | | ossl_dh_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const DSA *,int) | | DSA_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const DSA *,int) | | DSA_test_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const DSA *,int) | | ossl_dsa_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const RSA *,int) | | RSA_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const RSA *,int) | | RSA_test_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const RSA *,int) | | ossl_rsa_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const SSL *,int) | | SSL_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const UI *,int) | | UI_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509 *,int) | | X509_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509 *,int) | | X509_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const XCHAR *,int) | CStringT | CStringT | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const YCHAR *,int) | CStringT | CStringT | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | DH_meth_new | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | DSA_meth_new | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | Jim_StrDupLen | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | RSA_meth_new | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | ftok | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | gethostbyname2 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | parse_yesno | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | res_gethostbyname2 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const void *,int) | | inet6_rth_getaddr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (double,int) | | __ldexp | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (double,int) | | __scalbn | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (double[],int) | | getloadavg | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (fexcept_t *,int) | | fegetexceptflag | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (float,int) | | __ldexpf | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (float,int) | | __scalbnf | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (gzFile,int) | | gzflush | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (gzFile,int) | | gzputc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int *,int) | | X509_PURPOSE_set | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int *,int) | | X509_TRUST_set | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int *,int) | | __lll_unlock_elision | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int,int) | | BN_security_bits | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int,int) | | EVP_MD_meth_new | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int,int) | | EVP_PKEY_meth_new | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int,int) | | __isctype | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int,int) | | acttab_alloc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int,int) | | div | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int,int) | | inet6_rth_space | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (long double,int) | | __ldexpl | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (netlink_handle *,int) | | __netlink_request | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (ns_msg,int) | | ns_msg_getflag | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (obstack *,int) | | _obstack_newchunk | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (rule *,int) | | Configlist_add | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (rule *,int) | | Configlist_addbasis | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sigset_t *,int) | | sigaddset | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sigset_t *,int) | | sigdelset | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (timespec *,int) | | __timespec_get | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (timespec *,int) | | __timespec_getres | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (uint16_t,int) | | tls1_group_id2nid | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (unsigned char *,int) | | RAND_bytes | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (void *,int) | | DSO_dsobyaddr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (void *,int) | | sqlite3_realloc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (void *const *,int) | | __backtrace_symbols | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (wchar_t,int) | CStringT | CStringT | 1 | -| vector.cpp:13:6:13:9 | sink | (int) | | ASN1_STRING_type_new | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | ASN1_tag2bit | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | ASN1_tag2str | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | EVP_PKEY_asn1_get0 | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | Jim_ReturnCode | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | Jim_SignalId | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | OBJ_nid2ln | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | OBJ_nid2obj | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | OBJ_nid2sn | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | OSSL_STORE_INFO_type_string | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | OSSL_trace_get_category_name | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | PKCS12_init | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | Symbol_Nth | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | X509_PURPOSE_get0 | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | X509_PURPOSE_get_by_id | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get0 | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __btowc | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __current_locale_name | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __fdopendir | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __get_errlist | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __get_errname | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __math_invalid_i | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __math_invalidf_i | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __p_class | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __p_rcode | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __p_type | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __pkey_get | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __sigdescr_np | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __strerrordesc_np | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | _tolower | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | _toupper | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | btowc | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | c_tolower | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | c_toupper | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | curlx_sitouz | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | evp_pkey_type2name | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | inet6_option_space | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isalnum | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isalpha | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isblank | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | iscntrl | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isdigit | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isgraph | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | islower | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isprint | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | ispunct | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isspace | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isupper | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isxdigit | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | ossl_tolower | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | ossl_toupper | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | sigabbrev_np | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | sqlite3_compileoption_get | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | sqlite3_errstr | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | strerrorname_np | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | support_report_failure | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | svcudp_create | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | tls13_alert_code | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | toascii | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | tolower | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | toupper | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | uabs | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | uv__accept | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | uv_err_name | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | uv_get_osfhandle | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | uv_strerror | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | uv_translate_sys_error | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | zError | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | __pthread_cleanup_class | __setdoit | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ASN1_STRING_type_new | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ASN1_tag2bit | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ASN1_tag2str | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | EVP_PKEY_asn1_get0 | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | Jim_ReturnCode | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | Jim_SignalId | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | OBJ_nid2ln | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | OBJ_nid2obj | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | OBJ_nid2sn | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | OSSL_STORE_INFO_type_string | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | OSSL_trace_get_category_name | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | PKCS12_init | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | Symbol_Nth | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_PURPOSE_get0 | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_PURPOSE_get_by_id | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_TRUST_get0 | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_TRUST_get_by_id | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __btowc | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __current_locale_name | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __fdopendir | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __get_errlist | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __get_errname | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __math_invalid_i | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __math_invalidf_i | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __p_class | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __p_rcode | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __p_type | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __pkey_get | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __sigdescr_np | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __strerrordesc_np | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | _tolower | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | _toupper | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | btowc | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | c_tolower | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | c_toupper | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | curlx_sitouz | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | evp_pkey_type2name | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | inet6_option_space | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isalnum | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isalpha | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isblank | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | iscntrl | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isdigit | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isgraph | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | islower | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isprint | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ispunct | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isspace | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isupper | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isxdigit | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ossl_cmp_bodytype_to_string | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ossl_tolower | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ossl_toupper | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | sigabbrev_np | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | sqlite3_compileoption_get | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | sqlite3_errstr | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | strerrorname_np | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | support_report_failure | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | svcudp_create | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | tls13_alert_code | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | toascii | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | tolower | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | toupper | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uabs | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv__accept | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_err_name | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_get_osfhandle | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_strerror | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_translate_sys_error | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | zError | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | __pthread_cleanup_class | __setdoit | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ASN1_STRING_type_new | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ASN1_tag2bit | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ASN1_tag2str | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | EVP_PKEY_asn1_get0 | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | Jim_ReturnCode | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | Jim_SignalId | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | OBJ_nid2ln | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | OBJ_nid2obj | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | OBJ_nid2sn | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | OSSL_STORE_INFO_type_string | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | OSSL_trace_get_category_name | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | PKCS12_init | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | Symbol_Nth | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_PURPOSE_get0 | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_PURPOSE_get_by_id | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_TRUST_get0 | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_TRUST_get_by_id | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __btowc | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __current_locale_name | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __fdopendir | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __get_errlist | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __get_errname | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __math_invalid_i | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __math_invalidf_i | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __p_class | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __p_rcode | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __p_type | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __pkey_get | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __sigdescr_np | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __strerrordesc_np | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | _tolower | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | _toupper | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | btowc | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | c_tolower | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | c_toupper | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | curlx_sitouz | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | evp_pkey_type2name | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | inet6_option_space | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isalnum | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isalpha | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isblank | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | iscntrl | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isdigit | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isgraph | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | islower | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isprint | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ispunct | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isspace | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isupper | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isxdigit | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ossl_cmp_bodytype_to_string | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ossl_tolower | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ossl_toupper | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | sigabbrev_np | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | sqlite3_compileoption_get | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | sqlite3_errstr | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | strerrorname_np | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | support_report_failure | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | svcudp_create | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | tls13_alert_code | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | toascii | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | tolower | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | toupper | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uabs | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv__accept | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_err_name | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_get_osfhandle | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_strerror | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_translate_sys_error | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | zError | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | __pthread_cleanup_class | __setdoit | 0 | -| vector.cpp:279:6:279:9 | sink | (int *) | | rresvport | 0 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | BN_clear_bit | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | BN_mask_bits | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | BN_set_bit | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | BN_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | bn_expand2 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | bn_wexpand | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | BIO_clear_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | BIO_find_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | BIO_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | BIO_set_init | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | BIO_set_retry_reason | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | BIO_set_shutdown | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | TXT_DB_read | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (CURL *,int) | | curl_easy_pause | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DH *,int) | | DH_clear_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DH *,int) | | DH_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DSA *,int) | | DSA_clear_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DSA *,int) | | DSA_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_default_pbackfail | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_fwide | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_init | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_init_internal | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_new_file_attach | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_new_file_overflow | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_old_init | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_sputbackc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_str_overflow | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_str_pbackfail | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FTS *,int) | | fts_children | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (RSA *,int) | | RSA_clear_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (RSA *,int) | | RSA_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_key_update | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_purpose | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_read_ahead | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_security_level | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_shutdown | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_trust | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_verify_depth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | ssl_md | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509 *,int) | | X509_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509 *,int) | | X509_self_signed | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (_Float128,int) | | __ldexpf128 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (_Float128,int) | | __scalbnf128 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (acttab *,int) | | acttab_insert | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (addrinfo *,int) | | support_format_addrinfo | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char **,int) | | addrsort | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char *,int) | | Curl_str2addr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char *,int) | | PEM_proc_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char,int) | CStringT | CStringT | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const BIGNUM *,int) | | BN_get_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const BIO *,int) | | BIO_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const BIO *,int) | | BIO_test_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const DH *,int) | | DH_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const DH *,int) | | DH_test_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const DH *,int) | | ossl_dh_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const DSA *,int) | | DSA_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const DSA *,int) | | DSA_test_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const DSA *,int) | | ossl_dsa_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const RSA *,int) | | RSA_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const RSA *,int) | | RSA_test_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const RSA *,int) | | ossl_rsa_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const SSL *,int) | | SSL_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const UI *,int) | | UI_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509 *,int) | | X509_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509 *,int) | | X509_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const XCHAR *,int) | CStringT | CStringT | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const YCHAR *,int) | CStringT | CStringT | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | DH_meth_new | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | DSA_meth_new | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | Jim_StrDupLen | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | RSA_meth_new | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | ftok | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | gethostbyname2 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | parse_yesno | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | res_gethostbyname2 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const void *,int) | | inet6_rth_getaddr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (double,int) | | __ldexp | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (double,int) | | __scalbn | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (double[],int) | | getloadavg | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (fexcept_t *,int) | | fegetexceptflag | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (float,int) | | __ldexpf | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (float,int) | | __scalbnf | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (gzFile,int) | | gzflush | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (gzFile,int) | | gzputc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int *,int) | | X509_PURPOSE_set | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int *,int) | | X509_TRUST_set | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int *,int) | | __lll_unlock_elision | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | BN_security_bits | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | EVP_MD_meth_new | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | EVP_PKEY_meth_new | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | __isctype | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | acttab_alloc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | div | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | inet6_rth_space | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (long double,int) | | __ldexpl | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (netlink_handle *,int) | | __netlink_request | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ns_msg,int) | | ns_msg_getflag | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (obstack *,int) | | _obstack_newchunk | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (rule *,int) | | Configlist_add | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (rule *,int) | | Configlist_addbasis | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sigset_t *,int) | | sigaddset | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sigset_t *,int) | | sigdelset | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (timespec *,int) | | __timespec_get | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (timespec *,int) | | __timespec_getres | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (uint16_t,int) | | tls1_group_id2nid | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned char *,int) | | RAND_bytes | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (void *,int) | | DSO_dsobyaddr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (void *,int) | | sqlite3_realloc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (void *const *,int) | | __backtrace_symbols | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (wchar_t,int) | CStringT | CStringT | 1 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ASN1_STRING_type_new | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ASN1_tag2bit | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ASN1_tag2str | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | EVP_PKEY_asn1_get0 | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | Jim_ReturnCode | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | Jim_SignalId | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | OBJ_nid2ln | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | OBJ_nid2obj | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | OBJ_nid2sn | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | OSSL_STORE_INFO_type_string | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | OSSL_trace_get_category_name | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | PKCS12_init | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | Symbol_Nth | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_PURPOSE_get0 | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_PURPOSE_get_by_id | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_TRUST_get0 | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_TRUST_get_by_id | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __btowc | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __current_locale_name | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __fdopendir | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __get_errlist | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __get_errname | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __math_invalid_i | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __math_invalidf_i | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __p_class | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __p_rcode | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __p_type | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __pkey_get | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __sigdescr_np | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __strerrordesc_np | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | _tolower | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | _toupper | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | btowc | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | c_tolower | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | c_toupper | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | curlx_sitouz | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | evp_pkey_type2name | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | inet6_option_space | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isalnum | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isalpha | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isblank | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | iscntrl | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isdigit | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isgraph | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | islower | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isprint | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ispunct | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isspace | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isupper | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isxdigit | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ossl_cmp_bodytype_to_string | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ossl_tolower | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ossl_toupper | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | sigabbrev_np | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | sqlite3_compileoption_get | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | sqlite3_errstr | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | strerrorname_np | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | support_report_failure | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | svcudp_create | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | tls13_alert_code | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | toascii | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | tolower | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | toupper | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uabs | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv__accept | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_err_name | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_get_osfhandle | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_strerror | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_translate_sys_error | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | zError | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | __pthread_cleanup_class | __setdoit | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | SRP_VBASE_new | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | _IO_gets | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | __mktemp | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | __nis_default_group | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | __nis_default_owner | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | __nis_default_ttl | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | __xpg_basename | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | ctermid | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | cuserid | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | defossilize | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | des_setparity | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | dirname | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | getwd | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | make_uppercase | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | mkdtemp | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | next_item | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | strfry | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | CStringT | CStringT | 0 | -| vector.cpp:454:7:454:12 | memcpy | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BIO *,X509 *,unsigned long) | | ossl_x509_print_ex_brief | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BIO *,X509_CRL *,unsigned long) | | X509_CRL_print_ex | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BIO *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2B_CTX *,const void *,size_t) | | ossl_blake2b_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2B_CTX *,const void *,size_t) | | ossl_blake2b_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_personal | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_salt | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2S_CTX *,const void *,size_t) | | ossl_blake2s_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2S_CTX *,const void *,size_t) | | ossl_blake2s_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_personal | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_salt | 2 | -| vector.cpp:454:7:454:12 | memcpy | (CCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ccm128_aad | 2 | -| vector.cpp:454:7:454:12 | memcpy | (CCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ccm128_tag | 2 | -| vector.cpp:454:7:454:12 | memcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | -| vector.cpp:454:7:454:12 | memcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | -| vector.cpp:454:7:454:12 | memcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | -| vector.cpp:454:7:454:12 | memcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | -| vector.cpp:454:7:454:12 | memcpy | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FFC_PARAMS *,const unsigned char *,size_t) | | ossl_ffc_params_set_seed | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const char *,size_t) | | _IO_new_do_write | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_default_xsputn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_default_xsputn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_new_file_xsputn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_new_file_xsputn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_wdefault_xsputn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_wdefault_xsputn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_wfile_xsputn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_wfile_xsputn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | __printf_buffer_as_file_xsputn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | __printf_buffer_as_file_xsputn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | __wprintf_buffer_as_file_xsputn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | __wprintf_buffer_as_file_xsputn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,void *,size_t) | | _IO_default_xsgetn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,void *,size_t) | | _IO_file_xsgetn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,void *,size_t) | | _IO_file_xsgetn_mmap | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,void *,size_t) | | _IO_wdefault_xsgetn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_aad | 2 | -| vector.cpp:454:7:454:12 | memcpy | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_setiv | 2 | -| vector.cpp:454:7:454:12 | memcpy | (GCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_gcm128_tag | 2 | -| vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | -| vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | -| vector.cpp:454:7:454:12 | memcpy | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | -| vector.cpp:454:7:454:12 | memcpy | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | -| vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 1 | -| vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 2 | -| vector.cpp:454:7:454:12 | memcpy | (MD5_CTX *,const void *,size_t) | | MD5_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (MD5_CTX *,const void *,size_t) | | MD5_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (MD5_SHA1_CTX *,const void *,size_t) | | ossl_md5_sha1_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (MD5_SHA1_CTX *,const void *,size_t) | | ossl_md5_sha1_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | -| vector.cpp:454:7:454:12 | memcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | -| vector.cpp:454:7:454:12 | memcpy | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_JSON_ENC *,const char *,size_t) | | ossl_json_str_len | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_JSON_ENC *,const void *,size_t) | | ossl_json_str_hex | 1 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_JSON_ENC *,const void *,size_t) | | ossl_json_str_hex | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_entropy | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_user_entropy | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_ptr | 1 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_ptr | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string | 1 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string_or_ptr | 1 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string_or_ptr | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_PARAM *,void *,size_t) | | ossl_param_set_secure_block | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_default | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_multiblock | 2 | -| vector.cpp:454:7:454:12 | memcpy | (POLY1305 *,const unsigned char *,size_t) | | Poly1305_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_generic_initiv | 2 | -| vector.cpp:454:7:454:12 | memcpy | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_hw_tdes_ede3_initkey | 2 | -| vector.cpp:454:7:454:12 | memcpy | (PROV_GCM_CTX *,const unsigned char *,size_t) | | ossl_gcm_aad_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (QUIC_PN,unsigned char *,size_t) | | ossl_quic_wire_encode_pkt_hdr_pn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (QUIC_RXFC *,OSSL_STATM *,size_t) | | ossl_quic_rstream_new | 2 | -| vector.cpp:454:7:454:12 | memcpy | (QUIC_TLS *,const unsigned char *,size_t) | | ossl_quic_tls_set_transport_params | 2 | -| vector.cpp:454:7:454:12 | memcpy | (RAND_POOL *,const unsigned char *,size_t) | | ossl_rand_pool_adin_mix_in | 2 | -| vector.cpp:454:7:454:12 | memcpy | (RAND_POOL *,size_t,size_t) | | ossl_rand_pool_add_end | 2 | -| vector.cpp:454:7:454:12 | memcpy | (RIPEMD160_CTX *,const void *,size_t) | | RIPEMD160_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (RIPEMD160_CTX *,const void *,size_t) | | RIPEMD160_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (RIPEMD160_CTX *,const void *,size_t) | | ripemd160_block_data_order | 1 | -| vector.cpp:454:7:454:12 | memcpy | (RIPEMD160_CTX *,const void *,size_t) | | ripemd160_block_data_order | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT **,const unsigned char **,size_t) | | o2i_SCT | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT *,const unsigned char **,size_t) | | o2i_SCT_signature | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT *,const unsigned char *,size_t) | | SCT_set1_extensions | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT *,const unsigned char *,size_t) | | SCT_set1_log_id | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT *,const unsigned char *,size_t) | | SCT_set1_signature | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT *,unsigned char *,size_t) | | SCT_set0_extensions | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT *,unsigned char *,size_t) | | SCT_set0_log_id | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT *,unsigned char *,size_t) | | SCT_set0_signature | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SHA256_CTX *,const void *,size_t) | | SHA224_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SHA256_CTX *,const void *,size_t) | | SHA224_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SHA256_CTX *,const void *,size_t) | | SHA256_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SHA256_CTX *,const void *,size_t) | | SHA256_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SHA512_CTX *,const void *,size_t) | | SHA384_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SHA512_CTX *,const void *,size_t) | | SHA384_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SHA512_CTX *,const void *,size_t) | | SHA512_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SHA512_CTX *,const void *,size_t) | | SHA512_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SHA_CTX *,const void *,size_t) | | SHA1_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SHA_CTX *,const void *,size_t) | | SHA1_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SIPHASH *,const unsigned char *,size_t) | | SipHash_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SIPHASH *,unsigned char *,size_t) | | SipHash_Final | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SIV128_CONTEXT *,const unsigned char *,size_t) | | ossl_siv128_set_tag | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SIV128_CONTEXT *,unsigned char *,size_t) | | ossl_siv128_get_tag | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_priv | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_pub | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_block_data_order | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_block_data_order | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL *,const unsigned char *,size_t) | | SSL_set1_client_cert_type | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL *,const unsigned char *,size_t) | | SSL_set1_server_cert_type | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL *,const unsigned char *,size_t) | | SSL_set_quic_tls_transport_params | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL *,size_t,size_t) | | SSL_set_block_padding_ex | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_CONNECTION *,TLS_RECORD *,size_t) | | ssl_release_record | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_CONNECTION *,const unsigned char *,size_t) | | lookup_sess_in_cache | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_client_cert_type | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_server_cert_type | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_CTX *,size_t,size_t) | | SSL_CTX_set_block_padding_ex | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_alpn_selected | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_master_key | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_SESSION *,const void *,size_t) | | SSL_SESSION_set1_ticket_appdata | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_SESSION *,const void *,size_t) | | SSL_SESSION_set1_ticket_appdata | 2 | -| vector.cpp:454:7:454:12 | memcpy | (Strtab *,const char *,size_t) | | strtabadd | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_BitUpdate | 1 | -| vector.cpp:454:7:454:12 | memcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_BitUpdate | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,BUF_MEM *,size_t) | | WPACKET_init_len | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,const unsigned char *,size_t) | | ossl_quic_wire_encode_frame_new_token | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,const void *,size_t) | | WPACKET_memcpy | 1 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,const void *,size_t) | | WPACKET_memcpy | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,int,size_t) | | WPACKET_memset | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,uint64_t,size_t) | | WPACKET_put_bytes__ | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,unsigned char *,size_t) | | WPACKET_init_der | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,unsigned char *,size_t) | | dtls_raw_hello_verify_request | 2 | -| vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_add1_host | 2 | -| vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | -| vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | -| vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | -| vector.cpp:454:7:454:12 | memcpy | (__printf_buffer *,char,size_t) | | __printf_buffer_pad_1 | 2 | -| vector.cpp:454:7:454:12 | memcpy | (__printf_buffer *,const char *,size_t) | | __printf_buffer_write | 2 | -| vector.cpp:454:7:454:12 | memcpy | (__printf_buffer_snprintf *,char *,size_t) | | __printf_buffer_snprintf_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (__wprintf_buffer *,const wchar_t *,size_t) | | __wprintf_buffer_write | 2 | -| vector.cpp:454:7:454:12 | memcpy | (__wprintf_buffer *,wchar_t,size_t) | | __wprintf_buffer_pad_1 | 2 | -| vector.cpp:454:7:454:12 | memcpy | (alloc_buffer,const void *,size_t) | | __libc_alloc_buffer_copy_bytes | 1 | -| vector.cpp:454:7:454:12 | memcpy | (alloc_buffer,const void *,size_t) | | __libc_alloc_buffer_copy_bytes | 2 | -| vector.cpp:454:7:454:12 | memcpy | (argp_fmtstream *,argp_fmtstream_t,size_t) | | __argp_fmtstream_ensure | 2 | -| vector.cpp:454:7:454:12 | memcpy | (argp_fmtstream_t,const char *,size_t) | | __argp_fmtstream_write | 2 | -| vector.cpp:454:7:454:12 | memcpy | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 1 | -| vector.cpp:454:7:454:12 | memcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char **,size_t *,size_t) | | Curl_str_number | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | Curl_strntolower | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | Curl_strntoupper | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | uv__strscpy | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *,size_t,size_t) | | __getcwd_chk | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *__restrict__,const char *__restrict__,size_t) | | __strlcat | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *__restrict__,const char *__restrict__,size_t) | | __strlcpy | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const EVP_MD *,const unsigned char *,size_t) | | OSSL_STORE_SEARCH_by_key_fingerprint | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const OSSL_CMP_CTX *,char *,size_t) | | OSSL_CMP_CTX_snprint_PKIStatus | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const OSSL_CMP_PKISI *,char *,size_t) | | OSSL_CMP_snprint_PKIStatusInfo | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const OSSL_NAMEMAP *,int,size_t) | | ossl_namemap_num2name | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const OSSL_PARAM *,char **,size_t) | | OSSL_PARAM_get_utf8_string | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const SSL *,unsigned char *,size_t) | | SSL_get_client_random | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const SSL *,unsigned char *,size_t) | | SSL_get_server_random | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | __libc_ns_makecanon | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | __realpath_chk | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | getpass_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | ns_makecanon | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,const char *,size_t) | | c_strncasecmp | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,const char *,unsigned long) | | __ngettext | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,void *,size_t) | | uv__random_readpath | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const charmap_t *,const char *,size_t) | | charmap_find_symbol | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const charmap_t *,const char *,size_t) | | charmap_find_value | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const repertoire_t *,const char *,size_t) | | repertoire_find_value | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const unsigned char *,char *,size_t) | | ___ns_name_ntop | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 1 | -| vector.cpp:454:7:454:12 | memcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const void *,size_t,size_t) | | support_blob_repeat_allocate | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const void *,size_t,size_t) | | support_blob_repeat_allocate_shared | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const_nis_name,char *,size_t) | | nis_domain_of_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const_nis_name,char *,size_t) | | nis_leaf_of_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const_nis_name,char *,size_t) | | nis_name_of_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | -| vector.cpp:454:7:454:12 | memcpy | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | -| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | -| vector.cpp:454:7:454:12 | memcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | -| vector.cpp:454:7:454:12 | memcpy | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int *,int *,size_t) | | EVP_PBE_get | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | Curl_strerror | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | __strerror_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | __ttyname_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | uv_err_name_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | uv_strerror_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,const void *,size_t) | | _nl_intern_locale_data | 1 | -| vector.cpp:454:7:454:12 | memcpy | (int,const void *,size_t) | | _nl_intern_locale_data | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,const void *,size_t) | | writeall | 1 | -| vector.cpp:454:7:454:12 | memcpy | (int,const void *,size_t) | | writeall | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,void *,size_t) | | __readall | 2 | -| vector.cpp:454:7:454:12 | memcpy | (locale_file *,const uint32_t *,size_t) | | add_locale_uint32_array | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | -| vector.cpp:454:7:454:12 | memcpy | (ns_rr_cursor *,const unsigned char *,size_t) | | __ns_rr_cursor_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (pthread_attr_t *,void *,size_t) | | __pthread_attr_setstack | 2 | -| vector.cpp:454:7:454:12 | memcpy | (scratch_buffer *,size_t,size_t) | | __libc_scratch_buffer_set_array_size | 2 | -| vector.cpp:454:7:454:12 | memcpy | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | -| vector.cpp:454:7:454:12 | memcpy | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | -| vector.cpp:454:7:454:12 | memcpy | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | -| vector.cpp:454:7:454:12 | memcpy | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | -| vector.cpp:454:7:454:12 | memcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 1 | -| vector.cpp:454:7:454:12 | memcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | -| vector.cpp:454:7:454:12 | memcpy | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | -| vector.cpp:454:7:454:12 | memcpy | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | -| vector.cpp:454:7:454:12 | memcpy | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | -| vector.cpp:454:7:454:12 | memcpy | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | -| vector.cpp:454:7:454:12 | memcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | -| vector.cpp:454:7:454:12 | memcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | -| vector.cpp:454:7:454:12 | memcpy | (unsigned int,char *,size_t) | | __initstate | 2 | -| vector.cpp:454:7:454:12 | memcpy | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | -| vector.cpp:454:7:454:12 | memcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | -| vector.cpp:454:7:454:12 | memcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | -| vector.cpp:454:7:454:12 | memcpy | (void **,size_t,size_t) | | __posix_memalign | 2 | -| vector.cpp:454:7:454:12 | memcpy | (void *,size_t,size_t) | | Curl_hash_str | 2 | -| vector.cpp:454:7:454:12 | memcpy | (void *,size_t,size_t) | | __libc_reallocarray | 2 | -| vector.cpp:454:7:454:12 | memcpy | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | -| vector.cpp:454:7:454:12 | memcpy | (wchar_t *,const wchar_t *,size_t) | | __wmemcpy | 2 | -| vector.cpp:454:7:454:12 | memcpy | (wchar_t *,const wchar_t *,size_t) | | __wmemmove | 2 | -| vector.cpp:454:7:454:12 | memcpy | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcat | 2 | -| vector.cpp:454:7:454:12 | memcpy | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcpy | 2 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (BIO *,const EVP_PKEY *,int,pem_password_cb *,void *) | | i2b_PVK_bio | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (EVP_CIPHER_INFO *,unsigned char *,long *,pem_password_cb *,void *) | | PEM_do_header | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (EVP_PKEY *,EVP_KEYMGMT *,void *,OSSL_CALLBACK *,void *) | | evp_keymgmt_util_gen | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (EVP_PKEY_CTX *,int,int,int,void *) | | RSA_pkey_ctx_ctrl | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (OSSL_QUIC_TX_PACKETISER *,const unsigned char *,size_t,ossl_quic_initial_token_free_fn *,void *) | | ossl_quic_tx_packetiser_set_initial_token | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (char *,size_t,size_t *,const OSSL_PARAM[],void *) | | ossl_pw_passphrase_callback_dec | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (char *,size_t,size_t *,const OSSL_PARAM[],void *) | | ossl_pw_passphrase_callback_enc | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const BIGNUM *,int,..(*)(..),BN_CTX *,void *) | | BN_is_prime | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const char **,const char **,bool *,..(*)(..),void *) | | _dl_catch_error | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const char *,const UI_METHOD *,void *,OSSL_STORE_post_process_info_fn,void *) | | OSSL_STORE_open | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const char *,int,int,..(*)(..),void *) | | CONF_parse_list | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (sqlite3 *,const char *,const char *,..(*)(..),void *) | | recoverInit | 4 | -| zmq.cpp:17:6:17:13 | test_zmc | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BIO *,X509 *,unsigned long) | | ossl_x509_print_ex_brief | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BIO *,X509_CRL *,unsigned long) | | X509_CRL_print_ex | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BIO *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BLAKE2B_CTX *,const void *,size_t) | | ossl_blake2b_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_personal | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_salt | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BLAKE2S_CTX *,const void *,size_t) | | ossl_blake2s_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_personal | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_salt | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (CCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ccm128_aad | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (CCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ccm128_tag | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FFC_PARAMS *,const unsigned char *,size_t) | | ossl_ffc_params_set_seed | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const char *,size_t) | | _IO_new_do_write | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const void *,size_t) | | _IO_default_xsputn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const void *,size_t) | | _IO_new_file_xsputn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const void *,size_t) | | _IO_wdefault_xsputn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const void *,size_t) | | _IO_wfile_xsputn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const void *,size_t) | | __printf_buffer_as_file_xsputn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const void *,size_t) | | __wprintf_buffer_as_file_xsputn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,void *,size_t) | | _IO_default_xsgetn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,void *,size_t) | | _IO_file_xsgetn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,void *,size_t) | | _IO_file_xsgetn_mmap | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,void *,size_t) | | _IO_wdefault_xsgetn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_aad | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_setiv | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (GCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_gcm128_tag | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (MD5_CTX *,const void *,size_t) | | MD5_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (MD5_SHA1_CTX *,const void *,size_t) | | ossl_md5_sha1_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_JSON_ENC *,const char *,size_t) | | ossl_json_str_len | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_JSON_ENC *,const void *,size_t) | | ossl_json_str_hex | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_entropy | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_user_entropy | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_ptr | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string_or_ptr | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_PARAM *,void *,size_t) | | ossl_param_set_secure_block | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_default | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_multiblock | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (POLY1305 *,const unsigned char *,size_t) | | Poly1305_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_generic_initiv | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_hw_tdes_ede3_initkey | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (PROV_GCM_CTX *,const unsigned char *,size_t) | | ossl_gcm_aad_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (QUIC_PN,unsigned char *,size_t) | | ossl_quic_wire_encode_pkt_hdr_pn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (QUIC_RXFC *,OSSL_STATM *,size_t) | | ossl_quic_rstream_new | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (QUIC_TLS *,const unsigned char *,size_t) | | ossl_quic_tls_set_transport_params | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (RAND_POOL *,const unsigned char *,size_t) | | ossl_rand_pool_adin_mix_in | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (RAND_POOL *,size_t,size_t) | | ossl_rand_pool_add_end | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (RIPEMD160_CTX *,const void *,size_t) | | RIPEMD160_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (RIPEMD160_CTX *,const void *,size_t) | | ripemd160_block_data_order | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT **,const unsigned char **,size_t) | | o2i_SCT | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT *,const unsigned char **,size_t) | | o2i_SCT_signature | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT *,const unsigned char *,size_t) | | SCT_set1_extensions | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT *,const unsigned char *,size_t) | | SCT_set1_log_id | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT *,const unsigned char *,size_t) | | SCT_set1_signature | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT *,unsigned char *,size_t) | | SCT_set0_extensions | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT *,unsigned char *,size_t) | | SCT_set0_log_id | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT *,unsigned char *,size_t) | | SCT_set0_signature | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SHA256_CTX *,const void *,size_t) | | SHA224_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SHA256_CTX *,const void *,size_t) | | SHA256_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SHA512_CTX *,const void *,size_t) | | SHA384_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SHA512_CTX *,const void *,size_t) | | SHA512_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SHA_CTX *,const void *,size_t) | | SHA1_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SIPHASH *,const unsigned char *,size_t) | | SipHash_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SIPHASH *,unsigned char *,size_t) | | SipHash_Final | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SIV128_CONTEXT *,const unsigned char *,size_t) | | ossl_siv128_set_tag | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SIV128_CONTEXT *,unsigned char *,size_t) | | ossl_siv128_get_tag | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_priv | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_pub | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SM3_CTX *,const void *,size_t) | | ossl_sm3_block_data_order | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SM3_CTX *,const void *,size_t) | | ossl_sm3_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL *,const unsigned char *,size_t) | | SSL_set1_client_cert_type | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL *,const unsigned char *,size_t) | | SSL_set1_server_cert_type | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL *,const unsigned char *,size_t) | | SSL_set_quic_tls_transport_params | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL *,size_t,size_t) | | SSL_set_block_padding_ex | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_CONNECTION *,TLS_RECORD *,size_t) | | ssl_release_record | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_CONNECTION *,const unsigned char *,size_t) | | lookup_sess_in_cache | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_client_cert_type | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_server_cert_type | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_CTX *,size_t,size_t) | | SSL_CTX_set_block_padding_ex | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_alpn_selected | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_master_key | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_SESSION *,const void *,size_t) | | SSL_SESSION_set1_ticket_appdata | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (Strtab *,const char *,size_t) | | strtabadd | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_BitUpdate | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WPACKET *,BUF_MEM *,size_t) | | WPACKET_init_len | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WPACKET *,const unsigned char *,size_t) | | ossl_quic_wire_encode_frame_new_token | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WPACKET *,const void *,size_t) | | WPACKET_memcpy | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WPACKET *,int,size_t) | | WPACKET_memset | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WPACKET *,uint64_t,size_t) | | WPACKET_put_bytes__ | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WPACKET *,unsigned char *,size_t) | | WPACKET_init_der | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WPACKET *,unsigned char *,size_t) | | dtls_raw_hello_verify_request | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_add1_host | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (__printf_buffer *,char,size_t) | | __printf_buffer_pad_1 | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (__printf_buffer *,const char *,size_t) | | __printf_buffer_write | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (__printf_buffer_snprintf *,char *,size_t) | | __printf_buffer_snprintf_init | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (__printf_buffer_snprintf *,char *,size_t) | | __printf_buffer_snprintf_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (__wprintf_buffer *,const wchar_t *,size_t) | | __wprintf_buffer_write | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (__wprintf_buffer *,wchar_t,size_t) | | __wprintf_buffer_pad_1 | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (alloc_buffer,const void *,size_t) | | __libc_alloc_buffer_copy_bytes | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (argp_fmtstream *,argp_fmtstream_t,size_t) | | __argp_fmtstream_ensure | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (argp_fmtstream_t,const char *,size_t) | | __argp_fmtstream_write | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char **,size_t *,size_t) | | Curl_str_number | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | Curl_strntolower | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | Curl_strntoupper | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | uv__strscpy | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *,size_t,size_t) | | __getcwd_chk | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *__restrict__,const char *__restrict__,size_t) | | __strlcat | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *__restrict__,const char *__restrict__,size_t) | | __strlcpy | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const EVP_MD *,const unsigned char *,size_t) | | OSSL_STORE_SEARCH_by_key_fingerprint | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const OSSL_CMP_CTX *,char *,size_t) | | OSSL_CMP_CTX_snprint_PKIStatus | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const OSSL_CMP_CTX *,char *,size_t) | | OSSL_CMP_CTX_snprint_PKIStatus | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const OSSL_CMP_PKISI *,char *,size_t) | | OSSL_CMP_snprint_PKIStatusInfo | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const OSSL_CMP_PKISI *,char *,size_t) | | OSSL_CMP_snprint_PKIStatusInfo | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const OSSL_NAMEMAP *,int,size_t) | | ossl_namemap_num2name | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const OSSL_PARAM *,char **,size_t) | | OSSL_PARAM_get_utf8_string | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const SSL *,unsigned char *,size_t) | | SSL_get_client_random | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const SSL *,unsigned char *,size_t) | | SSL_get_server_random | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | __libc_ns_makecanon | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | __libc_ns_makecanon | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | __realpath_chk | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | __realpath_chk | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | getpass_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | getpass_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | ns_makecanon | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | ns_makecanon | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,const char *,size_t) | | c_strncasecmp | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,const char *,unsigned long) | | __ngettext | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,void *,size_t) | | uv__random_readpath | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const charmap_t *,const char *,size_t) | | charmap_find_symbol | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const charmap_t *,const char *,size_t) | | charmap_find_value | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const repertoire_t *,const char *,size_t) | | repertoire_find_value | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr *,char *,size_t) | | uv_ip_name | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const unsigned char *,char *,size_t) | | ___ns_name_ntop | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const unsigned char *,char *,size_t) | | ___ns_name_ntop | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const void *,size_t,size_t) | | support_blob_repeat_allocate | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const void *,size_t,size_t) | | support_blob_repeat_allocate_shared | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const_nis_name,char *,size_t) | | nis_domain_of_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const_nis_name,char *,size_t) | | nis_domain_of_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const_nis_name,char *,size_t) | | nis_leaf_of_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const_nis_name,char *,size_t) | | nis_leaf_of_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const_nis_name,char *,size_t) | | nis_name_of_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const_nis_name,char *,size_t) | | nis_name_of_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int *,int *,size_t) | | EVP_PBE_get | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | Curl_strerror | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | Curl_strerror | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | __strerror_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | __strerror_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | __ttyname_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | __ttyname_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_err_name_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_err_name_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_strerror_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_strerror_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,const void *,size_t) | | _nl_intern_locale_data | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,const void *,size_t) | | writeall | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,void *,size_t) | | __readall | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (locale_file *,const uint32_t *,size_t) | | add_locale_uint32_array | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (ns_rr_cursor *,const unsigned char *,size_t) | | __ns_rr_cursor_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (pthread_attr_t *,void *,size_t) | | __pthread_attr_setstack | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (scratch_buffer *,size_t,size_t) | | __libc_scratch_buffer_set_array_size | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned int,char *,size_t) | | __initstate | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned int,char *,size_t) | | __initstate | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (void **,size_t,size_t) | | __posix_memalign | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (void *,size_t,size_t) | | Curl_hash_str | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (void *,size_t,size_t) | | __libc_reallocarray | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (wchar_t *,const wchar_t *,size_t) | | __wmemcpy | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (wchar_t *,const wchar_t *,size_t) | | __wmemmove | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcat | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcpy | 2 | +| atl.cpp:71:5:71:17 | _U_STRINGorID | ATL | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | ATL | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:411:5:411:12 | CComBSTR | ATL | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | +| atl.cpp:413:5:413:12 | CComBSTR | ATL | (int,LPCOLESTR) | CComBSTR | CComBSTR | 0 | +| atl.cpp:413:5:413:12 | CComBSTR | ATL | (int,LPCOLESTR) | CComBSTR | CComBSTR | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | ATL | (int,LPCSTR) | CComBSTR | CComBSTR | 0 | +| atl.cpp:414:5:414:12 | CComBSTR | ATL | (int,LPCSTR) | CComBSTR | CComBSTR | 1 | +| atl.cpp:415:5:415:12 | CComBSTR | ATL | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | ATL | (LPCSTR) | CComBSTR | CComBSTR | 0 | +| atl.cpp:417:5:417:12 | CComBSTR | ATL | (CComBSTR &&) | CComBSTR | CComBSTR | 0 | +| atl.cpp:420:13:420:18 | Append | ATL | (const CComBSTR &) | CComBSTR | Append | 0 | +| atl.cpp:421:13:421:18 | Append | ATL | (wchar_t) | CComBSTR | Append | 0 | +| atl.cpp:422:13:422:18 | Append | ATL | (char) | CComBSTR | Append | 0 | +| atl.cpp:423:13:423:18 | Append | ATL | (LPCOLESTR) | CComBSTR | Append | 0 | +| atl.cpp:424:13:424:18 | Append | ATL | (LPCSTR) | CComBSTR | Append | 0 | +| atl.cpp:425:13:425:18 | Append | ATL | (LPCOLESTR,int) | CComBSTR | Append | 0 | +| atl.cpp:425:13:425:18 | Append | ATL | (LPCOLESTR,int) | CComBSTR | Append | 1 | +| atl.cpp:440:10:440:19 | LoadString | ATL | (HINSTANCE,UINT) | CComBSTR | LoadString | 0 | +| atl.cpp:440:10:440:19 | LoadString | ATL | (HINSTANCE,UINT) | CComBSTR | LoadString | 1 | +| atl.cpp:441:10:441:19 | LoadString | ATL | (UINT) | CComBSTR | LoadString | 0 | +| atl.cpp:540:5:540:17 | CComSafeArray | ATL | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | +| atl.cpp:544:13:544:15 | Add | ATL | (const SAFEARRAY *) | CComSafeArray | Add | 0 | +| atl.cpp:546:13:546:15 | Add | ATL | (const T &,BOOL) | CComSafeArray | Add | 0 | +| atl.cpp:546:13:546:15 | Add | ATL | (const T &,BOOL) | CComSafeArray | Add | 1 | +| atl.cpp:915:5:915:18 | CSimpleStringT | ATL | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | +| atl.cpp:915:5:915:18 | CSimpleStringT | ATL | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | +| atl.cpp:915:5:915:18 | CSimpleStringT | ATL | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 2 | +| atl.cpp:916:5:916:18 | CSimpleStringT | ATL | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | +| atl.cpp:916:5:916:18 | CSimpleStringT | ATL | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | +| atl.cpp:917:5:917:18 | CSimpleStringT | ATL | (const CSimpleStringT &) | CSimpleStringT | CSimpleStringT | 0 | +| atl.cpp:927:17:927:25 | CopyChars | ATL | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | +| atl.cpp:927:17:927:25 | CopyChars | ATL | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | +| atl.cpp:927:17:927:25 | CopyChars | ATL | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | +| atl.cpp:928:17:928:25 | CopyChars | ATL | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | +| atl.cpp:928:17:928:25 | CopyChars | ATL | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | +| atl.cpp:928:17:928:25 | CopyChars | ATL | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | +| atl.cpp:928:17:928:25 | CopyChars | ATL | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 3 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | ATL | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 0 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | ATL | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 1 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | ATL | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | +| atl.cpp:1036:5:1036:12 | CStringT | ATL | (const VARIANT &) | CStringT | CStringT | 0 | +| atl.cpp:1037:5:1037:12 | CStringT | ATL | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1037:5:1037:12 | CStringT | ATL | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1037:5:1037:12 | CStringT | ATL | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 0 | +| atl.cpp:1037:5:1037:12 | CStringT | ATL | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1037:5:1037:12 | CStringT | ATL | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1038:5:1038:12 | CStringT | ATL | (const CStringT &) | CStringT | CStringT | 0 | +| atl.cpp:1042:5:1042:12 | CStringT | ATL | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 0 | +| atl.cpp:1042:5:1042:12 | CStringT | ATL | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1042:5:1042:12 | CStringT | ATL | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1042:5:1042:12 | CStringT | ATL | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1042:5:1042:12 | CStringT | ATL | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1043:5:1043:12 | CStringT | ATL | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1043:5:1043:12 | CStringT | ATL | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 0 | +| atl.cpp:1043:5:1043:12 | CStringT | ATL | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1043:5:1043:12 | CStringT | ATL | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1043:5:1043:12 | CStringT | ATL | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1045:5:1045:12 | CStringT | ATL | (char *) | CStringT | CStringT | 0 | +| atl.cpp:1046:5:1046:12 | CStringT | ATL | (unsigned char *) | CStringT | CStringT | 0 | +| atl.cpp:1047:5:1047:12 | CStringT | ATL | (wchar_t *) | CStringT | CStringT | 0 | +| atl.cpp:1049:5:1049:12 | CStringT | ATL | (char,int) | CStringT | CStringT | 0 | +| atl.cpp:1049:5:1049:12 | CStringT | ATL | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | ATL | (const XCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | ATL | (const YCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | ATL | (wchar_t,int) | CStringT | CStringT | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | ATL | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | ATL | (const XCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | ATL | (const YCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | ATL | (wchar_t,int) | CStringT | CStringT | 0 | +| atl.cpp:1050:5:1050:12 | CStringT | ATL | (wchar_t,int) | CStringT | CStringT | 1 | +| atl.cpp:1061:10:1061:21 | AppendFormat | ATL | (PCXSTR,...) | CStringT | AppendFormat | 0 | +| atl.cpp:1061:10:1061:21 | AppendFormat | ATL | (PCXSTR,...) | CStringT | AppendFormat | 1 | +| atl.cpp:1061:10:1061:21 | AppendFormat | ATL | (UINT,...) | CStringT | AppendFormat | 1 | +| atl.cpp:1062:10:1062:21 | AppendFormat | ATL | (PCXSTR,...) | CStringT | AppendFormat | 1 | +| atl.cpp:1062:10:1062:21 | AppendFormat | ATL | (UINT,...) | CStringT | AppendFormat | 0 | +| atl.cpp:1062:10:1062:21 | AppendFormat | ATL | (UINT,...) | CStringT | AppendFormat | 1 | +| atl.cpp:1070:9:1070:14 | Insert | ATL | (int,PCXSTR) | CStringT | Insert | 0 | +| atl.cpp:1070:9:1070:14 | Insert | ATL | (int,PCXSTR) | CStringT | Insert | 1 | +| atl.cpp:1071:9:1071:14 | Insert | ATL | (int,XCHAR) | CStringT | Insert | 0 | +| atl.cpp:1071:9:1071:14 | Insert | ATL | (int,XCHAR) | CStringT | Insert | 1 | +| atl.cpp:1081:9:1081:15 | Replace | ATL | (PCXSTR,PCXSTR) | CStringT | Replace | 0 | +| atl.cpp:1081:9:1081:15 | Replace | ATL | (PCXSTR,PCXSTR) | CStringT | Replace | 1 | +| atl.cpp:1082:9:1082:15 | Replace | ATL | (XCHAR,XCHAR) | CStringT | Replace | 0 | +| atl.cpp:1082:9:1082:15 | Replace | ATL | (XCHAR,XCHAR) | CStringT | Replace | 1 | +| atl.cpp:1286:5:1286:10 | ComPtr | Microsoft::WRL | (const ComPtr &) | ComPtr | ComPtr | 0 | +| atl.cpp:1287:5:1287:10 | ComPtr | Microsoft::WRL | (ComPtr &&) | ComPtr | ComPtr | 0 | +| atl.cpp:1290:5:1290:10 | ComPtr | Microsoft::WRL | (T *) | ComPtr | ComPtr | 0 | +| atl.cpp:1290:5:1290:10 | ComPtr | Microsoft::WRL | (T *) | ComPtr | ComPtr | 0 | +| atl.cpp:1301:13:1301:18 | CopyTo | Microsoft::WRL | (T **) | ComPtr | CopyTo | 0 | +| atl.cpp:1303:13:1303:18 | CopyTo | Microsoft::WRL | (REFIID,void **) | ComPtr | CopyTo | 0 | +| atl.cpp:1303:13:1303:18 | CopyTo | Microsoft::WRL | (REFIID,void **) | ComPtr | CopyTo | 1 | +| atl.cpp:1306:13:1306:18 | CopyTo | Microsoft::WRL | (T **) | ComPtr | CopyTo | 0 | +| atl.cpp:1328:13:1328:21 | operator= | Microsoft::WRL | (T *) | ComPtr | operator= | 0 | +| atl.cpp:1330:13:1330:21 | operator= | Microsoft::WRL | (U *) | ComPtr | operator= | 0 | +| atl.cpp:1331:13:1331:21 | operator= | Microsoft::WRL | (const ComPtr &) | ComPtr | operator= | 0 | +| atl.cpp:1333:13:1333:21 | operator= | Microsoft::WRL | (const ComPtr &) | ComPtr | operator= | 0 | +| atl.cpp:1334:13:1334:21 | operator= | Microsoft::WRL | (ComPtr &&) | ComPtr | operator= | 0 | +| atl.cpp:1336:13:1336:21 | operator= | Microsoft::WRL | (ComPtr &&) | ComPtr | operator= | 0 | +| stl.h:294:12:294:17 | vector | std | (const vector &,const Allocator &) | vector | vector | 1 | +| stl.h:294:12:294:17 | vector | std | (const vector &,const Allocator &) | vector | vector | 1 | +| stl.h:294:12:294:17 | vector | std | (const vector &,const Allocator &) | vector | vector | 1 | +| stl.h:294:12:294:17 | vector | std | (vector &&,const Allocator &) | vector | vector | 1 | +| stl.h:294:12:294:17 | vector | std | (vector &&,const Allocator &) | vector | vector | 1 | +| stl.h:294:12:294:17 | vector | std | (vector &&,const Allocator &) | vector | vector | 1 | +| stl.h:295:3:295:8 | vector | std | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | +| stl.h:295:3:295:8 | vector | std | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | +| stl.h:295:3:295:8 | vector | std | (size_type,const T &,const Allocator &) | vector | vector | 0 | +| stl.h:295:3:295:8 | vector | std | (size_type,const T &,const Allocator &) | vector | vector | 0 | +| stl.h:295:3:295:8 | vector | std | (size_type,const T &,const Allocator &) | vector | vector | 1 | +| stl.h:295:3:295:8 | vector | std | (size_type,const T &,const Allocator &) | vector | vector | 1 | +| stl.h:295:3:295:8 | vector | std | (size_type,const T &,const Allocator &) | vector | vector | 2 | +| stl.h:295:3:295:8 | vector | std | (size_type,const T &,const Allocator &) | vector | vector | 2 | +| stl.h:296:101:296:106 | vector | std | (InputIterator,InputIterator,const Allocator &) | vector | vector | 0 | +| stl.h:296:101:296:106 | vector | std | (InputIterator,InputIterator,const Allocator &) | vector | vector | 1 | +| stl.h:296:101:296:106 | vector | std | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | +| stl.h:296:101:296:106 | vector | std | (size_type,const T &,const Allocator &) | vector | vector | 2 | +| stl.h:303:106:303:111 | assign | std | (InputIt,InputIt) | vector | assign | 0 | +| stl.h:303:106:303:111 | assign | std | (InputIt,InputIt) | vector | assign | 1 | +| stl.h:306:8:306:13 | assign | std | (size_type,const T &) | vector | assign | 0 | +| stl.h:306:8:306:13 | assign | std | (size_type,const T &) | vector | assign | 0 | +| stl.h:306:8:306:13 | assign | std | (size_type,const T &) | vector | assign | 0 | +| stl.h:306:8:306:13 | assign | std | (size_type,const T &) | vector | assign | 1 | +| stl.h:306:8:306:13 | assign | std | (size_type,const T &) | vector | assign | 1 | +| stl.h:306:8:306:13 | assign | std | (size_type,const T &) | vector | assign | 1 | +| stl.h:331:12:331:17 | insert | std | (const_iterator,T &&) | vector | insert | 0 | +| stl.h:331:12:331:17 | insert | std | (const_iterator,T &&) | vector | insert | 1 | +| stl.h:333:42:333:47 | insert | std | (const_iterator,InputIt,InputIt) | vector | insert | 0 | +| stl.h:333:42:333:47 | insert | std | (const_iterator,InputIt,InputIt) | vector | insert | 0 | +| stl.h:333:42:333:47 | insert | std | (const_iterator,InputIt,InputIt) | vector | insert | 1 | +| stl.h:333:42:333:47 | insert | std | (const_iterator,InputIt,InputIt) | vector | insert | 1 | +| stl.h:333:42:333:47 | insert | std | (const_iterator,InputIt,InputIt) | vector | insert | 2 | +| stl.h:333:42:333:47 | insert | std | (const_iterator,InputIt,InputIt) | vector | insert | 2 | +| stl.h:678:33:678:38 | format | std | (format_string,Args &&) | | format | 0 | +| stl.h:678:33:678:38 | format | std | (format_string,Args &&) | | format | 0 | +| stl.h:678:33:678:38 | format | std | (format_string,Args &&) | | format | 1 | +| stl.h:678:33:678:38 | format | std | (format_string,Args &&) | | format | 1 | +| taint.cpp:847:5:847:11 | toupper | | (int) | | toupper | 0 | +| taint.cpp:848:5:848:11 | tolower | | (int) | | tolower | 0 | getSignatureParameterName | (..(*)(..)) | | ASN1_SCTX_new | 0 | ..(*)(..) | | (..(*)(..)) | | ossl_pqueue_new | 0 | ..(*)(..) | @@ -46149,17 +26843,41 @@ getParameterTypeName | atl.cpp:71:5:71:17 | _U_STRINGorID | 0 | unsigned int | | atl.cpp:72:5:72:17 | _U_STRINGorID | 0 | LPCTSTR | | atl.cpp:72:5:72:17 | _U_STRINGorID | 0 | const char * | +| atl.cpp:96:5:96:10 | CA2AEX | 0 | LPCSTR | +| atl.cpp:96:5:96:10 | CA2AEX | 0 | const char * | +| atl.cpp:96:5:96:10 | CA2AEX | 1 | UINT | +| atl.cpp:96:5:96:10 | CA2AEX | 1 | unsigned int | +| atl.cpp:97:5:97:10 | CA2AEX | 0 | LPCSTR | +| atl.cpp:97:5:97:10 | CA2AEX | 0 | const char * | +| atl.cpp:124:5:124:11 | CA2CAEX | 0 | LPCSTR | +| atl.cpp:124:5:124:11 | CA2CAEX | 0 | const char * | +| atl.cpp:124:5:124:11 | CA2CAEX | 1 | UINT | +| atl.cpp:124:5:124:11 | CA2CAEX | 1 | unsigned int | +| atl.cpp:125:5:125:11 | CA2CAEX | 0 | LPCSTR | +| atl.cpp:125:5:125:11 | CA2CAEX | 0 | const char * | +| atl.cpp:149:5:149:10 | CA2WEX | 0 | LPCSTR | +| atl.cpp:149:5:149:10 | CA2WEX | 0 | const char * | +| atl.cpp:149:5:149:10 | CA2WEX | 1 | UINT | +| atl.cpp:149:5:149:10 | CA2WEX | 1 | unsigned int | +| atl.cpp:150:5:150:10 | CA2WEX | 0 | LPCSTR | +| atl.cpp:150:5:150:10 | CA2WEX | 0 | const char * | | atl.cpp:196:12:196:14 | Add | 0 | INARGTYPclass:0 | | atl.cpp:198:12:198:17 | Append | 0 | const CAtlArray & | | atl.cpp:199:10:199:13 | Copy | 0 | const CAtlArray & | +| atl.cpp:201:8:201:12 | GetAt | 0 | decltype(...) | | atl.cpp:201:8:201:12 | GetAt | 0 | size_t | +| atl.cpp:205:10:205:22 | InsertArrayAt | 0 | decltype(...) | | atl.cpp:205:10:205:22 | InsertArrayAt | 0 | size_t | | atl.cpp:205:10:205:22 | InsertArrayAt | 1 | const CAtlArray * | +| atl.cpp:206:10:206:17 | InsertAt | 0 | decltype(...) | | atl.cpp:206:10:206:17 | InsertAt | 0 | size_t | | atl.cpp:206:10:206:17 | InsertAt | 1 | INARGTYPclass:0 | +| atl.cpp:206:10:206:17 | InsertAt | 2 | decltype(...) | | atl.cpp:206:10:206:17 | InsertAt | 2 | size_t | +| atl.cpp:211:10:211:18 | SetAtGrow | 0 | decltype(...) | | atl.cpp:211:10:211:18 | SetAtGrow | 0 | size_t | | atl.cpp:211:10:211:18 | SetAtGrow | 1 | INARGTYPclass:0 | +| atl.cpp:213:8:213:17 | operator[] | 0 | decltype(...) | | atl.cpp:213:8:213:17 | operator[] | 0 | size_t | | atl.cpp:259:5:259:12 | CAtlList | 0 | UINT | | atl.cpp:259:5:259:12 | CAtlList | 0 | UINT | @@ -46179,6 +26897,8 @@ getParameterTypeName | atl.cpp:267:14:267:17 | Find | 1 | POSITION | | atl.cpp:267:14:267:17 | Find | 1 | __POSITION * | | atl.cpp:267:14:267:17 | Find | 1 | __POSITION * | +| atl.cpp:268:14:268:22 | FindIndex | 0 | decltype(...) | +| atl.cpp:268:14:268:22 | FindIndex | 0 | decltype(...) | | atl.cpp:268:14:268:22 | FindIndex | 0 | size_t | | atl.cpp:268:14:268:22 | FindIndex | 0 | size_t | | atl.cpp:269:8:269:12 | GetAt | 0 | POSITION | @@ -46359,6 +27079,7 @@ getParameterTypeName | atl.cpp:927:17:927:25 | CopyChars | 2 | int | | atl.cpp:928:17:928:25 | CopyChars | 0 | XCHAR * | | atl.cpp:928:17:928:25 | CopyChars | 0 | char * | +| atl.cpp:928:17:928:25 | CopyChars | 1 | decltype(...) | | atl.cpp:928:17:928:25 | CopyChars | 1 | size_t | | atl.cpp:928:17:928:25 | CopyChars | 2 | const XCHAR * | | atl.cpp:928:17:928:25 | CopyChars | 2 | const char * | @@ -46380,6 +27101,10 @@ getParameterTypeName | atl.cpp:940:10:940:18 | SetString | 0 | PCXSTR | | atl.cpp:940:10:940:18 | SetString | 0 | const class:0 * | | atl.cpp:942:11:942:20 | operator[] | 0 | int | +| atl.cpp:1018:10:1018:10 | operator= | 0 | MakeOther && | +| atl.cpp:1018:10:1018:10 | operator= | 0 | const MakeOther & | +| atl.cpp:1023:10:1023:10 | operator= | 0 | MakeOther && | +| atl.cpp:1023:10:1023:10 | operator= | 0 | const MakeOther & | | atl.cpp:1036:5:1036:12 | CStringT | 0 | const VARIANT & | | atl.cpp:1036:5:1036:12 | CStringT | 0 | const tagVARIANT & | | atl.cpp:1037:5:1037:12 | CStringT | 0 | const VARIANT & | @@ -46583,6 +27308,8 @@ getParameterTypeName | standalone_iterators.cpp:20:7:20:7 | operator= | 0 | const int_iterator_by_trait & | | standalone_iterators.cpp:20:7:20:7 | operator= | 0 | int_iterator_by_trait && | | standalone_iterators.cpp:23:27:23:36 | operator++ | 0 | int | +| standalone_iterators.cpp:28:13:28:13 | operator= | 0 | const iterator_traits & | +| standalone_iterators.cpp:28:13:28:13 | operator= | 0 | iterator_traits && | | standalone_iterators.cpp:36:7:36:7 | operator= | 0 | const non_iterator & | | standalone_iterators.cpp:36:7:36:7 | operator= | 0 | non_iterator && | | standalone_iterators.cpp:39:18:39:27 | operator++ | 0 | int | @@ -46594,6 +27321,8 @@ getParameterTypeName | standalone_iterators.cpp:66:30:66:39 | operator++ | 0 | int | | standalone_iterators.cpp:68:30:68:39 | operator-- | 0 | int | | standalone_iterators.cpp:70:31:70:39 | operator= | 0 | int | +| standalone_iterators.cpp:74:13:74:13 | operator= | 0 | const iterator_traits & | +| standalone_iterators.cpp:74:13:74:13 | operator= | 0 | iterator_traits && | | standalone_iterators.cpp:82:7:82:7 | container | 0 | const container & | | standalone_iterators.cpp:82:7:82:7 | container | 0 | container && | | standalone_iterators.cpp:82:7:82:7 | operator= | 0 | const container & | @@ -47303,6 +28032,18 @@ getParameterTypeName | taint.cpp:837:5:837:11 | fprintf | 0 | FILE * | | taint.cpp:837:5:837:11 | fprintf | 1 | const char * | | taint.cpp:837:5:837:11 | fprintf | 2 | ... | +| taint.cpp:847:5:847:11 | toupper | 0 | int | +| taint.cpp:848:5:848:11 | tolower | 0 | int | +| taint.cpp:859:8:859:12 | iconv | 0 | iconv_t | +| taint.cpp:859:8:859:12 | iconv | 0 | int | +| taint.cpp:859:8:859:12 | iconv | 1 | char ** | +| taint.cpp:859:8:859:12 | iconv | 2 | size_t * | +| taint.cpp:859:8:859:12 | iconv | 2 | unsigned long * | +| taint.cpp:859:8:859:12 | iconv | 3 | char ** | +| taint.cpp:859:8:859:12 | iconv | 4 | size_t * | +| taint.cpp:859:8:859:12 | iconv | 4 | unsigned long * | +| taint.cpp:861:6:861:15 | test_iconv | 0 | size_t | +| taint.cpp:861:6:861:15 | test_iconv | 0 | unsigned long | | thread.cpp:4:6:4:9 | sink | 0 | int | | thread.cpp:6:8:6:8 | operator= | 0 | S && | | thread.cpp:6:8:6:8 | operator= | 0 | const S & | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.ql b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.ql index 32c0e59c158d..dc0027fcc6f2 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.ql +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.ql @@ -2,7 +2,7 @@ import cpp import semmle.code.cpp.dataflow.ExternalFlow import ExternalFlowDebug -query predicate signatureMatches = signatureMatches_debug/5; +query predicate signatureMatches = signatureMatches_debug/6; query predicate getSignatureParameterName = getSignatureParameterName_debug/4; diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected index bc8f42dafc3f..cfebbd974c00 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected @@ -485,197 +485,529 @@ | test.c:411:59:411:59 | k | 0.205191 | | test.c:411:63:411:63 | l | 0.132041 | | test.c:413:10:413:15 | output | 1.842468 | -| test.c:418:20:418:20 | x | 0 | -| test.c:418:30:418:30 | x | 0 | -| test.c:421:3:421:4 | y1 | 0 | -| test.c:421:11:421:11 | y | 0 | -| test.c:421:14:421:14 | y | 1 | -| test.c:422:3:422:4 | y2 | 0 | -| test.c:422:9:422:9 | y | 1 | -| test.c:422:14:422:14 | y | 2 | -| test.c:422:22:422:22 | y | 5 | -| test.c:423:10:423:11 | y1 | 1 | -| test.c:423:15:423:16 | y2 | 5 | -| test.c:431:3:431:3 | i | -2147483648 | -| test.c:432:7:432:7 | i | 10 | -| test.c:434:3:434:3 | i | -2147483648 | -| test.c:435:3:435:3 | i | 10 | -| test.c:436:7:436:7 | i | 20 | -| test.c:438:3:438:3 | i | -2147483648 | -| test.c:439:3:439:3 | i | 40 | -| test.c:440:7:440:7 | i | 30 | -| test.c:442:3:442:3 | i | -2147483648 | -| test.c:442:7:442:7 | j | -2147483648 | -| test.c:443:7:443:7 | i | 40 | -| test.c:445:3:445:3 | i | -2147483648 | -| test.c:445:8:445:8 | j | 40 | -| test.c:446:7:446:7 | i | 50 | -| test.c:448:3:448:3 | i | -2147483648 | -| test.c:448:13:448:13 | j | 50 | -| test.c:449:7:449:7 | i | 60 | -| test.c:456:12:456:12 | a | 0 | -| test.c:456:17:456:17 | a | 3 | -| test.c:456:33:456:33 | b | 0 | -| test.c:456:38:456:38 | b | 5 | -| test.c:457:13:457:13 | a | 3 | -| test.c:457:15:457:15 | b | 5 | -| test.c:458:5:458:9 | total | 0 | -| test.c:458:14:458:14 | r | 15 | -| test.c:460:12:460:12 | a | 0 | -| test.c:460:17:460:17 | a | 3 | -| test.c:460:33:460:33 | b | 0 | -| test.c:460:38:460:38 | b | 0 | -| test.c:461:13:461:13 | a | 3 | -| test.c:461:15:461:15 | b | 0 | -| test.c:462:5:462:9 | total | 0 | -| test.c:462:14:462:14 | r | 0 | -| test.c:464:12:464:12 | a | 0 | -| test.c:464:17:464:17 | a | 3 | -| test.c:464:34:464:34 | b | 0 | -| test.c:464:39:464:39 | b | 13 | -| test.c:465:13:465:13 | a | 3 | -| test.c:465:15:465:15 | b | 13 | -| test.c:466:5:466:9 | total | 0 | -| test.c:466:14:466:14 | r | 39 | -| test.c:469:10:469:14 | total | 0 | -| test.c:475:12:475:12 | b | 0 | -| test.c:475:17:475:17 | b | 5 | -| test.c:476:16:476:16 | b | 5 | -| test.c:477:5:477:9 | total | 0 | -| test.c:477:14:477:14 | r | 55 | -| test.c:479:12:479:12 | b | 0 | -| test.c:479:17:479:17 | b | 0 | -| test.c:480:16:480:16 | b | 0 | -| test.c:481:5:481:9 | total | 0 | -| test.c:481:14:481:14 | r | 0 | -| test.c:483:13:483:13 | b | 0 | -| test.c:483:18:483:18 | b | 13 | -| test.c:484:16:484:16 | b | 13 | -| test.c:485:5:485:9 | total | 0 | -| test.c:485:14:485:14 | r | 143 | -| test.c:488:10:488:14 | total | 0 | -| test.c:493:3:493:3 | x | 0 | -| test.c:493:7:493:7 | y | 0 | -| test.c:494:3:494:4 | xy | 0 | -| test.c:494:8:494:8 | x | 1000000003 | -| test.c:494:12:494:12 | y | 1000000003 | -| test.c:495:10:495:11 | xy | 1000000006000000000 | -| test.c:500:3:500:3 | x | 0 | -| test.c:501:3:501:3 | y | 0 | -| test.c:502:3:502:4 | xy | 0 | -| test.c:502:8:502:8 | x | 274177 | -| test.c:502:12:502:12 | y | 67280421310721 | -| test.c:503:10:503:11 | xy | 18446744073709551616 | -| test.c:507:7:507:8 | ui | 0 | -| test.c:508:43:508:44 | ui | 10 | -| test.c:508:48:508:49 | ui | 10 | -| test.c:509:12:509:17 | result | 100 | -| test.c:511:7:511:8 | ul | 0 | -| test.c:512:28:512:29 | ul | 10 | -| test.c:512:33:512:34 | ul | 10 | -| test.c:513:12:513:17 | result | 0 | -| test.c:519:7:519:8 | ui | 0 | -| test.c:519:19:519:20 | ui | 0 | -| test.c:520:5:520:6 | ui | 2 | -| test.c:520:11:520:12 | ui | 2 | -| test.c:521:12:521:13 | ui | 4 | -| test.c:525:3:525:9 | uiconst | 10 | -| test.c:528:3:528:9 | ulconst | 10 | -| test.c:529:10:529:16 | uiconst | 40 | -| test.c:529:20:529:26 | ulconst | 40 | -| test.c:533:7:533:7 | i | -2147483648 | -| test.c:533:18:533:18 | i | -1 | -| test.c:534:5:534:5 | i | -2147483648 | -| test.c:534:13:534:13 | i | -1 | -| test.c:535:9:535:9 | i | -5 | -| test.c:537:5:537:5 | i | -2147483648 | -| test.c:537:9:537:9 | i | -5 | -| test.c:538:9:538:9 | i | -30 | -| test.c:540:5:540:5 | i | -30 | -| test.c:541:9:541:9 | i | -210 | -| test.c:543:5:543:5 | i | -210 | -| test.c:544:9:544:9 | i | -1155 | -| test.c:546:7:546:7 | i | -2147483648 | -| test.c:547:5:547:5 | i | -2147483648 | -| test.c:547:9:547:9 | i | -1 | -| test.c:548:9:548:9 | i | 1 | -| test.c:550:3:550:3 | i | -2147483648 | -| test.c:550:7:550:7 | i | -2147483648 | -| test.c:551:10:551:10 | i | -2147483648 | -| test.c:554:3:554:3 | i | -2147483648 | -| test.c:554:10:554:11 | sc | 1 | -| test.c:556:7:556:7 | i | -128 | -| test.c:563:7:563:7 | n | 0 | -| test.c:565:7:565:7 | n | 0 | -| test.c:566:9:566:9 | n | 1 | -| test.c:569:7:569:7 | n | 0 | -| test.c:570:9:570:9 | n | 1 | -| test.c:572:9:572:9 | n | 0 | -| test.c:575:8:575:8 | n | 0 | -| test.c:576:9:576:9 | n | 0 | -| test.c:578:9:578:9 | n | 1 | -| test.c:581:10:581:10 | n | 0 | -| test.c:582:5:582:5 | n | 1 | -| test.c:585:7:585:7 | n | 0 | -| test.c:589:7:589:7 | n | -32768 | -| test.c:592:7:592:7 | n | 0 | -| test.c:593:9:593:9 | n | 0 | -| test.c:595:9:595:9 | n | 1 | -| test.c:598:7:598:7 | n | 0 | -| test.c:599:9:599:9 | n | 1 | -| test.c:601:9:601:9 | n | 0 | -| test.c:604:10:604:10 | n | 0 | -| test.c:605:5:605:5 | n | 1 | -| test.c:608:7:608:7 | n | 0 | -| test.c:612:7:612:7 | n | -32768 | -| test.c:613:9:613:9 | n | -32768 | -| test.c:614:11:614:11 | n | 0 | -| test.c:618:7:618:7 | n | -32768 | -| test.c:619:13:619:13 | n | 5 | -| test.c:622:9:622:9 | n | 6 | -| test.c:625:7:625:7 | n | -32768 | -| test.c:625:22:625:22 | n | -32767 | -| test.c:626:9:626:9 | n | -32766 | -| test.c:629:7:629:7 | n | -32768 | -| test.c:630:5:630:5 | n | 0 | -| test.c:630:10:630:10 | n | 1 | -| test.c:630:14:630:14 | n | 0 | -| test.c:631:6:631:6 | n | 0 | -| test.c:631:10:631:10 | n | 0 | -| test.c:631:14:631:14 | n | 1 | -| test.c:642:7:642:8 | ss | -32768 | -| test.c:643:9:643:10 | ss | 0 | -| test.c:646:7:646:8 | ss | -32768 | -| test.c:647:9:647:10 | ss | -32768 | -| test.c:650:14:650:15 | us | 0 | -| test.c:651:9:651:10 | us | 0 | -| test.c:654:14:654:15 | us | 0 | -| test.c:655:9:655:10 | us | 0 | -| test.c:658:7:658:8 | ss | -32768 | -| test.c:659:9:659:10 | ss | -32768 | -| test.c:662:7:662:8 | ss | -32768 | -| test.c:663:9:663:10 | ss | -1 | -| test.c:669:8:669:8 | s | -2147483648 | -| test.c:669:15:669:15 | s | 0 | -| test.c:669:23:669:23 | s | 0 | -| test.c:670:18:670:18 | s | 0 | -| test.c:670:22:670:22 | s | 0 | -| test.c:671:9:671:14 | result | 0 | -| test.c:677:7:677:7 | i | 0 | -| test.c:678:9:678:9 | i | -2147483648 | -| test.c:682:7:682:7 | u | 0 | -| test.c:683:9:683:9 | u | 0 | -| test.c:688:12:688:12 | s | -2147483648 | -| test.c:689:7:689:8 | s2 | -4 | -| test.c:694:7:694:7 | x | -2147483648 | -| test.c:695:9:695:9 | y | -2147483648 | -| test.c:699:7:699:7 | y | -2147483648 | -| test.c:708:7:708:7 | x | -2147483648 | -| test.c:713:7:713:7 | x | -2147483648 | -| test.c:720:8:720:8 | x | 2147483647 | -| test.c:720:12:720:12 | y | 256 | -| test.c:721:9:721:9 | x | 2147483647 | -| test.c:722:9:722:9 | y | 256 | +| test.c:420:7:420:9 | rhs | 0 | +| test.c:420:19:420:21 | rhs | 0 | +| test.c:421:7:421:9 | rhs | 0 | +| test.c:421:19:421:21 | rhs | 0 | +| test.c:422:7:422:9 | rhs | 0 | +| test.c:422:19:422:21 | rhs | 0 | +| test.c:423:7:423:9 | rhs | 0 | +| test.c:423:19:423:21 | rhs | 0 | +| test.c:424:7:424:9 | rhs | 0 | +| test.c:424:19:424:21 | rhs | 0 | +| test.c:425:10:425:12 | rhs | 0 | +| test.c:429:7:429:7 | a | -2147483648 | +| test.c:430:9:430:9 | b | -2147483648 | +| test.c:431:7:431:7 | a | 17 | +| test.c:431:12:431:12 | b | 23 | +| test.c:433:9:433:9 | a | 17 | +| test.c:434:7:434:7 | b | -2147483648 | +| test.c:439:11:439:11 | a | -2147483648 | +| test.c:439:15:439:15 | b | -2147483648 | +| test.c:440:10:440:10 | a | -2147483648 | +| test.c:440:14:440:14 | b | -2147483648 | +| test.c:447:10:447:11 | ip | 0 | +| test.c:447:20:447:21 | ip | 0 | +| test.c:447:40:447:41 | ip | 0 | +| test.c:448:14:448:15 | ip | 1 | +| test.c:449:14:449:15 | ip | 0 | +| test.c:449:34:449:35 | ip | 0 | +| test.c:450:11:450:12 | ip | 0 | +| test.c:451:13:451:14 | ip | 0 | +| test.c:452:14:452:15 | ip | 0 | +| test.c:453:14:453:15 | ip | 0 | +| test.c:454:15:454:16 | ip | 0 | +| test.c:454:41:454:42 | ip | 0 | +| test.c:454:52:454:53 | ip | 0 | +| test.c:454:67:454:68 | ip | 0 | +| test.c:454:78:454:79 | ip | 0 | +| test.c:455:18:455:19 | ip | 0 | +| test.c:456:23:456:24 | ip | 0 | +| test.c:456:34:456:35 | ip | 0 | +| test.c:457:25:457:26 | ip | 0 | +| test.c:458:20:458:21 | ip | 0 | +| test.c:459:11:459:12 | ip | 0 | +| test.c:459:26:459:27 | ip | 0 | +| test.c:460:16:460:17 | ip | 0 | +| test.c:461:16:461:17 | ip | 0 | +| test.c:462:16:462:17 | ip | 0 | +| test.c:463:17:463:18 | ip | 0 | +| test.c:464:22:464:23 | ip | 0 | +| test.c:464:33:464:34 | ip | 0 | +| test.c:464:48:464:49 | ip | 0 | +| test.c:464:59:464:60 | ip | 0 | +| test.c:465:20:465:21 | ip | 0 | +| test.c:466:25:466:26 | ip | 0 | +| test.c:466:36:466:37 | ip | 0 | +| test.c:467:27:467:28 | ip | 0 | +| test.c:468:22:468:23 | ip | 0 | +| test.c:469:15:469:16 | ip | 0 | +| test.c:469:30:469:31 | ip | 0 | +| test.c:470:11:470:12 | ip | 0 | +| test.c:471:12:471:13 | ip | 0 | +| test.c:472:12:472:13 | ip | 0 | +| test.c:473:13:473:14 | ip | 0 | +| test.c:473:39:473:40 | ip | 0 | +| test.c:473:50:473:51 | ip | 0 | +| test.c:473:65:473:66 | ip | 0 | +| test.c:473:76:473:77 | ip | 0 | +| test.c:474:16:474:17 | ip | 0 | +| test.c:475:21:475:22 | ip | 0 | +| test.c:475:32:475:33 | ip | 0 | +| test.c:476:23:476:24 | ip | 0 | +| test.c:477:18:477:19 | ip | 0 | +| test.c:478:11:478:12 | ip | 0 | +| test.c:478:17:478:18 | ip | 0 | +| test.c:478:37:478:38 | ip | 0 | +| test.c:478:43:478:44 | ip | 0 | +| test.c:479:14:479:15 | ip | 0 | +| test.c:480:14:480:15 | ip | 0 | +| test.c:481:14:481:15 | ip | 0 | +| test.c:482:15:482:16 | ip | 0 | +| test.c:482:41:482:42 | ip | 0 | +| test.c:482:52:482:53 | ip | 0 | +| test.c:482:67:482:68 | ip | 0 | +| test.c:482:78:482:79 | ip | 0 | +| test.c:483:18:483:19 | ip | 0 | +| test.c:484:23:484:24 | ip | 0 | +| test.c:484:34:484:35 | ip | 0 | +| test.c:485:25:485:26 | ip | 0 | +| test.c:486:20:486:21 | ip | 0 | +| test.c:487:14:487:15 | ip | 0 | +| test.c:487:20:487:21 | ip | 0 | +| test.c:488:16:488:17 | ip | 0 | +| test.c:489:12:489:13 | ip | 0 | +| test.c:490:14:490:15 | ip | 0 | +| test.c:491:15:491:16 | ip | 0 | +| test.c:492:16:492:17 | ip | 0 | +| test.c:493:16:493:17 | ip | 0 | +| test.c:494:17:494:18 | ip | 0 | +| test.c:495:22:495:23 | ip | 0 | +| test.c:495:33:495:34 | ip | 0 | +| test.c:495:48:495:49 | ip | 0 | +| test.c:495:59:495:60 | ip | 0 | +| test.c:496:20:496:21 | ip | 0 | +| test.c:497:25:497:26 | ip | 0 | +| test.c:497:36:497:37 | ip | 0 | +| test.c:498:27:498:28 | ip | 0 | +| test.c:499:22:499:23 | ip | 0 | +| test.c:500:13:500:14 | ip | 0 | +| test.c:500:28:500:29 | ip | 0 | +| test.c:501:18:501:19 | ip | 0 | +| test.c:502:18:502:19 | ip | 0 | +| test.c:503:18:503:19 | ip | 0 | +| test.c:504:19:504:20 | ip | 0 | +| test.c:505:24:505:25 | ip | 0 | +| test.c:505:35:505:36 | ip | 0 | +| test.c:505:50:505:51 | ip | 0 | +| test.c:505:61:505:62 | ip | 0 | +| test.c:506:22:506:23 | ip | 0 | +| test.c:507:27:507:28 | ip | 0 | +| test.c:507:38:507:39 | ip | 0 | +| test.c:508:29:508:30 | ip | 0 | +| test.c:509:24:509:25 | ip | 0 | +| test.c:510:17:510:18 | ip | 0 | +| test.c:510:32:510:33 | ip | 0 | +| test.c:511:14:511:15 | ip | 0 | +| test.c:512:18:512:19 | ip | 0 | +| test.c:513:18:513:19 | ip | 0 | +| test.c:514:19:514:20 | ip | 0 | +| test.c:515:24:515:25 | ip | 0 | +| test.c:515:35:515:36 | ip | 0 | +| test.c:515:50:515:51 | ip | 0 | +| test.c:515:61:515:62 | ip | 0 | +| test.c:516:22:516:23 | ip | 0 | +| test.c:517:27:517:28 | ip | 0 | +| test.c:517:38:517:39 | ip | 0 | +| test.c:518:29:518:30 | ip | 0 | +| test.c:519:24:519:25 | ip | 0 | +| test.c:520:17:520:18 | ip | 0 | +| test.c:520:23:520:24 | ip | 0 | +| test.c:520:43:520:44 | ip | 0 | +| test.c:520:49:520:50 | ip | 0 | +| test.c:521:16:521:17 | ip | 0 | +| test.c:522:16:522:17 | ip | 0 | +| test.c:523:16:523:17 | ip | 0 | +| test.c:524:17:524:18 | ip | 0 | +| test.c:525:22:525:23 | ip | 0 | +| test.c:525:33:525:34 | ip | 0 | +| test.c:525:48:525:49 | ip | 0 | +| test.c:525:59:525:60 | ip | 0 | +| test.c:526:20:526:21 | ip | 0 | +| test.c:527:25:527:26 | ip | 0 | +| test.c:527:36:527:37 | ip | 0 | +| test.c:528:27:528:28 | ip | 0 | +| test.c:529:22:529:23 | ip | 0 | +| test.c:530:16:530:17 | ip | 0 | +| test.c:530:22:530:23 | ip | 0 | +| test.c:531:18:531:19 | ip | 0 | +| test.c:532:14:532:15 | ip | 0 | +| test.c:533:14:533:15 | ip | 0 | +| test.c:533:24:533:25 | ip | 0 | +| test.c:533:44:533:45 | ip | 0 | +| test.c:534:16:534:17 | ip | 1 | +| test.c:535:16:535:17 | ip | 0 | +| test.c:535:36:535:37 | ip | 0 | +| test.c:536:14:536:15 | ip | 0 | +| test.c:537:19:537:20 | ip | 0 | +| test.c:538:20:538:21 | ip | 0 | +| test.c:539:20:539:21 | ip | 0 | +| test.c:540:21:540:22 | ip | 0 | +| test.c:541:26:541:27 | ip | 0 | +| test.c:541:37:541:38 | ip | 0 | +| test.c:541:52:541:53 | ip | 0 | +| test.c:541:63:541:64 | ip | 0 | +| test.c:542:24:542:25 | ip | 0 | +| test.c:543:29:543:30 | ip | 0 | +| test.c:543:40:543:41 | ip | 0 | +| test.c:544:31:544:32 | ip | 0 | +| test.c:545:26:545:27 | ip | 0 | +| test.c:546:17:546:18 | ip | 0 | +| test.c:546:32:546:33 | ip | 0 | +| test.c:547:22:547:23 | ip | 0 | +| test.c:548:22:548:23 | ip | 0 | +| test.c:549:22:549:23 | ip | 0 | +| test.c:550:23:550:24 | ip | 0 | +| test.c:551:28:551:29 | ip | 0 | +| test.c:551:39:551:40 | ip | 0 | +| test.c:551:54:551:55 | ip | 0 | +| test.c:551:65:551:66 | ip | 0 | +| test.c:552:26:552:27 | ip | 0 | +| test.c:553:31:553:32 | ip | 0 | +| test.c:553:42:553:43 | ip | 0 | +| test.c:554:33:554:34 | ip | 0 | +| test.c:555:28:555:29 | ip | 0 | +| test.c:556:21:556:22 | ip | 0 | +| test.c:556:36:556:37 | ip | 0 | +| test.c:557:17:557:18 | ip | 0 | +| test.c:558:18:558:19 | ip | 0 | +| test.c:559:18:559:19 | ip | 0 | +| test.c:560:19:560:20 | ip | 0 | +| test.c:561:24:561:25 | ip | 0 | +| test.c:561:35:561:36 | ip | 0 | +| test.c:561:50:561:51 | ip | 0 | +| test.c:561:61:561:62 | ip | 0 | +| test.c:562:22:562:23 | ip | 0 | +| test.c:563:27:563:28 | ip | 0 | +| test.c:563:38:563:39 | ip | 0 | +| test.c:564:29:564:30 | ip | 0 | +| test.c:565:24:565:25 | ip | 0 | +| test.c:566:17:566:18 | ip | 0 | +| test.c:566:23:566:24 | ip | 0 | +| test.c:566:43:566:44 | ip | 0 | +| test.c:566:49:566:50 | ip | 0 | +| test.c:567:20:567:21 | ip | 0 | +| test.c:568:20:568:21 | ip | 0 | +| test.c:569:20:569:21 | ip | 0 | +| test.c:570:21:570:22 | ip | 0 | +| test.c:571:26:571:27 | ip | 0 | +| test.c:571:37:571:38 | ip | 0 | +| test.c:571:52:571:53 | ip | 0 | +| test.c:571:63:571:64 | ip | 0 | +| test.c:572:24:572:25 | ip | 0 | +| test.c:573:29:573:30 | ip | 0 | +| test.c:573:40:573:41 | ip | 0 | +| test.c:574:31:574:32 | ip | 0 | +| test.c:575:26:575:27 | ip | 0 | +| test.c:576:20:576:21 | ip | 0 | +| test.c:576:26:576:27 | ip | 0 | +| test.c:577:22:577:23 | ip | 0 | +| test.c:578:18:578:19 | ip | 0 | +| test.c:579:16:579:17 | ip | 0 | +| test.c:580:17:580:18 | ip | 0 | +| test.c:581:18:581:19 | ip | 0 | +| test.c:582:18:582:19 | ip | 0 | +| test.c:583:19:583:20 | ip | 0 | +| test.c:584:24:584:25 | ip | 0 | +| test.c:584:35:584:36 | ip | 0 | +| test.c:584:50:584:51 | ip | 0 | +| test.c:584:61:584:62 | ip | 0 | +| test.c:585:22:585:23 | ip | 0 | +| test.c:586:27:586:28 | ip | 0 | +| test.c:586:38:586:39 | ip | 0 | +| test.c:587:29:587:30 | ip | 0 | +| test.c:588:24:588:25 | ip | 0 | +| test.c:589:15:589:16 | ip | 0 | +| test.c:589:30:589:31 | ip | 0 | +| test.c:590:20:590:21 | ip | 0 | +| test.c:591:20:591:21 | ip | 0 | +| test.c:592:20:592:21 | ip | 0 | +| test.c:593:21:593:22 | ip | 0 | +| test.c:594:26:594:27 | ip | 0 | +| test.c:594:37:594:38 | ip | 0 | +| test.c:594:52:594:53 | ip | 0 | +| test.c:594:63:594:64 | ip | 0 | +| test.c:595:24:595:25 | ip | 0 | +| test.c:596:29:596:30 | ip | 0 | +| test.c:596:40:596:41 | ip | 0 | +| test.c:597:31:597:32 | ip | 0 | +| test.c:598:26:598:27 | ip | 0 | +| test.c:599:19:599:20 | ip | 0 | +| test.c:599:34:599:35 | ip | 0 | +| test.c:600:16:600:17 | ip | 0 | +| test.c:601:20:601:21 | ip | 0 | +| test.c:602:20:602:21 | ip | 0 | +| test.c:603:21:603:22 | ip | 0 | +| test.c:604:26:604:27 | ip | 0 | +| test.c:604:37:604:38 | ip | 0 | +| test.c:604:52:604:53 | ip | 0 | +| test.c:604:63:604:64 | ip | 0 | +| test.c:605:24:605:25 | ip | 0 | +| test.c:606:29:606:30 | ip | 0 | +| test.c:606:40:606:41 | ip | 0 | +| test.c:607:31:607:32 | ip | 0 | +| test.c:608:26:608:27 | ip | 0 | +| test.c:609:19:609:20 | ip | 0 | +| test.c:609:25:609:26 | ip | 0 | +| test.c:609:45:609:46 | ip | 0 | +| test.c:609:51:609:52 | ip | 0 | +| test.c:610:18:610:19 | ip | 0 | +| test.c:611:18:611:19 | ip | 0 | +| test.c:612:18:612:19 | ip | 0 | +| test.c:613:19:613:20 | ip | 0 | +| test.c:614:24:614:25 | ip | 0 | +| test.c:614:35:614:36 | ip | 0 | +| test.c:614:50:614:51 | ip | 0 | +| test.c:614:61:614:62 | ip | 0 | +| test.c:615:22:615:23 | ip | 0 | +| test.c:616:27:616:28 | ip | 0 | +| test.c:616:38:616:39 | ip | 0 | +| test.c:617:29:617:30 | ip | 0 | +| test.c:618:24:618:25 | ip | 0 | +| test.c:619:18:619:19 | ip | 0 | +| test.c:619:24:619:25 | ip | 0 | +| test.c:620:20:620:21 | ip | 0 | +| test.c:621:16:621:17 | ip | 0 | +| test.c:622:10:622:23 | special_number | 0 | +| test.c:630:7:630:8 | c1 | -2147483648 | +| test.c:630:13:630:13 | x | 0 | +| test.c:631:7:631:8 | c2 | -2147483648 | +| test.c:631:13:631:13 | x | 0 | +| test.c:632:7:632:8 | c3 | -2147483648 | +| test.c:632:13:632:13 | x | 0 | +| test.c:633:7:633:8 | c4 | -2147483648 | +| test.c:633:13:633:13 | x | 0 | +| test.c:634:7:634:8 | c5 | -2147483648 | +| test.c:634:13:634:13 | x | 0 | +| test.c:635:7:635:8 | c1 | -2147483648 | +| test.c:635:13:635:14 | c2 | -2147483648 | +| test.c:635:19:635:19 | x | 0 | +| test.c:636:7:636:8 | c1 | -2147483648 | +| test.c:636:13:636:14 | c3 | -2147483648 | +| test.c:636:19:636:19 | x | 0 | +| test.c:637:7:637:8 | c1 | -2147483648 | +| test.c:637:13:637:14 | c4 | -2147483648 | +| test.c:637:19:637:19 | x | 0 | +| test.c:638:7:638:8 | c1 | -2147483648 | +| test.c:638:13:638:14 | c5 | -2147483648 | +| test.c:638:19:638:19 | x | 0 | +| test.c:639:7:639:8 | c2 | -2147483648 | +| test.c:639:13:639:14 | c3 | -2147483648 | +| test.c:639:19:639:19 | x | 0 | +| test.c:641:11:641:11 | x | 0 | +| test.c:641:15:641:15 | x | 0 | +| test.c:641:19:641:19 | x | 0 | +| test.c:641:23:641:23 | x | 0 | +| test.c:641:27:641:27 | x | 0 | +| test.c:641:31:641:31 | x | 0 | +| test.c:641:35:641:35 | x | 0 | +| test.c:641:39:641:39 | x | 0 | +| test.c:641:43:641:43 | x | 0 | +| test.c:641:47:641:47 | x | 0 | +| test.c:641:51:641:51 | x | 0 | +| test.c:641:55:641:55 | x | 0 | +| test.c:642:10:642:10 | y | -2147483648 | +| test.c:647:20:647:20 | x | 0 | +| test.c:647:30:647:30 | x | 0 | +| test.c:650:3:650:4 | y1 | 0 | +| test.c:650:11:650:11 | y | 0 | +| test.c:650:14:650:14 | y | 1 | +| test.c:651:3:651:4 | y2 | 0 | +| test.c:651:9:651:9 | y | 1 | +| test.c:651:14:651:14 | y | 2 | +| test.c:651:22:651:22 | y | 5 | +| test.c:652:10:652:11 | y1 | 1 | +| test.c:652:15:652:16 | y2 | 5 | +| test.c:660:3:660:3 | i | -2147483648 | +| test.c:661:7:661:7 | i | 10 | +| test.c:663:3:663:3 | i | -2147483648 | +| test.c:664:3:664:3 | i | 10 | +| test.c:665:7:665:7 | i | 20 | +| test.c:667:3:667:3 | i | -2147483648 | +| test.c:668:3:668:3 | i | 40 | +| test.c:669:7:669:7 | i | 30 | +| test.c:671:3:671:3 | i | -2147483648 | +| test.c:671:7:671:7 | j | -2147483648 | +| test.c:672:7:672:7 | i | 40 | +| test.c:674:3:674:3 | i | -2147483648 | +| test.c:674:8:674:8 | j | 40 | +| test.c:675:7:675:7 | i | 50 | +| test.c:677:3:677:3 | i | -2147483648 | +| test.c:677:13:677:13 | j | 50 | +| test.c:678:7:678:7 | i | 60 | +| test.c:685:12:685:12 | a | 0 | +| test.c:685:17:685:17 | a | 3 | +| test.c:685:33:685:33 | b | 0 | +| test.c:685:38:685:38 | b | 5 | +| test.c:686:13:686:13 | a | 3 | +| test.c:686:15:686:15 | b | 5 | +| test.c:687:5:687:9 | total | 0 | +| test.c:687:14:687:14 | r | 15 | +| test.c:689:12:689:12 | a | 0 | +| test.c:689:17:689:17 | a | 3 | +| test.c:689:33:689:33 | b | 0 | +| test.c:689:38:689:38 | b | 0 | +| test.c:690:13:690:13 | a | 3 | +| test.c:690:15:690:15 | b | 0 | +| test.c:691:5:691:9 | total | 0 | +| test.c:691:14:691:14 | r | 0 | +| test.c:693:12:693:12 | a | 0 | +| test.c:693:17:693:17 | a | 3 | +| test.c:693:34:693:34 | b | 0 | +| test.c:693:39:693:39 | b | 13 | +| test.c:694:13:694:13 | a | 3 | +| test.c:694:15:694:15 | b | 13 | +| test.c:695:5:695:9 | total | 0 | +| test.c:695:14:695:14 | r | 39 | +| test.c:698:10:698:14 | total | 0 | +| test.c:704:12:704:12 | b | 0 | +| test.c:704:17:704:17 | b | 5 | +| test.c:705:16:705:16 | b | 5 | +| test.c:706:5:706:9 | total | 0 | +| test.c:706:14:706:14 | r | 55 | +| test.c:708:12:708:12 | b | 0 | +| test.c:708:17:708:17 | b | 0 | +| test.c:709:16:709:16 | b | 0 | +| test.c:710:5:710:9 | total | 0 | +| test.c:710:14:710:14 | r | 0 | +| test.c:712:13:712:13 | b | 0 | +| test.c:712:18:712:18 | b | 13 | +| test.c:713:16:713:16 | b | 13 | +| test.c:714:5:714:9 | total | 0 | +| test.c:714:14:714:14 | r | 143 | +| test.c:717:10:717:14 | total | 0 | +| test.c:722:3:722:3 | x | 0 | +| test.c:722:7:722:7 | y | 0 | +| test.c:723:3:723:4 | xy | 0 | +| test.c:723:8:723:8 | x | 1000000003 | +| test.c:723:12:723:12 | y | 1000000003 | +| test.c:724:10:724:11 | xy | 1000000006000000000 | +| test.c:729:3:729:3 | x | 0 | +| test.c:730:3:730:3 | y | 0 | +| test.c:731:3:731:4 | xy | 0 | +| test.c:731:8:731:8 | x | 274177 | +| test.c:731:12:731:12 | y | 67280421310721 | +| test.c:732:10:732:11 | xy | 18446744073709551616 | +| test.c:736:7:736:8 | ui | 0 | +| test.c:737:43:737:44 | ui | 10 | +| test.c:737:48:737:49 | ui | 10 | +| test.c:738:12:738:17 | result | 100 | +| test.c:740:7:740:8 | ul | 0 | +| test.c:741:28:741:29 | ul | 10 | +| test.c:741:33:741:34 | ul | 10 | +| test.c:742:12:742:17 | result | 0 | +| test.c:748:7:748:8 | ui | 0 | +| test.c:748:19:748:20 | ui | 0 | +| test.c:749:5:749:6 | ui | 2 | +| test.c:749:11:749:12 | ui | 2 | +| test.c:750:12:750:13 | ui | 4 | +| test.c:754:3:754:9 | uiconst | 10 | +| test.c:757:3:757:9 | ulconst | 10 | +| test.c:758:10:758:16 | uiconst | 40 | +| test.c:758:20:758:26 | ulconst | 40 | +| test.c:762:7:762:7 | i | -2147483648 | +| test.c:762:18:762:18 | i | -1 | +| test.c:763:5:763:5 | i | -2147483648 | +| test.c:763:13:763:13 | i | -1 | +| test.c:764:9:764:9 | i | -5 | +| test.c:766:5:766:5 | i | -2147483648 | +| test.c:766:9:766:9 | i | -5 | +| test.c:767:9:767:9 | i | -30 | +| test.c:769:5:769:5 | i | -30 | +| test.c:770:9:770:9 | i | -210 | +| test.c:772:5:772:5 | i | -210 | +| test.c:773:9:773:9 | i | -1155 | +| test.c:775:7:775:7 | i | -2147483648 | +| test.c:776:5:776:5 | i | -2147483648 | +| test.c:776:9:776:9 | i | -1 | +| test.c:777:9:777:9 | i | 1 | +| test.c:779:3:779:3 | i | -2147483648 | +| test.c:779:7:779:7 | i | -2147483648 | +| test.c:780:10:780:10 | i | -2147483648 | +| test.c:783:3:783:3 | i | -2147483648 | +| test.c:783:10:783:11 | sc | 1 | +| test.c:785:7:785:7 | i | -128 | +| test.c:792:7:792:7 | n | 0 | +| test.c:794:7:794:7 | n | 0 | +| test.c:795:9:795:9 | n | 1 | +| test.c:798:7:798:7 | n | 0 | +| test.c:799:9:799:9 | n | 1 | +| test.c:801:9:801:9 | n | 0 | +| test.c:804:8:804:8 | n | 0 | +| test.c:805:9:805:9 | n | 0 | +| test.c:807:9:807:9 | n | 1 | +| test.c:810:10:810:10 | n | 0 | +| test.c:811:5:811:5 | n | 1 | +| test.c:814:7:814:7 | n | 0 | +| test.c:818:7:818:7 | n | -32768 | +| test.c:821:7:821:7 | n | 0 | +| test.c:822:9:822:9 | n | 0 | +| test.c:824:9:824:9 | n | 1 | +| test.c:827:7:827:7 | n | 0 | +| test.c:828:9:828:9 | n | 1 | +| test.c:830:9:830:9 | n | 0 | +| test.c:833:10:833:10 | n | 0 | +| test.c:834:5:834:5 | n | 1 | +| test.c:837:7:837:7 | n | 0 | +| test.c:841:7:841:7 | n | -32768 | +| test.c:842:9:842:9 | n | -32768 | +| test.c:843:11:843:11 | n | 0 | +| test.c:847:7:847:7 | n | -32768 | +| test.c:848:13:848:13 | n | 5 | +| test.c:851:9:851:9 | n | 6 | +| test.c:854:7:854:7 | n | -32768 | +| test.c:854:22:854:22 | n | -32767 | +| test.c:855:9:855:9 | n | -32766 | +| test.c:858:7:858:7 | n | -32768 | +| test.c:859:5:859:5 | n | 0 | +| test.c:859:10:859:10 | n | 1 | +| test.c:859:14:859:14 | n | 0 | +| test.c:860:6:860:6 | n | 0 | +| test.c:860:10:860:10 | n | 0 | +| test.c:860:14:860:14 | n | 1 | +| test.c:871:7:871:8 | ss | -32768 | +| test.c:872:9:872:10 | ss | 0 | +| test.c:875:7:875:8 | ss | -32768 | +| test.c:876:9:876:10 | ss | -32768 | +| test.c:879:14:879:15 | us | 0 | +| test.c:880:9:880:10 | us | 0 | +| test.c:883:14:883:15 | us | 0 | +| test.c:884:9:884:10 | us | 0 | +| test.c:887:7:887:8 | ss | -32768 | +| test.c:888:9:888:10 | ss | -32768 | +| test.c:891:7:891:8 | ss | -32768 | +| test.c:892:9:892:10 | ss | -1 | +| test.c:898:8:898:8 | s | -2147483648 | +| test.c:898:15:898:15 | s | 0 | +| test.c:898:23:898:23 | s | 0 | +| test.c:899:18:899:18 | s | 0 | +| test.c:899:22:899:22 | s | 0 | +| test.c:900:9:900:14 | result | 0 | +| test.c:906:7:906:7 | i | 0 | +| test.c:907:9:907:9 | i | -2147483648 | +| test.c:911:7:911:7 | u | 0 | +| test.c:912:9:912:9 | u | 0 | +| test.c:917:12:917:12 | s | -2147483648 | +| test.c:918:7:918:8 | s2 | -4 | +| test.c:923:7:923:7 | x | -2147483648 | +| test.c:924:9:924:9 | y | -2147483648 | +| test.c:928:7:928:7 | y | -2147483648 | +| test.c:937:7:937:7 | x | -2147483648 | +| test.c:942:7:942:7 | x | -2147483648 | +| test.c:949:8:949:8 | x | 2147483647 | +| test.c:949:12:949:12 | y | 256 | +| test.c:950:9:950:9 | x | 2147483647 | +| test.c:951:9:951:9 | y | 256 | | test.cpp:10:7:10:7 | b | -2147483648 | | test.cpp:11:5:11:5 | x | -2147483648 | | test.cpp:13:10:13:10 | x | -2147483648 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected new file mode 100644 index 000000000000..0d30eb30f75b --- /dev/null +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected @@ -0,0 +1,4628 @@ +testFailures +estimateNrOfBounds +| inline_assembly.c:9:20:9:20 | 0 | 1.0 | +| inline_assembly.c:9:20:9:20 | (unsigned int)... | 1.0 | +| inline_assembly.c:10:3:10:3 | y | 1.0 | +| inline_assembly.c:10:3:10:7 | ... = ... | 1.0 | +| inline_assembly.c:10:7:10:7 | 1 | 1.0 | +| inline_assembly.c:10:7:10:7 | (unsigned int)... | 1.0 | +| inline_assembly.c:12:3:12:8 | call to printf | 1.0 | +| inline_assembly.c:12:29:12:29 | x | 1.0 | +| inline_assembly.c:12:32:12:32 | y | 1.0 | +| inline_assembly.c:16:25:16:25 | x | 1.0 | +| inline_assembly.c:16:35:16:35 | y | 1.0 | +| inline_assembly.c:21:3:21:8 | call to printf | 1.0 | +| inline_assembly.c:21:29:21:29 | x | 1.0 | +| inline_assembly.c:21:32:21:32 | y | 1.0 | +| inline_assembly.c:23:10:23:10 | 0 | 1.0 | +| minmax.c:16:9:16:10 | 1 | 1.0 | +| minmax.c:16:16:16:17 | 2 | 1.0 | +| minmax.c:16:23:16:24 | 3 | 1.0 | +| minmax.c:18:2:18:7 | call to printf | 1.0 | +| minmax.c:18:37:18:37 | x | 1.0 | +| minmax.c:18:40:18:40 | y | 1.0 | +| minmax.c:18:43:18:43 | z | 1.0 | +| minmax.c:20:2:20:2 | z | 1.0 | +| minmax.c:20:2:24:3 | ... = ... | 2.0 | +| minmax.c:20:6:24:3 | (statement expression) | 2.0 | +| minmax.c:21:10:21:11 | 0 | 1.0 | +| minmax.c:22:7:22:14 | ... != ... | 1.0 | +| minmax.c:22:8:22:8 | x | 1.0 | +| minmax.c:22:14:22:14 | y | 1.0 | +| minmax.c:22:18:22:18 | t | 1.0 | +| minmax.c:22:18:22:22 | ... = ... | 1.0 | +| minmax.c:22:22:22:22 | x | 1.0 | +| minmax.c:23:3:23:3 | t | 2.0 | +| minmax.c:26:2:26:7 | call to printf | 1.0 | +| minmax.c:26:37:26:37 | x | 1.0 | +| minmax.c:26:40:26:40 | y | 1.0 | +| minmax.c:26:43:26:43 | z | 2.0 | +| test.c:6:14:6:15 | 0 | 1.0 | +| test.c:8:5:8:9 | count | 1.0 | +| test.c:8:5:8:19 | ... = ... | 13.0 | +| test.c:8:13:8:17 | count | 13.0 | +| test.c:8:13:8:19 | ... + ... | 13.0 | +| test.c:8:19:8:19 | 1 | 1.0 | +| test.c:10:10:10:14 | count | 13.0 | +| test.c:14:14:14:15 | 0 | 1.0 | +| test.c:16:5:16:9 | count | 1.0 | +| test.c:16:5:16:26 | ... = ... | 13.0 | +| test.c:16:13:16:21 | (...) | 13.0 | +| test.c:16:13:16:26 | ... % ... | 13.0 | +| test.c:16:14:16:18 | count | 13.0 | +| test.c:16:14:16:20 | ... + ... | 13.0 | +| test.c:16:20:16:20 | 1 | 1.0 | +| test.c:16:25:16:26 | 10 | 1.0 | +| test.c:18:10:18:14 | count | 13.0 | +| test.c:22:14:22:15 | 0 | 1.0 | +| test.c:24:5:24:9 | count | 13.0 | +| test.c:24:5:24:11 | ... ++ | 13.0 | +| test.c:25:5:25:9 | count | 1.0 | +| test.c:25:5:25:22 | ... = ... | 13.0 | +| test.c:25:13:25:17 | count | 13.0 | +| test.c:25:13:25:22 | ... % ... | 13.0 | +| test.c:25:21:25:22 | 10 | 1.0 | +| test.c:27:10:27:14 | count | 13.0 | +| test.c:31:10:31:11 | 0 | 1.0 | +| test.c:32:14:32:15 | 0 | 1.0 | +| test.c:33:8:33:8 | i | 1.0 | +| test.c:33:8:33:12 | ... = ... | 1.0 | +| test.c:33:12:33:12 | 0 | 1.0 | +| test.c:33:15:33:15 | i | 13.0 | +| test.c:33:15:33:19 | ... < ... | 1.0 | +| test.c:33:19:33:19 | 2 | 1.0 | +| test.c:33:22:33:22 | i | 1.0 | +| test.c:33:22:33:28 | ... = ... | 13.0 | +| test.c:33:26:33:26 | i | 13.0 | +| test.c:33:26:33:28 | ... + ... | 13.0 | +| test.c:33:28:33:28 | 1 | 1.0 | +| test.c:34:5:34:9 | total | 13.0 | +| test.c:34:5:34:14 | ... += ... | 13.0 | +| test.c:34:14:34:14 | i | 13.0 | +| test.c:36:10:36:14 | total | 13.0 | +| test.c:36:10:36:18 | ... + ... | 13.0 | +| test.c:36:18:36:18 | i | 13.0 | +| test.c:40:10:40:11 | 0 | 1.0 | +| test.c:41:14:41:15 | 0 | 1.0 | +| test.c:42:8:42:8 | i | 1.0 | +| test.c:42:8:42:12 | ... = ... | 1.0 | +| test.c:42:12:42:12 | 0 | 1.0 | +| test.c:42:15:42:15 | i | 13.0 | +| test.c:42:15:42:19 | ... < ... | 1.0 | +| test.c:42:19:42:19 | 2 | 1.0 | +| test.c:42:22:42:22 | i | 13.0 | +| test.c:42:22:42:24 | ... ++ | 13.0 | +| test.c:43:5:43:9 | total | 13.0 | +| test.c:43:5:43:14 | ... += ... | 13.0 | +| test.c:43:14:43:14 | i | 13.0 | +| test.c:45:10:45:14 | total | 13.0 | +| test.c:45:10:45:18 | ... + ... | 13.0 | +| test.c:45:18:45:18 | i | 13.0 | +| test.c:49:10:49:11 | 0 | 1.0 | +| test.c:50:14:50:15 | 0 | 1.0 | +| test.c:51:8:51:8 | i | 1.0 | +| test.c:51:8:51:12 | ... = ... | 1.0 | +| test.c:51:12:51:12 | 0 | 1.0 | +| test.c:51:15:51:15 | i | 13.0 | +| test.c:51:15:51:17 | ... + ... | 13.0 | +| test.c:51:15:51:21 | ... < ... | 1.0 | +| test.c:51:17:51:17 | 2 | 1.0 | +| test.c:51:21:51:21 | 4 | 1.0 | +| test.c:51:24:51:24 | i | 1.0 | +| test.c:51:24:51:30 | ... = ... | 13.0 | +| test.c:51:28:51:28 | i | 13.0 | +| test.c:51:28:51:30 | ... + ... | 13.0 | +| test.c:51:30:51:30 | 1 | 1.0 | +| test.c:52:5:52:9 | total | 13.0 | +| test.c:52:5:52:14 | ... += ... | 13.0 | +| test.c:52:14:52:14 | i | 13.0 | +| test.c:54:10:54:14 | total | 13.0 | +| test.c:54:10:54:18 | ... + ... | 13.0 | +| test.c:54:18:54:18 | i | 13.0 | +| test.c:58:7:58:7 | i | 1.0 | +| test.c:58:7:58:11 | ... < ... | 1.0 | +| test.c:58:11:58:11 | 4 | 1.0 | +| test.c:59:9:59:9 | i | 1.0 | +| test.c:59:9:59:13 | ... < ... | 1.0 | +| test.c:59:13:59:13 | 5 | 1.0 | +| test.c:60:14:60:14 | i | 1.0 | +| test.c:63:10:63:10 | 1 | 1.0 | +| test.c:67:7:67:11 | - ... | 1.0 | +| test.c:67:7:67:15 | ... < ... | 1.0 | +| test.c:67:7:67:25 | ... && ... | 1.0 | +| test.c:67:8:67:11 | 1000 | 1.0 | +| test.c:67:15:67:15 | y | 1.0 | +| test.c:67:20:67:20 | y | 1.0 | +| test.c:67:20:67:25 | ... < ... | 1.0 | +| test.c:67:24:67:25 | 10 | 1.0 | +| test.c:68:9:68:9 | x | 1.0 | +| test.c:68:9:68:15 | ... < ... | 1.0 | +| test.c:68:13:68:13 | y | 1.0 | +| test.c:68:13:68:15 | ... - ... | 1.0 | +| test.c:68:15:68:15 | 2 | 1.0 | +| test.c:69:14:69:14 | x | 1.0 | +| test.c:72:10:72:10 | y | 1.0 | +| test.c:76:7:76:7 | y | 1.0 | +| test.c:76:7:76:12 | ... == ... | 1.0 | +| test.c:76:12:76:12 | 0 | 1.0 | +| test.c:77:9:77:9 | x | 1.0 | +| test.c:77:9:77:13 | ... < ... | 1.0 | +| test.c:77:13:77:13 | 4 | 1.0 | +| test.c:78:14:78:14 | 0 | 1.0 | +| test.c:81:9:81:9 | x | 1.0 | +| test.c:81:9:81:13 | ... < ... | 1.0 | +| test.c:81:13:81:13 | 4 | 1.0 | +| test.c:82:14:82:14 | 1 | 1.0 | +| test.c:85:10:85:10 | x | 1.0 | +| test.c:89:7:89:7 | y | 1.0 | +| test.c:89:7:89:11 | ... > ... | 1.0 | +| test.c:89:11:89:11 | 7 | 1.0 | +| test.c:90:9:90:9 | x | 1.0 | +| test.c:90:9:90:13 | ... < ... | 1.0 | +| test.c:90:13:90:13 | y | 1.0 | +| test.c:91:14:91:14 | 0 | 1.0 | +| test.c:93:12:93:12 | x | 1.0 | +| test.c:95:10:95:10 | 1 | 1.0 | +| test.c:100:3:100:3 | c | 1.0 | +| test.c:100:3:100:8 | ... = ... | 1.0 | +| test.c:100:7:100:8 | * ... | 1.0 | +| test.c:101:7:101:7 | (int)... | 1.0 | +| test.c:101:7:101:7 | c | 1.0 | +| test.c:101:7:101:15 | ... != ... | 1.0 | +| test.c:101:12:101:15 | 0 | 1.0 | +| test.c:102:5:102:8 | * ... | 1.0 | +| test.c:102:5:102:15 | ... = ... | 1.0 | +| test.c:102:12:102:15 | 0 | 1.0 | +| test.c:102:12:102:15 | (char)... | 1.0 | +| test.c:104:7:104:7 | (int)... | 2.0 | +| test.c:104:7:104:7 | c | 2.0 | +| test.c:104:7:104:14 | ... == ... | 1.0 | +| test.c:104:12:104:14 | 58 | 1.0 | +| test.c:105:5:105:5 | c | 1.0 | +| test.c:105:5:105:10 | ... = ... | 1.0 | +| test.c:105:9:105:10 | * ... | 1.0 | +| test.c:106:9:106:9 | (int)... | 1.0 | +| test.c:106:9:106:9 | c | 1.0 | +| test.c:106:9:106:17 | ... != ... | 1.0 | +| test.c:106:14:106:17 | 0 | 1.0 | +| test.c:107:7:107:10 | * ... | 1.0 | +| test.c:107:7:107:17 | ... = ... | 1.0 | +| test.c:107:14:107:17 | 0 | 1.0 | +| test.c:107:14:107:17 | (char)... | 1.0 | +| test.c:109:9:109:9 | (int)... | 2.0 | +| test.c:109:9:109:9 | c | 2.0 | +| test.c:109:9:109:16 | ... != ... | 1.0 | +| test.c:109:14:109:16 | 44 | 1.0 | +| test.c:110:14:110:14 | 1 | 1.0 | +| test.c:112:10:112:10 | 0 | 1.0 | +| test.c:118:24:118:24 | 0 | 1.0 | +| test.c:118:24:118:24 | (size_type)... | 1.0 | +| test.c:119:10:119:10 | n | 1.0 | +| test.c:119:10:119:12 | ... ++ | 1.0 | +| test.c:123:22:123:22 | 0 | 1.0 | +| test.c:123:22:123:22 | (size_type)... | 1.0 | +| test.c:124:11:124:15 | Start | 13.0 | +| test.c:124:11:124:36 | ... <= ... | 1.0 | +| test.c:124:20:124:32 | call to test12_helper | 1.0 | +| test.c:124:20:124:36 | ... - ... | 1.0 | +| test.c:124:36:124:36 | 1 | 1.0 | +| test.c:124:36:124:36 | (unsigned long long)... | 1.0 | +| test.c:126:31:126:43 | call to test12_helper | 1.0 | +| test.c:127:6:127:10 | Start | 13.0 | +| test.c:127:6:127:24 | ... += ... | 13.0 | +| test.c:127:15:127:20 | Length | 1.0 | +| test.c:127:15:127:24 | ... + ... | 1.0 | +| test.c:127:24:127:24 | 1 | 1.0 | +| test.c:127:24:127:24 | (unsigned long long)... | 1.0 | +| test.c:130:11:130:11 | 1 | 1.0 | +| test.c:135:22:135:22 | (unsigned char)... | 1.0 | +| test.c:135:22:135:22 | c | 1.0 | +| test.c:136:20:136:20 | 0 | 1.0 | +| test.c:136:20:136:20 | (unsigned int)... | 1.0 | +| test.c:137:20:137:20 | x | 1.0 | +| test.c:137:20:137:22 | ... - ... | 1.0 | +| test.c:137:22:137:22 | 1 | 1.0 | +| test.c:137:22:137:22 | (unsigned int)... | 1.0 | +| test.c:138:11:138:11 | i | 1.0 | +| test.c:138:11:138:13 | ... + ... | 1.0 | +| test.c:138:13:138:13 | 1 | 1.0 | +| test.c:139:10:139:41 | (double)... | 1.0 | +| test.c:139:10:139:41 | (int)... | 1.0 | +| test.c:139:18:139:41 | (...) | 1.0 | +| test.c:139:19:139:19 | (int)... | 1.0 | +| test.c:139:19:139:19 | c | 1.0 | +| test.c:139:19:139:23 | ... + ... | 1.0 | +| test.c:139:19:139:28 | (unsigned int)... | 1.0 | +| test.c:139:19:139:28 | ... + ... | 1.0 | +| test.c:139:19:139:32 | ... + ... | 1.0 | +| test.c:139:19:139:36 | ... + ... | 1.0 | +| test.c:139:19:139:40 | ... + ... | 1.0 | +| test.c:139:23:139:23 | i | 1.0 | +| test.c:139:27:139:28 | (int)... | 1.0 | +| test.c:139:27:139:28 | uc | 1.0 | +| test.c:139:32:139:32 | x | 1.0 | +| test.c:139:36:139:36 | y | 1.0 | +| test.c:139:40:139:40 | (unsigned int)... | 1.0 | +| test.c:139:40:139:40 | z | 1.0 | +| test.c:144:12:144:23 | (int)... | 1.0 | +| test.c:144:17:144:23 | (char)... | 1.0 | +| test.c:144:23:144:23 | x | 1.0 | +| test.c:145:12:145:32 | (int)... | 1.0 | +| test.c:145:17:145:32 | (unsigned char)... | 1.0 | +| test.c:145:32:145:32 | x | 1.0 | +| test.c:146:12:146:33 | (int)... | 1.0 | +| test.c:146:17:146:33 | (unsigned short)... | 1.0 | +| test.c:146:33:146:33 | x | 1.0 | +| test.c:147:12:147:31 | (int)... | 1.0 | +| test.c:147:17:147:31 | (unsigned int)... | 1.0 | +| test.c:147:31:147:31 | x | 1.0 | +| test.c:148:13:148:13 | (char)... | 1.0 | +| test.c:148:13:148:13 | x | 1.0 | +| test.c:149:23:149:23 | (unsigned short)... | 1.0 | +| test.c:149:23:149:23 | x | 1.0 | +| test.c:150:10:150:11 | x0 | 1.0 | +| test.c:150:10:150:16 | ... + ... | 1.0 | +| test.c:150:10:150:21 | ... + ... | 1.0 | +| test.c:150:10:150:26 | ... + ... | 1.0 | +| test.c:150:10:150:31 | ... + ... | 1.0 | +| test.c:150:10:150:36 | ... + ... | 1.0 | +| test.c:150:15:150:16 | x1 | 1.0 | +| test.c:150:20:150:21 | x2 | 1.0 | +| test.c:150:25:150:26 | x3 | 1.0 | +| test.c:150:30:150:31 | (int)... | 1.0 | +| test.c:150:30:150:31 | c0 | 1.0 | +| test.c:150:35:150:36 | (int)... | 1.0 | +| test.c:150:35:150:36 | s0 | 1.0 | +| test.c:154:10:154:31 | (...) | 1.0 | +| test.c:154:10:154:40 | ... ? ... : ... | 1.0 | +| test.c:154:11:154:11 | x | 1.0 | +| test.c:154:11:154:15 | ... > ... | 1.0 | +| test.c:154:11:154:30 | ... && ... | 1.0 | +| test.c:154:15:154:15 | 0 | 1.0 | +| test.c:154:15:154:15 | (long long)... | 1.0 | +| test.c:154:20:154:20 | x | 1.0 | +| test.c:154:20:154:30 | ... == ... | 1.0 | +| test.c:154:25:154:30 | (int)... | 1.0 | +| test.c:154:25:154:30 | (long long)... | 1.0 | +| test.c:154:30:154:30 | x | 1.0 | +| test.c:154:35:154:35 | x | 1.0 | +| test.c:154:39:154:40 | (long long)... | 1.0 | +| test.c:154:39:154:40 | - ... | 1.0 | +| test.c:154:40:154:40 | 1 | 1.0 | +| test.c:159:14:159:15 | 0 | 1.0 | +| test.c:161:7:161:7 | 3 | 1.0 | +| test.c:161:7:161:12 | ... <= ... | 1.0 | +| test.c:161:7:161:23 | ... && ... | 1.0 | +| test.c:161:12:161:12 | a | 1.0 | +| test.c:161:17:161:17 | a | 1.0 | +| test.c:161:17:161:23 | ... <= ... | 1.0 | +| test.c:161:22:161:23 | 11 | 1.0 | +| test.c:162:13:162:14 | + ... | 1.0 | +| test.c:162:14:162:14 | a | 1.0 | +| test.c:163:13:163:14 | - ... | 1.0 | +| test.c:163:14:163:14 | a | 1.0 | +| test.c:164:5:164:9 | total | 1.0 | +| test.c:164:5:164:16 | ... += ... | 1.0 | +| test.c:164:14:164:14 | b | 1.0 | +| test.c:164:14:164:16 | ... + ... | 1.0 | +| test.c:164:16:164:16 | c | 1.0 | +| test.c:166:7:166:7 | 0 | 1.0 | +| test.c:166:7:166:12 | ... <= ... | 1.0 | +| test.c:166:7:166:23 | ... && ... | 1.0 | +| test.c:166:12:166:12 | a | 2.0 | +| test.c:166:17:166:17 | a | 2.0 | +| test.c:166:17:166:23 | ... <= ... | 1.0 | +| test.c:166:22:166:23 | 11 | 1.0 | +| test.c:167:13:167:14 | + ... | 2.0 | +| test.c:167:14:167:14 | a | 2.0 | +| test.c:168:13:168:14 | - ... | 2.0 | +| test.c:168:14:168:14 | a | 2.0 | +| test.c:169:5:169:9 | total | 2.0 | +| test.c:169:5:169:16 | ... += ... | 8.0 | +| test.c:169:14:169:14 | b | 2.0 | +| test.c:169:14:169:16 | ... + ... | 4.0 | +| test.c:169:16:169:16 | c | 2.0 | +| test.c:171:7:171:8 | - ... | 1.0 | +| test.c:171:7:171:13 | ... <= ... | 1.0 | +| test.c:171:7:171:24 | ... && ... | 1.0 | +| test.c:171:8:171:8 | 7 | 1.0 | +| test.c:171:13:171:13 | a | 3.0 | +| test.c:171:18:171:18 | a | 3.0 | +| test.c:171:18:171:24 | ... <= ... | 1.0 | +| test.c:171:23:171:24 | 11 | 1.0 | +| test.c:172:13:172:14 | + ... | 3.0 | +| test.c:172:14:172:14 | a | 3.0 | +| test.c:173:13:173:14 | - ... | 3.0 | +| test.c:173:14:173:14 | a | 3.0 | +| test.c:174:5:174:9 | total | 10.0 | +| test.c:174:5:174:16 | ... += ... | 90.0 | +| test.c:174:14:174:14 | b | 3.0 | +| test.c:174:14:174:16 | ... + ... | 9.0 | +| test.c:174:16:174:16 | c | 3.0 | +| test.c:176:7:176:8 | - ... | 1.0 | +| test.c:176:7:176:13 | ... <= ... | 1.0 | +| test.c:176:7:176:23 | ... && ... | 1.0 | +| test.c:176:8:176:8 | 7 | 1.0 | +| test.c:176:13:176:13 | a | 4.0 | +| test.c:176:18:176:18 | a | 4.0 | +| test.c:176:18:176:23 | ... <= ... | 1.0 | +| test.c:176:23:176:23 | 1 | 1.0 | +| test.c:177:13:177:14 | + ... | 4.0 | +| test.c:177:14:177:14 | a | 4.0 | +| test.c:178:13:178:14 | - ... | 4.0 | +| test.c:178:14:178:14 | a | 4.0 | +| test.c:179:5:179:9 | total | 100.0 | +| test.c:179:5:179:16 | ... += ... | 1600.0 | +| test.c:179:14:179:14 | b | 4.0 | +| test.c:179:14:179:16 | ... + ... | 16.0 | +| test.c:179:16:179:16 | c | 4.0 | +| test.c:181:7:181:8 | - ... | 1.0 | +| test.c:181:7:181:13 | ... <= ... | 1.0 | +| test.c:181:7:181:23 | ... && ... | 1.0 | +| test.c:181:8:181:8 | 7 | 1.0 | +| test.c:181:13:181:13 | a | 5.0 | +| test.c:181:18:181:18 | a | 5.0 | +| test.c:181:18:181:23 | ... <= ... | 1.0 | +| test.c:181:23:181:23 | 0 | 1.0 | +| test.c:182:13:182:14 | + ... | 5.0 | +| test.c:182:14:182:14 | a | 5.0 | +| test.c:183:13:183:14 | - ... | 5.0 | +| test.c:183:14:183:14 | a | 5.0 | +| test.c:184:5:184:9 | total | 1700.0 | +| test.c:184:5:184:16 | ... += ... | 42500.0 | +| test.c:184:14:184:14 | b | 5.0 | +| test.c:184:14:184:16 | ... + ... | 25.0 | +| test.c:184:16:184:16 | c | 5.0 | +| test.c:186:7:186:8 | - ... | 1.0 | +| test.c:186:7:186:13 | ... <= ... | 1.0 | +| test.c:186:7:186:24 | ... && ... | 1.0 | +| test.c:186:8:186:8 | 7 | 1.0 | +| test.c:186:13:186:13 | a | 6.0 | +| test.c:186:18:186:18 | a | 6.0 | +| test.c:186:18:186:24 | ... <= ... | 1.0 | +| test.c:186:23:186:24 | - ... | 1.0 | +| test.c:186:24:186:24 | 2 | 1.0 | +| test.c:187:13:187:14 | + ... | 6.0 | +| test.c:187:14:187:14 | a | 6.0 | +| test.c:188:13:188:14 | - ... | 6.0 | +| test.c:188:14:188:14 | a | 6.0 | +| test.c:189:5:189:9 | total | 44200.0 | +| test.c:189:5:189:16 | ... += ... | 1591200.0 | +| test.c:189:14:189:14 | b | 6.0 | +| test.c:189:14:189:16 | ... + ... | 36.0 | +| test.c:189:16:189:16 | c | 6.0 | +| test.c:192:10:192:14 | total | 1635400.0 | +| test.c:198:14:198:15 | 0 | 1.0 | +| test.c:200:7:200:7 | 3 | 1.0 | +| test.c:200:7:200:12 | ... <= ... | 1.0 | +| test.c:200:7:200:23 | ... && ... | 1.0 | +| test.c:200:7:200:33 | ... && ... | 1.0 | +| test.c:200:7:200:44 | ... && ... | 1.0 | +| test.c:200:12:200:12 | a | 1.0 | +| test.c:200:17:200:17 | a | 1.0 | +| test.c:200:17:200:23 | ... <= ... | 1.0 | +| test.c:200:22:200:23 | 11 | 1.0 | +| test.c:200:28:200:28 | 5 | 1.0 | +| test.c:200:28:200:33 | ... <= ... | 1.0 | +| test.c:200:33:200:33 | b | 1.0 | +| test.c:200:38:200:38 | b | 1.0 | +| test.c:200:38:200:44 | ... <= ... | 1.0 | +| test.c:200:43:200:44 | 23 | 1.0 | +| test.c:201:13:201:13 | a | 1.0 | +| test.c:201:13:201:15 | ... * ... | 1.0 | +| test.c:201:15:201:15 | b | 1.0 | +| test.c:202:5:202:9 | total | 1.0 | +| test.c:202:5:202:14 | ... += ... | 1.0 | +| test.c:202:14:202:14 | r | 1.0 | +| test.c:204:7:204:7 | 3 | 1.0 | +| test.c:204:7:204:12 | ... <= ... | 1.0 | +| test.c:204:7:204:23 | ... && ... | 1.0 | +| test.c:204:7:204:33 | ... && ... | 1.0 | +| test.c:204:7:204:44 | ... && ... | 1.0 | +| test.c:204:12:204:12 | a | 2.0 | +| test.c:204:17:204:17 | a | 2.0 | +| test.c:204:17:204:23 | ... <= ... | 1.0 | +| test.c:204:22:204:23 | 11 | 1.0 | +| test.c:204:28:204:28 | 0 | 1.0 | +| test.c:204:28:204:33 | ... <= ... | 1.0 | +| test.c:204:33:204:33 | b | 3.0 | +| test.c:204:38:204:38 | b | 3.0 | +| test.c:204:38:204:44 | ... <= ... | 1.0 | +| test.c:204:43:204:44 | 23 | 1.0 | +| test.c:205:13:205:13 | a | 2.0 | +| test.c:205:13:205:15 | ... * ... | 1.0 | +| test.c:205:15:205:15 | b | 3.0 | +| test.c:206:5:206:9 | total | 2.0 | +| test.c:206:5:206:14 | ... += ... | 2.0 | +| test.c:206:14:206:14 | r | 1.0 | +| test.c:208:7:208:7 | 3 | 1.0 | +| test.c:208:7:208:12 | ... <= ... | 1.0 | +| test.c:208:7:208:23 | ... && ... | 1.0 | +| test.c:208:7:208:35 | ... && ... | 1.0 | +| test.c:208:7:208:46 | ... && ... | 1.0 | +| test.c:208:12:208:12 | a | 3.0 | +| test.c:208:17:208:17 | a | 3.0 | +| test.c:208:17:208:23 | ... <= ... | 1.0 | +| test.c:208:22:208:23 | 11 | 1.0 | +| test.c:208:28:208:30 | - ... | 1.0 | +| test.c:208:28:208:35 | ... <= ... | 1.0 | +| test.c:208:29:208:30 | 13 | 1.0 | +| test.c:208:35:208:35 | b | 7.0 | +| test.c:208:40:208:40 | b | 7.0 | +| test.c:208:40:208:46 | ... <= ... | 1.0 | +| test.c:208:45:208:46 | 23 | 1.0 | +| test.c:209:13:209:13 | a | 3.0 | +| test.c:209:13:209:15 | ... * ... | 1.0 | +| test.c:209:15:209:15 | b | 7.0 | +| test.c:210:5:210:9 | total | 4.0 | +| test.c:210:5:210:14 | ... += ... | 4.0 | +| test.c:210:14:210:14 | r | 1.0 | +| test.c:212:7:212:7 | 3 | 1.0 | +| test.c:212:7:212:12 | ... <= ... | 1.0 | +| test.c:212:7:212:23 | ... && ... | 1.0 | +| test.c:212:7:212:35 | ... && ... | 1.0 | +| test.c:212:7:212:45 | ... && ... | 1.0 | +| test.c:212:12:212:12 | a | 4.0 | +| test.c:212:17:212:17 | a | 4.0 | +| test.c:212:17:212:23 | ... <= ... | 1.0 | +| test.c:212:22:212:23 | 11 | 1.0 | +| test.c:212:28:212:30 | - ... | 1.0 | +| test.c:212:28:212:35 | ... <= ... | 1.0 | +| test.c:212:29:212:30 | 13 | 1.0 | +| test.c:212:35:212:35 | b | 15.0 | +| test.c:212:40:212:40 | b | 15.0 | +| test.c:212:40:212:45 | ... <= ... | 1.0 | +| test.c:212:45:212:45 | 0 | 1.0 | +| test.c:213:13:213:13 | a | 4.0 | +| test.c:213:13:213:15 | ... * ... | 1.0 | +| test.c:213:15:213:15 | b | 15.0 | +| test.c:214:5:214:9 | total | 8.0 | +| test.c:214:5:214:14 | ... += ... | 8.0 | +| test.c:214:14:214:14 | r | 1.0 | +| test.c:216:7:216:7 | 3 | 1.0 | +| test.c:216:7:216:12 | ... <= ... | 1.0 | +| test.c:216:7:216:23 | ... && ... | 1.0 | +| test.c:216:7:216:35 | ... && ... | 1.0 | +| test.c:216:7:216:46 | ... && ... | 1.0 | +| test.c:216:12:216:12 | a | 5.0 | +| test.c:216:17:216:17 | a | 5.0 | +| test.c:216:17:216:23 | ... <= ... | 1.0 | +| test.c:216:22:216:23 | 11 | 1.0 | +| test.c:216:28:216:30 | - ... | 1.0 | +| test.c:216:28:216:35 | ... <= ... | 1.0 | +| test.c:216:29:216:30 | 13 | 1.0 | +| test.c:216:35:216:35 | b | 31.0 | +| test.c:216:40:216:40 | b | 31.0 | +| test.c:216:40:216:46 | ... <= ... | 1.0 | +| test.c:216:45:216:46 | - ... | 1.0 | +| test.c:216:46:216:46 | 7 | 1.0 | +| test.c:217:13:217:13 | a | 5.0 | +| test.c:217:13:217:15 | ... * ... | 1.0 | +| test.c:217:15:217:15 | b | 31.0 | +| test.c:218:5:218:9 | total | 16.0 | +| test.c:218:5:218:14 | ... += ... | 16.0 | +| test.c:218:14:218:14 | r | 1.0 | +| test.c:221:10:221:14 | total | 32.0 | +| test.c:226:14:226:15 | 0 | 1.0 | +| test.c:228:7:228:7 | 0 | 1.0 | +| test.c:228:7:228:12 | ... <= ... | 1.0 | +| test.c:228:7:228:23 | ... && ... | 1.0 | +| test.c:228:7:228:33 | ... && ... | 1.0 | +| test.c:228:7:228:44 | ... && ... | 1.0 | +| test.c:228:12:228:12 | a | 1.0 | +| test.c:228:17:228:17 | a | 1.0 | +| test.c:228:17:228:23 | ... <= ... | 1.0 | +| test.c:228:22:228:23 | 11 | 1.0 | +| test.c:228:28:228:28 | 5 | 1.0 | +| test.c:228:28:228:33 | ... <= ... | 1.0 | +| test.c:228:33:228:33 | b | 1.0 | +| test.c:228:38:228:38 | b | 1.0 | +| test.c:228:38:228:44 | ... <= ... | 1.0 | +| test.c:228:43:228:44 | 23 | 1.0 | +| test.c:229:13:229:13 | a | 1.0 | +| test.c:229:13:229:15 | ... * ... | 1.0 | +| test.c:229:15:229:15 | b | 1.0 | +| test.c:230:5:230:9 | total | 1.0 | +| test.c:230:5:230:14 | ... += ... | 1.0 | +| test.c:230:14:230:14 | r | 1.0 | +| test.c:232:7:232:7 | 0 | 1.0 | +| test.c:232:7:232:12 | ... <= ... | 1.0 | +| test.c:232:7:232:23 | ... && ... | 1.0 | +| test.c:232:7:232:33 | ... && ... | 1.0 | +| test.c:232:7:232:44 | ... && ... | 1.0 | +| test.c:232:12:232:12 | a | 2.0 | +| test.c:232:17:232:17 | a | 2.0 | +| test.c:232:17:232:23 | ... <= ... | 1.0 | +| test.c:232:22:232:23 | 11 | 1.0 | +| test.c:232:28:232:28 | 0 | 1.0 | +| test.c:232:28:232:33 | ... <= ... | 1.0 | +| test.c:232:33:232:33 | b | 3.0 | +| test.c:232:38:232:38 | b | 3.0 | +| test.c:232:38:232:44 | ... <= ... | 1.0 | +| test.c:232:43:232:44 | 23 | 1.0 | +| test.c:233:13:233:13 | a | 2.0 | +| test.c:233:13:233:15 | ... * ... | 1.0 | +| test.c:233:15:233:15 | b | 3.0 | +| test.c:234:5:234:9 | total | 2.0 | +| test.c:234:5:234:14 | ... += ... | 2.0 | +| test.c:234:14:234:14 | r | 1.0 | +| test.c:236:7:236:7 | 0 | 1.0 | +| test.c:236:7:236:12 | ... <= ... | 1.0 | +| test.c:236:7:236:23 | ... && ... | 1.0 | +| test.c:236:7:236:35 | ... && ... | 1.0 | +| test.c:236:7:236:46 | ... && ... | 1.0 | +| test.c:236:12:236:12 | a | 3.0 | +| test.c:236:17:236:17 | a | 3.0 | +| test.c:236:17:236:23 | ... <= ... | 1.0 | +| test.c:236:22:236:23 | 11 | 1.0 | +| test.c:236:28:236:30 | - ... | 1.0 | +| test.c:236:28:236:35 | ... <= ... | 1.0 | +| test.c:236:29:236:30 | 13 | 1.0 | +| test.c:236:35:236:35 | b | 7.0 | +| test.c:236:40:236:40 | b | 7.0 | +| test.c:236:40:236:46 | ... <= ... | 1.0 | +| test.c:236:45:236:46 | 23 | 1.0 | +| test.c:237:13:237:13 | a | 3.0 | +| test.c:237:13:237:15 | ... * ... | 1.0 | +| test.c:237:15:237:15 | b | 7.0 | +| test.c:238:5:238:9 | total | 4.0 | +| test.c:238:5:238:14 | ... += ... | 4.0 | +| test.c:238:14:238:14 | r | 1.0 | +| test.c:240:7:240:7 | 0 | 1.0 | +| test.c:240:7:240:12 | ... <= ... | 1.0 | +| test.c:240:7:240:23 | ... && ... | 1.0 | +| test.c:240:7:240:35 | ... && ... | 1.0 | +| test.c:240:7:240:45 | ... && ... | 1.0 | +| test.c:240:12:240:12 | a | 4.0 | +| test.c:240:17:240:17 | a | 4.0 | +| test.c:240:17:240:23 | ... <= ... | 1.0 | +| test.c:240:22:240:23 | 11 | 1.0 | +| test.c:240:28:240:30 | - ... | 1.0 | +| test.c:240:28:240:35 | ... <= ... | 1.0 | +| test.c:240:29:240:30 | 13 | 1.0 | +| test.c:240:35:240:35 | b | 15.0 | +| test.c:240:40:240:40 | b | 15.0 | +| test.c:240:40:240:45 | ... <= ... | 1.0 | +| test.c:240:45:240:45 | 0 | 1.0 | +| test.c:241:13:241:13 | a | 4.0 | +| test.c:241:13:241:15 | ... * ... | 1.0 | +| test.c:241:15:241:15 | b | 15.0 | +| test.c:242:5:242:9 | total | 8.0 | +| test.c:242:5:242:14 | ... += ... | 8.0 | +| test.c:242:14:242:14 | r | 1.0 | +| test.c:244:7:244:7 | 0 | 1.0 | +| test.c:244:7:244:12 | ... <= ... | 1.0 | +| test.c:244:7:244:23 | ... && ... | 1.0 | +| test.c:244:7:244:35 | ... && ... | 1.0 | +| test.c:244:7:244:46 | ... && ... | 1.0 | +| test.c:244:12:244:12 | a | 5.0 | +| test.c:244:17:244:17 | a | 5.0 | +| test.c:244:17:244:23 | ... <= ... | 1.0 | +| test.c:244:22:244:23 | 11 | 1.0 | +| test.c:244:28:244:30 | - ... | 1.0 | +| test.c:244:28:244:35 | ... <= ... | 1.0 | +| test.c:244:29:244:30 | 13 | 1.0 | +| test.c:244:35:244:35 | b | 31.0 | +| test.c:244:40:244:40 | b | 31.0 | +| test.c:244:40:244:46 | ... <= ... | 1.0 | +| test.c:244:45:244:46 | - ... | 1.0 | +| test.c:244:46:244:46 | 7 | 1.0 | +| test.c:245:13:245:13 | a | 5.0 | +| test.c:245:13:245:15 | ... * ... | 1.0 | +| test.c:245:15:245:15 | b | 31.0 | +| test.c:246:5:246:9 | total | 16.0 | +| test.c:246:5:246:14 | ... += ... | 16.0 | +| test.c:246:14:246:14 | r | 1.0 | +| test.c:249:10:249:14 | total | 32.0 | +| test.c:254:14:254:15 | 0 | 1.0 | +| test.c:256:7:256:9 | - ... | 1.0 | +| test.c:256:7:256:14 | ... <= ... | 1.0 | +| test.c:256:7:256:25 | ... && ... | 1.0 | +| test.c:256:7:256:35 | ... && ... | 1.0 | +| test.c:256:7:256:46 | ... && ... | 1.0 | +| test.c:256:8:256:9 | 17 | 1.0 | +| test.c:256:14:256:14 | a | 1.0 | +| test.c:256:19:256:19 | a | 1.0 | +| test.c:256:19:256:25 | ... <= ... | 1.0 | +| test.c:256:24:256:25 | 11 | 1.0 | +| test.c:256:30:256:30 | 5 | 1.0 | +| test.c:256:30:256:35 | ... <= ... | 1.0 | +| test.c:256:35:256:35 | b | 1.0 | +| test.c:256:40:256:40 | b | 1.0 | +| test.c:256:40:256:46 | ... <= ... | 1.0 | +| test.c:256:45:256:46 | 23 | 1.0 | +| test.c:257:13:257:13 | a | 1.0 | +| test.c:257:13:257:15 | ... * ... | 1.0 | +| test.c:257:15:257:15 | b | 1.0 | +| test.c:258:5:258:9 | total | 1.0 | +| test.c:258:5:258:14 | ... += ... | 1.0 | +| test.c:258:14:258:14 | r | 1.0 | +| test.c:260:7:260:9 | - ... | 1.0 | +| test.c:260:7:260:14 | ... <= ... | 1.0 | +| test.c:260:7:260:25 | ... && ... | 1.0 | +| test.c:260:7:260:35 | ... && ... | 1.0 | +| test.c:260:7:260:46 | ... && ... | 1.0 | +| test.c:260:8:260:9 | 17 | 1.0 | +| test.c:260:14:260:14 | a | 2.0 | +| test.c:260:19:260:19 | a | 2.0 | +| test.c:260:19:260:25 | ... <= ... | 1.0 | +| test.c:260:24:260:25 | 11 | 1.0 | +| test.c:260:30:260:30 | 0 | 1.0 | +| test.c:260:30:260:35 | ... <= ... | 1.0 | +| test.c:260:35:260:35 | b | 3.0 | +| test.c:260:40:260:40 | b | 3.0 | +| test.c:260:40:260:46 | ... <= ... | 1.0 | +| test.c:260:45:260:46 | 23 | 1.0 | +| test.c:261:13:261:13 | a | 2.0 | +| test.c:261:13:261:15 | ... * ... | 1.0 | +| test.c:261:15:261:15 | b | 3.0 | +| test.c:262:5:262:9 | total | 2.0 | +| test.c:262:5:262:14 | ... += ... | 2.0 | +| test.c:262:14:262:14 | r | 1.0 | +| test.c:264:7:264:9 | - ... | 1.0 | +| test.c:264:7:264:14 | ... <= ... | 1.0 | +| test.c:264:7:264:25 | ... && ... | 1.0 | +| test.c:264:7:264:37 | ... && ... | 1.0 | +| test.c:264:7:264:48 | ... && ... | 1.0 | +| test.c:264:8:264:9 | 17 | 1.0 | +| test.c:264:14:264:14 | a | 3.0 | +| test.c:264:19:264:19 | a | 3.0 | +| test.c:264:19:264:25 | ... <= ... | 1.0 | +| test.c:264:24:264:25 | 11 | 1.0 | +| test.c:264:30:264:32 | - ... | 1.0 | +| test.c:264:30:264:37 | ... <= ... | 1.0 | +| test.c:264:31:264:32 | 13 | 1.0 | +| test.c:264:37:264:37 | b | 7.0 | +| test.c:264:42:264:42 | b | 7.0 | +| test.c:264:42:264:48 | ... <= ... | 1.0 | +| test.c:264:47:264:48 | 23 | 1.0 | +| test.c:265:13:265:13 | a | 3.0 | +| test.c:265:13:265:15 | ... * ... | 1.0 | +| test.c:265:15:265:15 | b | 7.0 | +| test.c:266:5:266:9 | total | 4.0 | +| test.c:266:5:266:14 | ... += ... | 4.0 | +| test.c:266:14:266:14 | r | 1.0 | +| test.c:268:7:268:9 | - ... | 1.0 | +| test.c:268:7:268:14 | ... <= ... | 1.0 | +| test.c:268:7:268:25 | ... && ... | 1.0 | +| test.c:268:7:268:37 | ... && ... | 1.0 | +| test.c:268:7:268:47 | ... && ... | 1.0 | +| test.c:268:8:268:9 | 17 | 1.0 | +| test.c:268:14:268:14 | a | 4.0 | +| test.c:268:19:268:19 | a | 4.0 | +| test.c:268:19:268:25 | ... <= ... | 1.0 | +| test.c:268:24:268:25 | 11 | 1.0 | +| test.c:268:30:268:32 | - ... | 1.0 | +| test.c:268:30:268:37 | ... <= ... | 1.0 | +| test.c:268:31:268:32 | 13 | 1.0 | +| test.c:268:37:268:37 | b | 15.0 | +| test.c:268:42:268:42 | b | 15.0 | +| test.c:268:42:268:47 | ... <= ... | 1.0 | +| test.c:268:47:268:47 | 0 | 1.0 | +| test.c:269:13:269:13 | a | 4.0 | +| test.c:269:13:269:15 | ... * ... | 1.0 | +| test.c:269:15:269:15 | b | 15.0 | +| test.c:270:5:270:9 | total | 8.0 | +| test.c:270:5:270:14 | ... += ... | 8.0 | +| test.c:270:14:270:14 | r | 1.0 | +| test.c:272:7:272:9 | - ... | 1.0 | +| test.c:272:7:272:14 | ... <= ... | 1.0 | +| test.c:272:7:272:25 | ... && ... | 1.0 | +| test.c:272:7:272:37 | ... && ... | 1.0 | +| test.c:272:7:272:48 | ... && ... | 1.0 | +| test.c:272:8:272:9 | 17 | 1.0 | +| test.c:272:14:272:14 | a | 5.0 | +| test.c:272:19:272:19 | a | 5.0 | +| test.c:272:19:272:25 | ... <= ... | 1.0 | +| test.c:272:24:272:25 | 11 | 1.0 | +| test.c:272:30:272:32 | - ... | 1.0 | +| test.c:272:30:272:37 | ... <= ... | 1.0 | +| test.c:272:31:272:32 | 13 | 1.0 | +| test.c:272:37:272:37 | b | 31.0 | +| test.c:272:42:272:42 | b | 31.0 | +| test.c:272:42:272:48 | ... <= ... | 1.0 | +| test.c:272:47:272:48 | - ... | 1.0 | +| test.c:272:48:272:48 | 7 | 1.0 | +| test.c:273:13:273:13 | a | 5.0 | +| test.c:273:13:273:15 | ... * ... | 1.0 | +| test.c:273:15:273:15 | b | 31.0 | +| test.c:274:5:274:9 | total | 16.0 | +| test.c:274:5:274:14 | ... += ... | 16.0 | +| test.c:274:14:274:14 | r | 1.0 | +| test.c:277:10:277:14 | total | 32.0 | +| test.c:282:14:282:15 | 0 | 1.0 | +| test.c:284:7:284:9 | - ... | 1.0 | +| test.c:284:7:284:14 | ... <= ... | 1.0 | +| test.c:284:7:284:24 | ... && ... | 1.0 | +| test.c:284:7:284:34 | ... && ... | 1.0 | +| test.c:284:7:284:45 | ... && ... | 1.0 | +| test.c:284:8:284:9 | 17 | 1.0 | +| test.c:284:14:284:14 | a | 1.0 | +| test.c:284:19:284:19 | a | 1.0 | +| test.c:284:19:284:24 | ... <= ... | 1.0 | +| test.c:284:24:284:24 | 0 | 1.0 | +| test.c:284:29:284:29 | 5 | 1.0 | +| test.c:284:29:284:34 | ... <= ... | 1.0 | +| test.c:284:34:284:34 | b | 1.0 | +| test.c:284:39:284:39 | b | 1.0 | +| test.c:284:39:284:45 | ... <= ... | 1.0 | +| test.c:284:44:284:45 | 23 | 1.0 | +| test.c:285:13:285:13 | a | 1.0 | +| test.c:285:13:285:15 | ... * ... | 1.0 | +| test.c:285:15:285:15 | b | 1.0 | +| test.c:286:5:286:9 | total | 1.0 | +| test.c:286:5:286:14 | ... += ... | 1.0 | +| test.c:286:14:286:14 | r | 1.0 | +| test.c:288:7:288:9 | - ... | 1.0 | +| test.c:288:7:288:14 | ... <= ... | 1.0 | +| test.c:288:7:288:24 | ... && ... | 1.0 | +| test.c:288:7:288:34 | ... && ... | 1.0 | +| test.c:288:7:288:45 | ... && ... | 1.0 | +| test.c:288:8:288:9 | 17 | 1.0 | +| test.c:288:14:288:14 | a | 2.0 | +| test.c:288:19:288:19 | a | 2.0 | +| test.c:288:19:288:24 | ... <= ... | 1.0 | +| test.c:288:24:288:24 | 0 | 1.0 | +| test.c:288:29:288:29 | 0 | 1.0 | +| test.c:288:29:288:34 | ... <= ... | 1.0 | +| test.c:288:34:288:34 | b | 3.0 | +| test.c:288:39:288:39 | b | 3.0 | +| test.c:288:39:288:45 | ... <= ... | 1.0 | +| test.c:288:44:288:45 | 23 | 1.0 | +| test.c:289:13:289:13 | a | 2.0 | +| test.c:289:13:289:15 | ... * ... | 1.0 | +| test.c:289:15:289:15 | b | 3.0 | +| test.c:290:5:290:9 | total | 2.0 | +| test.c:290:5:290:14 | ... += ... | 2.0 | +| test.c:290:14:290:14 | r | 1.0 | +| test.c:292:7:292:9 | - ... | 1.0 | +| test.c:292:7:292:14 | ... <= ... | 1.0 | +| test.c:292:7:292:24 | ... && ... | 1.0 | +| test.c:292:7:292:36 | ... && ... | 1.0 | +| test.c:292:7:292:47 | ... && ... | 1.0 | +| test.c:292:8:292:9 | 17 | 1.0 | +| test.c:292:14:292:14 | a | 3.0 | +| test.c:292:19:292:19 | a | 3.0 | +| test.c:292:19:292:24 | ... <= ... | 1.0 | +| test.c:292:24:292:24 | 0 | 1.0 | +| test.c:292:29:292:31 | - ... | 1.0 | +| test.c:292:29:292:36 | ... <= ... | 1.0 | +| test.c:292:30:292:31 | 13 | 1.0 | +| test.c:292:36:292:36 | b | 7.0 | +| test.c:292:41:292:41 | b | 7.0 | +| test.c:292:41:292:47 | ... <= ... | 1.0 | +| test.c:292:46:292:47 | 23 | 1.0 | +| test.c:293:13:293:13 | a | 3.0 | +| test.c:293:13:293:15 | ... * ... | 1.0 | +| test.c:293:15:293:15 | b | 7.0 | +| test.c:294:5:294:9 | total | 4.0 | +| test.c:294:5:294:14 | ... += ... | 4.0 | +| test.c:294:14:294:14 | r | 1.0 | +| test.c:296:7:296:9 | - ... | 1.0 | +| test.c:296:7:296:14 | ... <= ... | 1.0 | +| test.c:296:7:296:24 | ... && ... | 1.0 | +| test.c:296:7:296:36 | ... && ... | 1.0 | +| test.c:296:7:296:46 | ... && ... | 1.0 | +| test.c:296:8:296:9 | 17 | 1.0 | +| test.c:296:14:296:14 | a | 4.0 | +| test.c:296:19:296:19 | a | 4.0 | +| test.c:296:19:296:24 | ... <= ... | 1.0 | +| test.c:296:24:296:24 | 0 | 1.0 | +| test.c:296:29:296:31 | - ... | 1.0 | +| test.c:296:29:296:36 | ... <= ... | 1.0 | +| test.c:296:30:296:31 | 13 | 1.0 | +| test.c:296:36:296:36 | b | 15.0 | +| test.c:296:41:296:41 | b | 15.0 | +| test.c:296:41:296:46 | ... <= ... | 1.0 | +| test.c:296:46:296:46 | 0 | 1.0 | +| test.c:297:13:297:13 | a | 4.0 | +| test.c:297:13:297:15 | ... * ... | 1.0 | +| test.c:297:15:297:15 | b | 15.0 | +| test.c:298:5:298:9 | total | 8.0 | +| test.c:298:5:298:14 | ... += ... | 8.0 | +| test.c:298:14:298:14 | r | 1.0 | +| test.c:300:7:300:9 | - ... | 1.0 | +| test.c:300:7:300:14 | ... <= ... | 1.0 | +| test.c:300:7:300:24 | ... && ... | 1.0 | +| test.c:300:7:300:36 | ... && ... | 1.0 | +| test.c:300:7:300:47 | ... && ... | 1.0 | +| test.c:300:8:300:9 | 17 | 1.0 | +| test.c:300:14:300:14 | a | 5.0 | +| test.c:300:19:300:19 | a | 5.0 | +| test.c:300:19:300:24 | ... <= ... | 1.0 | +| test.c:300:24:300:24 | 0 | 1.0 | +| test.c:300:29:300:31 | - ... | 1.0 | +| test.c:300:29:300:36 | ... <= ... | 1.0 | +| test.c:300:30:300:31 | 13 | 1.0 | +| test.c:300:36:300:36 | b | 31.0 | +| test.c:300:41:300:41 | b | 31.0 | +| test.c:300:41:300:47 | ... <= ... | 1.0 | +| test.c:300:46:300:47 | - ... | 1.0 | +| test.c:300:47:300:47 | 7 | 1.0 | +| test.c:301:13:301:13 | a | 5.0 | +| test.c:301:13:301:15 | ... * ... | 1.0 | +| test.c:301:15:301:15 | b | 31.0 | +| test.c:302:5:302:9 | total | 16.0 | +| test.c:302:5:302:14 | ... += ... | 16.0 | +| test.c:302:14:302:14 | r | 1.0 | +| test.c:305:10:305:14 | total | 32.0 | +| test.c:310:14:310:15 | 0 | 1.0 | +| test.c:312:7:312:9 | - ... | 1.0 | +| test.c:312:7:312:14 | ... <= ... | 1.0 | +| test.c:312:7:312:25 | ... && ... | 1.0 | +| test.c:312:7:312:35 | ... && ... | 1.0 | +| test.c:312:7:312:46 | ... && ... | 1.0 | +| test.c:312:8:312:9 | 17 | 1.0 | +| test.c:312:14:312:14 | a | 1.0 | +| test.c:312:19:312:19 | a | 1.0 | +| test.c:312:19:312:25 | ... <= ... | 1.0 | +| test.c:312:24:312:25 | - ... | 1.0 | +| test.c:312:25:312:25 | 2 | 1.0 | +| test.c:312:30:312:30 | 5 | 1.0 | +| test.c:312:30:312:35 | ... <= ... | 1.0 | +| test.c:312:35:312:35 | b | 1.0 | +| test.c:312:40:312:40 | b | 1.0 | +| test.c:312:40:312:46 | ... <= ... | 1.0 | +| test.c:312:45:312:46 | 23 | 1.0 | +| test.c:313:13:313:13 | a | 1.0 | +| test.c:313:13:313:15 | ... * ... | 1.0 | +| test.c:313:15:313:15 | b | 1.0 | +| test.c:314:5:314:9 | total | 1.0 | +| test.c:314:5:314:14 | ... += ... | 1.0 | +| test.c:314:14:314:14 | r | 1.0 | +| test.c:316:7:316:9 | - ... | 1.0 | +| test.c:316:7:316:14 | ... <= ... | 1.0 | +| test.c:316:7:316:25 | ... && ... | 1.0 | +| test.c:316:7:316:35 | ... && ... | 1.0 | +| test.c:316:7:316:46 | ... && ... | 1.0 | +| test.c:316:8:316:9 | 17 | 1.0 | +| test.c:316:14:316:14 | a | 2.0 | +| test.c:316:19:316:19 | a | 2.0 | +| test.c:316:19:316:25 | ... <= ... | 1.0 | +| test.c:316:24:316:25 | - ... | 1.0 | +| test.c:316:25:316:25 | 2 | 1.0 | +| test.c:316:30:316:30 | 0 | 1.0 | +| test.c:316:30:316:35 | ... <= ... | 1.0 | +| test.c:316:35:316:35 | b | 3.0 | +| test.c:316:40:316:40 | b | 3.0 | +| test.c:316:40:316:46 | ... <= ... | 1.0 | +| test.c:316:45:316:46 | 23 | 1.0 | +| test.c:317:13:317:13 | a | 2.0 | +| test.c:317:13:317:15 | ... * ... | 1.0 | +| test.c:317:15:317:15 | b | 3.0 | +| test.c:318:5:318:9 | total | 2.0 | +| test.c:318:5:318:14 | ... += ... | 2.0 | +| test.c:318:14:318:14 | r | 1.0 | +| test.c:320:7:320:9 | - ... | 1.0 | +| test.c:320:7:320:14 | ... <= ... | 1.0 | +| test.c:320:7:320:25 | ... && ... | 1.0 | +| test.c:320:7:320:37 | ... && ... | 1.0 | +| test.c:320:7:320:48 | ... && ... | 1.0 | +| test.c:320:8:320:9 | 17 | 1.0 | +| test.c:320:14:320:14 | a | 3.0 | +| test.c:320:19:320:19 | a | 3.0 | +| test.c:320:19:320:25 | ... <= ... | 1.0 | +| test.c:320:24:320:25 | - ... | 1.0 | +| test.c:320:25:320:25 | 2 | 1.0 | +| test.c:320:30:320:32 | - ... | 1.0 | +| test.c:320:30:320:37 | ... <= ... | 1.0 | +| test.c:320:31:320:32 | 13 | 1.0 | +| test.c:320:37:320:37 | b | 7.0 | +| test.c:320:42:320:42 | b | 7.0 | +| test.c:320:42:320:48 | ... <= ... | 1.0 | +| test.c:320:47:320:48 | 23 | 1.0 | +| test.c:321:13:321:13 | a | 3.0 | +| test.c:321:13:321:15 | ... * ... | 1.0 | +| test.c:321:15:321:15 | b | 7.0 | +| test.c:322:5:322:9 | total | 4.0 | +| test.c:322:5:322:14 | ... += ... | 4.0 | +| test.c:322:14:322:14 | r | 1.0 | +| test.c:324:7:324:9 | - ... | 1.0 | +| test.c:324:7:324:14 | ... <= ... | 1.0 | +| test.c:324:7:324:25 | ... && ... | 1.0 | +| test.c:324:7:324:37 | ... && ... | 1.0 | +| test.c:324:7:324:47 | ... && ... | 1.0 | +| test.c:324:8:324:9 | 17 | 1.0 | +| test.c:324:14:324:14 | a | 4.0 | +| test.c:324:19:324:19 | a | 4.0 | +| test.c:324:19:324:25 | ... <= ... | 1.0 | +| test.c:324:24:324:25 | - ... | 1.0 | +| test.c:324:25:324:25 | 2 | 1.0 | +| test.c:324:30:324:32 | - ... | 1.0 | +| test.c:324:30:324:37 | ... <= ... | 1.0 | +| test.c:324:31:324:32 | 13 | 1.0 | +| test.c:324:37:324:37 | b | 15.0 | +| test.c:324:42:324:42 | b | 15.0 | +| test.c:324:42:324:47 | ... <= ... | 1.0 | +| test.c:324:47:324:47 | 0 | 1.0 | +| test.c:325:13:325:13 | a | 4.0 | +| test.c:325:13:325:15 | ... * ... | 1.0 | +| test.c:325:15:325:15 | b | 15.0 | +| test.c:326:5:326:9 | total | 8.0 | +| test.c:326:5:326:14 | ... += ... | 8.0 | +| test.c:326:14:326:14 | r | 1.0 | +| test.c:328:7:328:9 | - ... | 1.0 | +| test.c:328:7:328:14 | ... <= ... | 1.0 | +| test.c:328:7:328:25 | ... && ... | 1.0 | +| test.c:328:7:328:37 | ... && ... | 1.0 | +| test.c:328:7:328:48 | ... && ... | 1.0 | +| test.c:328:8:328:9 | 17 | 1.0 | +| test.c:328:14:328:14 | a | 5.0 | +| test.c:328:19:328:19 | a | 5.0 | +| test.c:328:19:328:25 | ... <= ... | 1.0 | +| test.c:328:24:328:25 | - ... | 1.0 | +| test.c:328:25:328:25 | 2 | 1.0 | +| test.c:328:30:328:32 | - ... | 1.0 | +| test.c:328:30:328:37 | ... <= ... | 1.0 | +| test.c:328:31:328:32 | 13 | 1.0 | +| test.c:328:37:328:37 | b | 31.0 | +| test.c:328:42:328:42 | b | 31.0 | +| test.c:328:42:328:48 | ... <= ... | 1.0 | +| test.c:328:47:328:48 | - ... | 1.0 | +| test.c:328:48:328:48 | 7 | 1.0 | +| test.c:329:13:329:13 | a | 5.0 | +| test.c:329:13:329:15 | ... * ... | 1.0 | +| test.c:329:15:329:15 | b | 31.0 | +| test.c:330:5:330:9 | total | 16.0 | +| test.c:330:5:330:14 | ... += ... | 16.0 | +| test.c:330:14:330:14 | r | 1.0 | +| test.c:333:10:333:14 | total | 32.0 | +| test.c:337:13:337:14 | 0 | 1.0 | +| test.c:338:7:338:7 | x | 1.0 | +| test.c:338:7:338:11 | ... < ... | 1.0 | +| test.c:338:11:338:11 | 0 | 1.0 | +| test.c:339:12:339:13 | - ... | 1.0 | +| test.c:339:13:339:13 | 1 | 1.0 | +| test.c:342:10:342:10 | i | 13.0 | +| test.c:342:10:342:14 | ... < ... | 1.0 | +| test.c:342:14:342:14 | 3 | 1.0 | +| test.c:343:5:343:5 | i | 13.0 | +| test.c:343:5:343:7 | ... ++ | 13.0 | +| test.c:345:3:345:3 | d | 1.0 | +| test.c:345:3:345:7 | ... = ... | 13.0 | +| test.c:345:7:345:7 | i | 13.0 | +| test.c:346:7:346:7 | x | 1.0 | +| test.c:346:7:346:11 | ... < ... | 1.0 | +| test.c:346:11:346:11 | 0 | 1.0 | +| test.c:347:9:347:9 | d | 13.0 | +| test.c:347:9:347:14 | ... > ... | 1.0 | +| test.c:347:13:347:14 | - ... | 1.0 | +| test.c:347:14:347:14 | x | 1.0 | +| test.c:348:14:348:14 | 1 | 1.0 | +| test.c:351:10:351:10 | 0 | 1.0 | +| test.c:357:3:357:4 | y1 | 1.0 | +| test.c:357:3:357:23 | ... = ... | 1.0 | +| test.c:357:8:357:8 | x | 1.0 | +| test.c:357:8:357:14 | ... < ... | 1.0 | +| test.c:357:8:357:23 | ... ? ... : ... | 1.0 | +| test.c:357:12:357:14 | 100 | 1.0 | +| test.c:357:12:357:14 | (unsigned int)... | 1.0 | +| test.c:357:18:357:18 | x | 1.0 | +| test.c:357:22:357:23 | 10 | 1.0 | +| test.c:357:22:357:23 | (unsigned int)... | 1.0 | +| test.c:358:3:358:4 | y2 | 1.0 | +| test.c:358:3:358:24 | ... = ... | 2.0 | +| test.c:358:8:358:8 | x | 2.0 | +| test.c:358:8:358:15 | ... >= ... | 1.0 | +| test.c:358:8:358:24 | ... ? ... : ... | 2.0 | +| test.c:358:13:358:15 | 100 | 1.0 | +| test.c:358:13:358:15 | (unsigned int)... | 1.0 | +| test.c:358:19:358:20 | 10 | 1.0 | +| test.c:358:19:358:20 | (unsigned int)... | 1.0 | +| test.c:358:24:358:24 | x | 2.0 | +| test.c:359:3:359:4 | y3 | 1.0 | +| test.c:359:3:359:8 | ... = ... | 1.0 | +| test.c:359:8:359:8 | 0 | 1.0 | +| test.c:359:8:359:8 | (unsigned int)... | 1.0 | +| test.c:360:3:360:4 | y4 | 1.0 | +| test.c:360:3:360:8 | ... = ... | 1.0 | +| test.c:360:8:360:8 | 0 | 1.0 | +| test.c:360:8:360:8 | (unsigned int)... | 1.0 | +| test.c:361:3:361:4 | y5 | 1.0 | +| test.c:361:3:361:8 | ... = ... | 1.0 | +| test.c:361:8:361:8 | 0 | 1.0 | +| test.c:361:8:361:8 | (unsigned int)... | 1.0 | +| test.c:362:3:362:4 | y6 | 1.0 | +| test.c:362:3:362:8 | ... = ... | 1.0 | +| test.c:362:8:362:8 | 0 | 1.0 | +| test.c:362:8:362:8 | (unsigned int)... | 1.0 | +| test.c:363:3:363:4 | y7 | 1.0 | +| test.c:363:3:363:8 | ... = ... | 1.0 | +| test.c:363:8:363:8 | 0 | 1.0 | +| test.c:363:8:363:8 | (unsigned int)... | 1.0 | +| test.c:364:3:364:4 | y8 | 1.0 | +| test.c:364:3:364:8 | ... = ... | 1.0 | +| test.c:364:8:364:8 | 0 | 1.0 | +| test.c:364:8:364:8 | (unsigned int)... | 1.0 | +| test.c:365:7:365:7 | x | 4.0 | +| test.c:365:7:365:13 | ... < ... | 1.0 | +| test.c:365:11:365:13 | 300 | 1.0 | +| test.c:365:11:365:13 | (unsigned int)... | 1.0 | +| test.c:366:5:366:6 | y3 | 1.0 | +| test.c:366:5:366:15 | ... = ... | 4.0 | +| test.c:366:10:366:10 | x | 4.0 | +| test.c:366:10:366:15 | ... ? ... : ... | 4.0 | +| test.c:366:15:366:15 | 5 | 1.0 | +| test.c:366:15:366:15 | (unsigned int)... | 1.0 | +| test.c:367:5:367:6 | y4 | 1.0 | +| test.c:367:5:367:17 | ... = ... | 4.0 | +| test.c:367:10:367:10 | x | 4.0 | +| test.c:367:10:367:17 | ... ? ... : ... | 4.0 | +| test.c:367:15:367:17 | 500 | 1.0 | +| test.c:367:15:367:17 | (unsigned int)... | 1.0 | +| test.c:368:5:368:6 | y5 | 1.0 | +| test.c:368:5:368:21 | ... = ... | 4.0 | +| test.c:368:10:368:14 | (...) | 4.0 | +| test.c:368:10:368:21 | ... ? ... : ... | 4.0 | +| test.c:368:11:368:11 | x | 4.0 | +| test.c:368:11:368:13 | ... + ... | 4.0 | +| test.c:368:13:368:13 | 1 | 1.0 | +| test.c:368:13:368:13 | (unsigned int)... | 1.0 | +| test.c:368:19:368:21 | 500 | 1.0 | +| test.c:368:19:368:21 | (unsigned int)... | 1.0 | +| test.c:369:5:369:6 | y6 | 1.0 | +| test.c:369:5:369:36 | ... = ... | 4.0 | +| test.c:369:10:369:31 | (...) | 4.0 | +| test.c:369:10:369:36 | (unsigned int)... | 4.0 | +| test.c:369:10:369:36 | ... ? ... : ... | 4.0 | +| test.c:369:11:369:30 | (unsigned char)... | 4.0 | +| test.c:369:26:369:30 | (...) | 4.0 | +| test.c:369:27:369:27 | x | 4.0 | +| test.c:369:27:369:29 | ... + ... | 4.0 | +| test.c:369:29:369:29 | 1 | 1.0 | +| test.c:369:29:369:29 | (unsigned int)... | 1.0 | +| test.c:369:36:369:36 | 5 | 1.0 | +| test.c:370:5:370:6 | y7 | 1.0 | +| test.c:370:5:370:38 | ... = ... | 4.0 | +| test.c:370:10:370:31 | (...) | 4.0 | +| test.c:370:10:370:38 | (unsigned int)... | 4.0 | +| test.c:370:10:370:38 | ... ? ... : ... | 4.0 | +| test.c:370:11:370:30 | (unsigned char)... | 4.0 | +| test.c:370:26:370:30 | (...) | 4.0 | +| test.c:370:27:370:27 | x | 4.0 | +| test.c:370:27:370:29 | ... + ... | 4.0 | +| test.c:370:29:370:29 | 1 | 1.0 | +| test.c:370:29:370:29 | (unsigned int)... | 1.0 | +| test.c:370:36:370:38 | 500 | 1.0 | +| test.c:371:5:371:6 | y8 | 1.0 | +| test.c:371:5:371:39 | ... = ... | 4.0 | +| test.c:371:10:371:32 | (...) | 4.0 | +| test.c:371:10:371:39 | (unsigned int)... | 4.0 | +| test.c:371:10:371:39 | ... ? ... : ... | 4.0 | +| test.c:371:11:371:31 | (unsigned short)... | 4.0 | +| test.c:371:27:371:31 | (...) | 4.0 | +| test.c:371:28:371:28 | x | 4.0 | +| test.c:371:28:371:30 | ... + ... | 4.0 | +| test.c:371:30:371:30 | 1 | 1.0 | +| test.c:371:30:371:30 | (unsigned int)... | 1.0 | +| test.c:371:37:371:39 | 500 | 1.0 | +| test.c:373:10:373:11 | y1 | 1.0 | +| test.c:373:10:373:16 | ... + ... | 2.0 | +| test.c:373:10:373:21 | ... + ... | 10.0 | +| test.c:373:10:373:26 | ... + ... | 50.0 | +| test.c:373:10:373:31 | ... + ... | 250.0 | +| test.c:373:10:373:36 | ... + ... | 1250.0 | +| test.c:373:10:373:41 | ... + ... | 6250.0 | +| test.c:373:10:373:46 | ... + ... | 31250.0 | +| test.c:373:15:373:16 | y2 | 2.0 | +| test.c:373:20:373:21 | y3 | 5.0 | +| test.c:373:25:373:26 | y4 | 5.0 | +| test.c:373:30:373:31 | y5 | 5.0 | +| test.c:373:35:373:36 | y6 | 5.0 | +| test.c:373:40:373:41 | y7 | 5.0 | +| test.c:373:45:373:46 | y8 | 5.0 | +| test.c:379:3:379:4 | y1 | 1.0 | +| test.c:379:3:379:24 | ... = ... | 1.0 | +| test.c:379:8:379:8 | x | 1.0 | +| test.c:379:8:379:14 | ... > ... | 1.0 | +| test.c:379:8:379:24 | ... ? ... : ... | 1.0 | +| test.c:379:12:379:14 | 100 | 1.0 | +| test.c:379:12:379:14 | (unsigned int)... | 1.0 | +| test.c:379:18:379:18 | x | 1.0 | +| test.c:379:22:379:24 | 110 | 1.0 | +| test.c:379:22:379:24 | (unsigned int)... | 1.0 | +| test.c:380:3:380:4 | y2 | 1.0 | +| test.c:380:3:380:25 | ... = ... | 2.0 | +| test.c:380:8:380:8 | x | 2.0 | +| test.c:380:8:380:15 | ... <= ... | 1.0 | +| test.c:380:8:380:25 | ... ? ... : ... | 2.0 | +| test.c:380:13:380:15 | 100 | 1.0 | +| test.c:380:13:380:15 | (unsigned int)... | 1.0 | +| test.c:380:19:380:21 | 110 | 1.0 | +| test.c:380:19:380:21 | (unsigned int)... | 1.0 | +| test.c:380:25:380:25 | x | 2.0 | +| test.c:381:3:381:4 | y3 | 1.0 | +| test.c:381:3:381:11 | ... = ... | 1.0 | +| test.c:381:8:381:11 | 1000 | 1.0 | +| test.c:381:8:381:11 | (unsigned int)... | 1.0 | +| test.c:382:3:382:4 | y4 | 1.0 | +| test.c:382:3:382:11 | ... = ... | 1.0 | +| test.c:382:8:382:11 | 1000 | 1.0 | +| test.c:382:8:382:11 | (unsigned int)... | 1.0 | +| test.c:383:3:383:4 | y5 | 1.0 | +| test.c:383:3:383:11 | ... = ... | 1.0 | +| test.c:383:8:383:11 | 1000 | 1.0 | +| test.c:383:8:383:11 | (unsigned int)... | 1.0 | +| test.c:384:7:384:7 | x | 4.0 | +| test.c:384:7:384:14 | ... >= ... | 1.0 | +| test.c:384:12:384:14 | 300 | 1.0 | +| test.c:384:12:384:14 | (unsigned int)... | 1.0 | +| test.c:385:5:385:6 | y3 | 1.0 | +| test.c:385:5:385:21 | ... = ... | 4.0 | +| test.c:385:10:385:16 | (...) | 4.0 | +| test.c:385:10:385:21 | ... ? ... : ... | 4.0 | +| test.c:385:11:385:11 | x | 4.0 | +| test.c:385:11:385:15 | ... - ... | 4.0 | +| test.c:385:13:385:15 | 300 | 1.0 | +| test.c:385:13:385:15 | (unsigned int)... | 1.0 | +| test.c:385:21:385:21 | 5 | 1.0 | +| test.c:385:21:385:21 | (unsigned int)... | 1.0 | +| test.c:386:5:386:6 | y4 | 1.0 | +| test.c:386:5:386:21 | ... = ... | 4.0 | +| test.c:386:10:386:16 | (...) | 4.0 | +| test.c:386:10:386:21 | ... ? ... : ... | 4.0 | +| test.c:386:11:386:11 | x | 4.0 | +| test.c:386:11:386:15 | ... - ... | 4.0 | +| test.c:386:13:386:15 | 200 | 1.0 | +| test.c:386:13:386:15 | (unsigned int)... | 1.0 | +| test.c:386:21:386:21 | 5 | 1.0 | +| test.c:386:21:386:21 | (unsigned int)... | 1.0 | +| test.c:387:5:387:6 | y5 | 1.0 | +| test.c:387:5:387:38 | ... = ... | 4.0 | +| test.c:387:10:387:33 | (...) | 4.0 | +| test.c:387:10:387:38 | (unsigned int)... | 4.0 | +| test.c:387:10:387:38 | ... ? ... : ... | 4.0 | +| test.c:387:11:387:32 | (unsigned char)... | 4.0 | +| test.c:387:26:387:32 | (...) | 4.0 | +| test.c:387:27:387:27 | x | 4.0 | +| test.c:387:27:387:31 | ... - ... | 4.0 | +| test.c:387:29:387:31 | 200 | 1.0 | +| test.c:387:29:387:31 | (unsigned int)... | 1.0 | +| test.c:387:38:387:38 | 5 | 1.0 | +| test.c:389:10:389:11 | y1 | 1.0 | +| test.c:389:10:389:16 | ... + ... | 2.0 | +| test.c:389:10:389:21 | ... + ... | 10.0 | +| test.c:389:10:389:26 | ... + ... | 50.0 | +| test.c:389:10:389:31 | ... + ... | 250.0 | +| test.c:389:15:389:16 | y2 | 2.0 | +| test.c:389:20:389:21 | y3 | 5.0 | +| test.c:389:25:389:26 | y4 | 5.0 | +| test.c:389:30:389:31 | y5 | 5.0 | +| test.c:394:14:394:14 | m | 1.0 | +| test.c:394:14:394:108 | ... ? ... : ... | 1.0 | +| test.c:394:18:394:18 | n | 1.0 | +| test.c:394:18:394:95 | ... ? ... : ... | 1.0 | +| test.c:394:22:394:22 | o | 1.0 | +| test.c:394:22:394:82 | ... ? ... : ... | 1.0 | +| test.c:394:26:394:26 | p | 1.0 | +| test.c:394:26:394:69 | ... ? ... : ... | 1.0 | +| test.c:394:30:394:30 | q | 1.0 | +| test.c:394:30:394:56 | ... ? ... : ... | 1.0 | +| test.c:394:34:394:43 | 0.4743882700000000008 | 1.0 | +| test.c:394:47:394:56 | 0.1433388700000000071 | 1.0 | +| test.c:394:60:394:69 | 0.3527920299999999787 | 1.0 | +| test.c:394:73:394:82 | 0.3920645799999999959 | 1.0 | +| test.c:394:86:394:95 | 0.2154022499999999896 | 1.0 | +| test.c:394:99:394:108 | 0.4049680500000000238 | 1.0 | +| test.c:395:14:395:14 | m | 2.0 | +| test.c:395:14:395:108 | ... ? ... : ... | 1.0 | +| test.c:395:18:395:18 | n | 3.0 | +| test.c:395:18:395:95 | ... ? ... : ... | 1.0 | +| test.c:395:22:395:22 | o | 3.0 | +| test.c:395:22:395:82 | ... ? ... : ... | 1.0 | +| test.c:395:26:395:26 | p | 3.0 | +| test.c:395:26:395:69 | ... ? ... : ... | 1.0 | +| test.c:395:30:395:30 | q | 3.0 | +| test.c:395:30:395:56 | ... ? ... : ... | 1.0 | +| test.c:395:34:395:43 | 0.3418334800000000229 | 1.0 | +| test.c:395:47:395:56 | 0.3533464000000000049 | 1.0 | +| test.c:395:60:395:69 | 0.2224785300000000077 | 1.0 | +| test.c:395:73:395:82 | 0.326618929999999974 | 1.0 | +| test.c:395:86:395:95 | 0.5927046500000000551 | 1.0 | +| test.c:395:99:395:108 | 0.5297741000000000255 | 1.0 | +| test.c:396:14:396:14 | m | 4.0 | +| test.c:396:14:396:108 | ... ? ... : ... | 1.0 | +| test.c:396:18:396:18 | n | 9.0 | +| test.c:396:18:396:95 | ... ? ... : ... | 1.0 | +| test.c:396:22:396:22 | o | 9.0 | +| test.c:396:22:396:82 | ... ? ... : ... | 1.0 | +| test.c:396:26:396:26 | p | 9.0 | +| test.c:396:26:396:69 | ... ? ... : ... | 1.0 | +| test.c:396:30:396:30 | q | 9.0 | +| test.c:396:30:396:56 | ... ? ... : ... | 1.0 | +| test.c:396:34:396:43 | 0.774296030000000024 | 1.0 | +| test.c:396:47:396:56 | 0.3147808400000000062 | 1.0 | +| test.c:396:60:396:69 | 0.3123551399999999756 | 1.0 | +| test.c:396:73:396:82 | 0.05121255999999999725 | 1.0 | +| test.c:396:86:396:95 | 0.7931074500000000471 | 1.0 | +| test.c:396:99:396:108 | 0.6798145100000000385 | 1.0 | +| test.c:397:14:397:14 | m | 8.0 | +| test.c:397:14:397:108 | ... ? ... : ... | 1.0 | +| test.c:397:18:397:18 | n | 27.0 | +| test.c:397:18:397:95 | ... ? ... : ... | 1.0 | +| test.c:397:22:397:22 | o | 27.0 | +| test.c:397:22:397:82 | ... ? ... : ... | 1.0 | +| test.c:397:26:397:26 | p | 27.0 | +| test.c:397:26:397:69 | ... ? ... : ... | 1.0 | +| test.c:397:30:397:30 | q | 27.0 | +| test.c:397:30:397:56 | ... ? ... : ... | 1.0 | +| test.c:397:34:397:43 | 0.4472955599999999809 | 1.0 | +| test.c:397:47:397:56 | 0.8059920200000000312 | 1.0 | +| test.c:397:60:397:69 | 0.9899726199999999698 | 1.0 | +| test.c:397:73:397:82 | 0.5995273199999999747 | 1.0 | +| test.c:397:86:397:95 | 0.3697694799999999837 | 1.0 | +| test.c:397:99:397:108 | 0.8386683499999999514 | 1.0 | +| test.c:398:14:398:14 | m | 16.0 | +| test.c:398:14:398:108 | ... ? ... : ... | 1.0 | +| test.c:398:18:398:18 | n | 81.0 | +| test.c:398:18:398:95 | ... ? ... : ... | 1.0 | +| test.c:398:22:398:22 | o | 81.0 | +| test.c:398:22:398:82 | ... ? ... : ... | 1.0 | +| test.c:398:26:398:26 | p | 81.0 | +| test.c:398:26:398:69 | ... ? ... : ... | 1.0 | +| test.c:398:30:398:30 | q | 81.0 | +| test.c:398:30:398:56 | ... ? ... : ... | 1.0 | +| test.c:398:34:398:43 | 0.4931182800000000199 | 1.0 | +| test.c:398:47:398:56 | 0.9038991100000000056 | 1.0 | +| test.c:398:60:398:69 | 0.1059771199999999941 | 1.0 | +| test.c:398:73:398:82 | 0.2177842600000000073 | 1.0 | +| test.c:398:86:398:95 | 0.7248596600000000167 | 1.0 | +| test.c:398:99:398:108 | 0.6873487400000000136 | 1.0 | +| test.c:399:14:399:14 | m | 32.0 | +| test.c:399:14:399:108 | ... ? ... : ... | 1.0 | +| test.c:399:18:399:18 | n | 243.0 | +| test.c:399:18:399:95 | ... ? ... : ... | 1.0 | +| test.c:399:22:399:22 | o | 243.0 | +| test.c:399:22:399:82 | ... ? ... : ... | 1.0 | +| test.c:399:26:399:26 | p | 243.0 | +| test.c:399:26:399:69 | ... ? ... : ... | 1.0 | +| test.c:399:30:399:30 | q | 243.0 | +| test.c:399:30:399:56 | ... ? ... : ... | 1.0 | +| test.c:399:34:399:43 | 0.4745284799999999747 | 1.0 | +| test.c:399:47:399:56 | 0.107866500000000004 | 1.0 | +| test.c:399:60:399:69 | 0.1188457599999999947 | 1.0 | +| test.c:399:73:399:82 | 0.7616405200000000431 | 1.0 | +| test.c:399:86:399:95 | 0.3480889200000000239 | 1.0 | +| test.c:399:99:399:108 | 0.584408649999999974 | 1.0 | +| test.c:400:14:400:14 | m | 64.0 | +| test.c:400:14:400:108 | ... ? ... : ... | 1.0 | +| test.c:400:18:400:18 | n | 729.0 | +| test.c:400:18:400:95 | ... ? ... : ... | 1.0 | +| test.c:400:22:400:22 | o | 729.0 | +| test.c:400:22:400:82 | ... ? ... : ... | 1.0 | +| test.c:400:26:400:26 | p | 729.0 | +| test.c:400:26:400:69 | ... ? ... : ... | 1.0 | +| test.c:400:30:400:30 | q | 729.0 | +| test.c:400:30:400:56 | ... ? ... : ... | 1.0 | +| test.c:400:34:400:43 | 0.02524326 | 1.0 | +| test.c:400:47:400:56 | 0.8290504600000000446 | 1.0 | +| test.c:400:60:400:69 | 0.95823075000000002 | 1.0 | +| test.c:400:73:400:82 | 0.1251655799999999985 | 1.0 | +| test.c:400:86:400:95 | 0.8523517900000000536 | 1.0 | +| test.c:400:99:400:108 | 0.3623238400000000081 | 1.0 | +| test.c:401:14:401:14 | m | 128.0 | +| test.c:401:14:401:108 | ... ? ... : ... | 1.0 | +| test.c:401:18:401:18 | n | 2187.0 | +| test.c:401:18:401:95 | ... ? ... : ... | 1.0 | +| test.c:401:22:401:22 | o | 2187.0 | +| test.c:401:22:401:82 | ... ? ... : ... | 1.0 | +| test.c:401:26:401:26 | p | 2187.0 | +| test.c:401:26:401:69 | ... ? ... : ... | 1.0 | +| test.c:401:30:401:30 | q | 2187.0 | +| test.c:401:30:401:56 | ... ? ... : ... | 1.0 | +| test.c:401:34:401:43 | 0.3870862600000000153 | 1.0 | +| test.c:401:47:401:56 | 0.3287604399999999871 | 1.0 | +| test.c:401:60:401:69 | 0.1496348500000000137 | 1.0 | +| test.c:401:73:401:82 | 0.4504110800000000192 | 1.0 | +| test.c:401:86:401:95 | 0.4864090899999999884 | 1.0 | +| test.c:401:99:401:108 | 0.8433127200000000157 | 1.0 | +| test.c:402:14:402:14 | m | 256.0 | +| test.c:402:14:402:108 | ... ? ... : ... | 1.0 | +| test.c:402:18:402:18 | n | 6561.0 | +| test.c:402:18:402:95 | ... ? ... : ... | 1.0 | +| test.c:402:22:402:22 | o | 6561.0 | +| test.c:402:22:402:82 | ... ? ... : ... | 1.0 | +| test.c:402:26:402:26 | p | 6561.0 | +| test.c:402:26:402:69 | ... ? ... : ... | 1.0 | +| test.c:402:30:402:30 | q | 6561.0 | +| test.c:402:30:402:56 | ... ? ... : ... | 1.0 | +| test.c:402:34:402:43 | 0.1575506299999999971 | 1.0 | +| test.c:402:47:402:56 | 0.7708683299999999905 | 1.0 | +| test.c:402:60:402:69 | 0.2642848099999999811 | 1.0 | +| test.c:402:73:402:82 | 0.1480050800000000111 | 1.0 | +| test.c:402:86:402:95 | 0.374281430000000026 | 1.0 | +| test.c:402:99:402:108 | 0.05328182000000000057 | 1.0 | +| test.c:403:14:403:14 | m | 512.0 | +| test.c:403:14:403:108 | ... ? ... : ... | 1.0 | +| test.c:403:18:403:18 | n | 19683.0 | +| test.c:403:18:403:95 | ... ? ... : ... | 1.0 | +| test.c:403:22:403:22 | o | 19683.0 | +| test.c:403:22:403:82 | ... ? ... : ... | 1.0 | +| test.c:403:26:403:26 | p | 19683.0 | +| test.c:403:26:403:69 | ... ? ... : ... | 1.0 | +| test.c:403:30:403:30 | q | 19683.0 | +| test.c:403:30:403:56 | ... ? ... : ... | 1.0 | +| test.c:403:34:403:43 | 0.4173653600000000186 | 1.0 | +| test.c:403:47:403:56 | 0.7682662799999999681 | 1.0 | +| test.c:403:60:403:69 | 0.2764323799999999776 | 1.0 | +| test.c:403:73:403:82 | 0.5567927400000000082 | 1.0 | +| test.c:403:86:403:95 | 0.3946885700000000163 | 1.0 | +| test.c:403:99:403:108 | 0.6907214400000000198 | 1.0 | +| test.c:404:14:404:14 | m | 1024.0 | +| test.c:404:14:404:108 | ... ? ... : ... | 1.0 | +| test.c:404:18:404:18 | n | 59049.0 | +| test.c:404:18:404:95 | ... ? ... : ... | 1.0 | +| test.c:404:22:404:22 | o | 59049.0 | +| test.c:404:22:404:82 | ... ? ... : ... | 1.0 | +| test.c:404:26:404:26 | p | 59049.0 | +| test.c:404:26:404:69 | ... ? ... : ... | 1.0 | +| test.c:404:30:404:30 | q | 59049.0 | +| test.c:404:30:404:56 | ... ? ... : ... | 1.0 | +| test.c:404:34:404:43 | 0.8895534499999999678 | 1.0 | +| test.c:404:47:404:56 | 0.2990482400000000207 | 1.0 | +| test.c:404:60:404:69 | 0.7624258299999999711 | 1.0 | +| test.c:404:73:404:82 | 0.2051910999999999874 | 1.0 | +| test.c:404:86:404:95 | 0.8874555899999999609 | 1.0 | +| test.c:404:99:404:108 | 0.8137279800000000174 | 1.0 | +| test.c:405:14:405:14 | m | 2048.0 | +| test.c:405:14:405:108 | ... ? ... : ... | 1.0 | +| test.c:405:18:405:18 | n | 177147.0 | +| test.c:405:18:405:95 | ... ? ... : ... | 1.0 | +| test.c:405:22:405:22 | o | 177147.0 | +| test.c:405:22:405:82 | ... ? ... : ... | 1.0 | +| test.c:405:26:405:26 | p | 177147.0 | +| test.c:405:26:405:69 | ... ? ... : ... | 1.0 | +| test.c:405:30:405:30 | q | 177147.0 | +| test.c:405:30:405:56 | ... ? ... : ... | 1.0 | +| test.c:405:34:405:43 | 0.4218627600000000033 | 1.0 | +| test.c:405:47:405:56 | 0.5384335799999999672 | 1.0 | +| test.c:405:60:405:69 | 0.4499667900000000054 | 1.0 | +| test.c:405:73:405:82 | 0.1320411400000000013 | 1.0 | +| test.c:405:86:405:95 | 0.5203124099999999475 | 1.0 | +| test.c:405:99:405:108 | 0.4276264699999999808 | 1.0 | +| test.c:411:19:411:19 | a | 1.0 | +| test.c:411:19:411:23 | ... + ... | 1.0 | +| test.c:411:19:411:27 | ... + ... | 1.0 | +| test.c:411:19:411:31 | ... + ... | 1.0 | +| test.c:411:19:411:35 | ... + ... | 1.0 | +| test.c:411:19:411:39 | ... + ... | 1.0 | +| test.c:411:19:411:43 | ... + ... | 1.0 | +| test.c:411:19:411:47 | ... + ... | 1.0 | +| test.c:411:19:411:51 | ... + ... | 1.0 | +| test.c:411:19:411:55 | ... + ... | 1.0 | +| test.c:411:19:411:59 | ... + ... | 1.0 | +| test.c:411:19:411:63 | ... + ... | 1.0 | +| test.c:411:23:411:23 | b | 1.0 | +| test.c:411:27:411:27 | c | 1.0 | +| test.c:411:31:411:31 | d | 1.0 | +| test.c:411:35:411:35 | e | 1.0 | +| test.c:411:39:411:39 | f | 1.0 | +| test.c:411:43:411:43 | g | 1.0 | +| test.c:411:47:411:47 | h | 1.0 | +| test.c:411:51:411:51 | i | 1.0 | +| test.c:411:55:411:55 | j | 1.0 | +| test.c:411:59:411:59 | k | 1.0 | +| test.c:411:63:411:63 | l | 1.0 | +| test.c:413:10:413:15 | output | 1.0 | +| test.c:420:7:420:9 | rhs | 1.0 | +| test.c:420:7:420:14 | ... < ... | 1.0 | +| test.c:420:13:420:14 | 12 | 1.0 | +| test.c:420:13:420:14 | (unsigned int)... | 1.0 | +| test.c:420:19:420:21 | rhs | 1.0 | +| test.c:420:19:420:26 | ... << ... | 1.0 | +| test.c:420:26:420:26 | 1 | 1.0 | +| test.c:421:7:421:9 | rhs | 2.0 | +| test.c:421:7:421:14 | ... < ... | 1.0 | +| test.c:421:13:421:14 | 13 | 1.0 | +| test.c:421:13:421:14 | (unsigned int)... | 1.0 | +| test.c:421:19:421:21 | rhs | 2.0 | +| test.c:421:19:421:26 | ... << ... | 1.0 | +| test.c:421:26:421:26 | 1 | 1.0 | +| test.c:422:7:422:9 | rhs | 3.0 | +| test.c:422:7:422:14 | ... < ... | 1.0 | +| test.c:422:13:422:14 | 14 | 1.0 | +| test.c:422:13:422:14 | (unsigned int)... | 1.0 | +| test.c:422:19:422:21 | rhs | 3.0 | +| test.c:422:19:422:26 | ... << ... | 1.0 | +| test.c:422:26:422:26 | 1 | 1.0 | +| test.c:423:7:423:9 | rhs | 4.0 | +| test.c:423:7:423:14 | ... < ... | 1.0 | +| test.c:423:13:423:14 | 15 | 1.0 | +| test.c:423:13:423:14 | (unsigned int)... | 1.0 | +| test.c:423:19:423:21 | rhs | 4.0 | +| test.c:423:19:423:26 | ... << ... | 1.0 | +| test.c:423:26:423:26 | 1 | 1.0 | +| test.c:424:7:424:9 | rhs | 5.0 | +| test.c:424:7:424:14 | ... < ... | 1.0 | +| test.c:424:13:424:14 | 16 | 1.0 | +| test.c:424:13:424:14 | (unsigned int)... | 1.0 | +| test.c:424:19:424:21 | rhs | 5.0 | +| test.c:424:19:424:26 | ... << ... | 1.0 | +| test.c:424:26:424:26 | 1 | 1.0 | +| test.c:425:10:425:12 | (int)... | 6.0 | +| test.c:425:10:425:12 | rhs | 6.0 | +| test.c:429:7:429:7 | a | 1.0 | +| test.c:429:7:429:13 | ... == ... | 1.0 | +| test.c:429:12:429:13 | 17 | 1.0 | +| test.c:430:9:430:9 | b | 1.0 | +| test.c:430:9:430:15 | ... == ... | 1.0 | +| test.c:430:14:430:15 | 23 | 1.0 | +| test.c:431:7:431:7 | a | 1.0 | +| test.c:431:7:431:12 | ... += ... | 1.0 | +| test.c:431:12:431:12 | b | 1.0 | +| test.c:433:9:433:9 | a | 2.0 | +| test.c:433:9:433:15 | ... == ... | 1.0 | +| test.c:433:14:433:15 | 18 | 1.0 | +| test.c:434:7:434:7 | b | 1.0 | +| test.c:434:7:434:12 | ... = ... | 1.0 | +| test.c:434:11:434:12 | 10 | 1.0 | +| test.c:439:11:439:11 | a | 4.0 | +| test.c:439:11:439:15 | ... + ... | 16.0 | +| test.c:439:15:439:15 | b | 4.0 | +| test.c:440:10:440:10 | a | 4.0 | +| test.c:440:10:440:14 | ... + ... | 16.0 | +| test.c:440:14:440:14 | b | 4.0 | +| test.c:447:4:449:50 | (...) | 1.0 | +| test.c:447:4:532:26 | ... > ... | 1.0 | +| test.c:447:4:621:27 | ... ? ... : ... | 1.297918419127476E201 | +| test.c:447:5:447:6 | 14 | 1.0 | +| test.c:447:5:447:6 | (unsigned int)... | 1.0 | +| test.c:447:5:447:11 | ... * ... | 1.0 | +| test.c:447:5:447:55 | ... > ... | 1.0 | +| test.c:447:5:449:49 | ... ? ... : ... | 1.0 | +| test.c:447:10:447:11 | ip | 1.0 | +| test.c:447:15:447:26 | (...) | 1.0 | +| test.c:447:15:447:31 | ... * ... | 1.0 | +| test.c:447:15:447:55 | ... + ... | 1.0 | +| test.c:447:16:447:16 | 2 | 1.0 | +| test.c:447:16:447:16 | (unsigned int)... | 1.0 | +| test.c:447:16:447:21 | ... * ... | 1.0 | +| test.c:447:16:447:25 | ... + ... | 1.0 | +| test.c:447:20:447:21 | ip | 1.0 | +| test.c:447:25:447:25 | 1 | 1.0 | +| test.c:447:25:447:25 | (unsigned int)... | 1.0 | +| test.c:447:30:447:31 | 17 | 1.0 | +| test.c:447:30:447:31 | (unsigned int)... | 1.0 | +| test.c:447:35:447:50 | (...) | 1.0 | +| test.c:447:35:447:55 | ... * ... | 1.0 | +| test.c:447:36:447:36 | 2 | 1.0 | +| test.c:447:36:447:36 | (unsigned int)... | 1.0 | +| test.c:447:36:447:41 | ... * ... | 1.0 | +| test.c:447:36:447:45 | ... + ... | 1.0 | +| test.c:447:36:447:49 | ... + ... | 1.0 | +| test.c:447:40:447:41 | ip | 1.0 | +| test.c:447:45:447:45 | 1 | 1.0 | +| test.c:447:45:447:45 | (unsigned int)... | 1.0 | +| test.c:447:49:447:49 | 1 | 1.0 | +| test.c:447:49:447:49 | (unsigned int)... | 1.0 | +| test.c:447:54:447:55 | 17 | 1.0 | +| test.c:447:54:447:55 | (unsigned int)... | 1.0 | +| test.c:448:9:448:10 | 14 | 1.0 | +| test.c:448:9:448:10 | (unsigned int)... | 1.0 | +| test.c:448:9:448:15 | ... * ... | 1.0 | +| test.c:448:14:448:15 | ip | 1.0 | +| test.c:449:9:449:20 | (...) | 1.0 | +| test.c:449:9:449:25 | ... * ... | 1.0 | +| test.c:449:9:449:49 | ... + ... | 1.0 | +| test.c:449:10:449:10 | 2 | 1.0 | +| test.c:449:10:449:10 | (unsigned int)... | 1.0 | +| test.c:449:10:449:15 | ... * ... | 1.0 | +| test.c:449:10:449:19 | ... + ... | 1.0 | +| test.c:449:14:449:15 | ip | 1.0 | +| test.c:449:19:449:19 | 1 | 1.0 | +| test.c:449:19:449:19 | (unsigned int)... | 1.0 | +| test.c:449:24:449:25 | 14 | 1.0 | +| test.c:449:24:449:25 | (unsigned int)... | 1.0 | +| test.c:449:29:449:44 | (...) | 1.0 | +| test.c:449:29:449:49 | ... * ... | 1.0 | +| test.c:449:30:449:30 | 2 | 1.0 | +| test.c:449:30:449:30 | (unsigned int)... | 1.0 | +| test.c:449:30:449:35 | ... * ... | 1.0 | +| test.c:449:30:449:39 | ... + ... | 1.0 | +| test.c:449:30:449:43 | ... + ... | 1.0 | +| test.c:449:34:449:35 | ip | 1.0 | +| test.c:449:39:449:39 | 1 | 1.0 | +| test.c:449:39:449:39 | (unsigned int)... | 1.0 | +| test.c:449:43:449:43 | 1 | 1.0 | +| test.c:449:43:449:43 | (unsigned int)... | 1.0 | +| test.c:449:48:449:49 | 17 | 1.0 | +| test.c:449:48:449:49 | (unsigned int)... | 1.0 | +| test.c:450:5:532:26 | (...) | 9.29462083211502E84 | +| test.c:450:6:450:6 | 2 | 1.0 | +| test.c:450:6:450:6 | (unsigned int)... | 1.0 | +| test.c:450:6:450:23 | ... * ... | 2.0 | +| test.c:450:6:469:42 | ... + ... | 4.524508125E10 | +| test.c:450:6:489:24 | ... > ... | 1.0 | +| test.c:450:6:532:25 | ... ? ... : ... | 9.29462083211502E84 | +| test.c:450:10:450:23 | (...) | 2.0 | +| test.c:450:11:450:12 | ip | 2.0 | +| test.c:450:11:450:17 | ... * ... | 2.0 | +| test.c:450:11:450:22 | ... + ... | 2.0 | +| test.c:450:16:450:17 | 14 | 1.0 | +| test.c:450:16:450:17 | (unsigned int)... | 1.0 | +| test.c:450:21:450:22 | 32 | 1.0 | +| test.c:450:21:450:22 | (unsigned int)... | 1.0 | +| test.c:451:7:469:42 | (...) | 2.2622540625E10 | +| test.c:451:8:451:8 | 4 | 1.0 | +| test.c:451:8:451:8 | (unsigned int)... | 1.0 | +| test.c:451:8:451:25 | ... * ... | 2.0 | +| test.c:451:8:452:26 | ... + ... | 4.0 | +| test.c:451:8:453:26 | ... + ... | 8.0 | +| test.c:451:8:458:22 | ... + ... | 1000.0 | +| test.c:451:8:459:37 | ... > ... | 1.0 | +| test.c:451:8:469:41 | ... ? ... : ... | 2.2622540625E10 | +| test.c:451:12:451:25 | (...) | 2.0 | +| test.c:451:13:451:14 | ip | 2.0 | +| test.c:451:13:451:19 | ... * ... | 2.0 | +| test.c:451:13:451:24 | ... + ... | 2.0 | +| test.c:451:18:451:19 | 14 | 1.0 | +| test.c:451:18:451:19 | (unsigned int)... | 1.0 | +| test.c:451:23:451:24 | 32 | 1.0 | +| test.c:451:23:451:24 | (unsigned int)... | 1.0 | +| test.c:452:9:452:26 | (...) | 2.0 | +| test.c:452:10:452:10 | 2 | 1.0 | +| test.c:452:10:452:10 | (unsigned int)... | 1.0 | +| test.c:452:10:452:15 | ... * ... | 2.0 | +| test.c:452:10:452:20 | ... * ... | 2.0 | +| test.c:452:10:452:25 | ... + ... | 2.0 | +| test.c:452:14:452:15 | ip | 2.0 | +| test.c:452:19:452:20 | 14 | 1.0 | +| test.c:452:19:452:20 | (unsigned int)... | 1.0 | +| test.c:452:24:452:25 | 32 | 1.0 | +| test.c:452:24:452:25 | (unsigned int)... | 1.0 | +| test.c:453:9:453:9 | 2 | 1.0 | +| test.c:453:9:453:9 | (unsigned int)... | 1.0 | +| test.c:453:9:453:26 | ... * ... | 2.0 | +| test.c:453:13:453:26 | (...) | 2.0 | +| test.c:453:14:453:15 | ip | 2.0 | +| test.c:453:14:453:20 | ... * ... | 2.0 | +| test.c:453:14:453:25 | ... + ... | 2.0 | +| test.c:453:19:453:20 | 14 | 1.0 | +| test.c:453:19:453:20 | (unsigned int)... | 1.0 | +| test.c:453:24:453:25 | 64 | 1.0 | +| test.c:453:24:453:25 | (unsigned int)... | 1.0 | +| test.c:454:9:458:22 | (...) | 125.0 | +| test.c:454:10:454:21 | (...) | 2.0 | +| test.c:454:10:454:26 | ... * ... | 2.0 | +| test.c:454:10:454:80 | ... > ... | 1.0 | +| test.c:454:10:458:21 | ... ? ... : ... | 125.0 | +| test.c:454:11:454:11 | 2 | 1.0 | +| test.c:454:11:454:11 | (unsigned int)... | 1.0 | +| test.c:454:11:454:16 | ... * ... | 2.0 | +| test.c:454:11:454:20 | ... + ... | 2.0 | +| test.c:454:15:454:16 | ip | 2.0 | +| test.c:454:20:454:20 | 1 | 1.0 | +| test.c:454:20:454:20 | (unsigned int)... | 1.0 | +| test.c:454:25:454:26 | 14 | 1.0 | +| test.c:454:25:454:26 | (unsigned int)... | 1.0 | +| test.c:454:30:454:80 | (...) | 4.0 | +| test.c:454:31:454:32 | 17 | 1.0 | +| test.c:454:31:454:32 | (unsigned int)... | 1.0 | +| test.c:454:31:454:43 | ... * ... | 2.0 | +| test.c:454:31:454:53 | ... > ... | 1.0 | +| test.c:454:31:454:79 | ... ? ... : ... | 4.0 | +| test.c:454:36:454:43 | (...) | 2.0 | +| test.c:454:37:454:37 | 2 | 1.0 | +| test.c:454:37:454:37 | (unsigned int)... | 1.0 | +| test.c:454:37:454:42 | ... * ... | 2.0 | +| test.c:454:41:454:42 | ip | 2.0 | +| test.c:454:47:454:48 | 17 | 1.0 | +| test.c:454:47:454:48 | (unsigned int)... | 1.0 | +| test.c:454:47:454:53 | ... * ... | 2.0 | +| test.c:454:52:454:53 | ip | 2.0 | +| test.c:454:57:454:58 | 17 | 1.0 | +| test.c:454:57:454:58 | (unsigned int)... | 1.0 | +| test.c:454:57:454:69 | ... * ... | 2.0 | +| test.c:454:62:454:69 | (...) | 2.0 | +| test.c:454:63:454:63 | 2 | 1.0 | +| test.c:454:63:454:63 | (unsigned int)... | 1.0 | +| test.c:454:63:454:68 | ... * ... | 2.0 | +| test.c:454:67:454:68 | ip | 2.0 | +| test.c:454:73:454:74 | 17 | 1.0 | +| test.c:454:73:454:74 | (unsigned int)... | 1.0 | +| test.c:454:73:454:79 | ... * ... | 2.0 | +| test.c:454:78:454:79 | ip | 2.0 | +| test.c:455:13:455:24 | (...) | 5.0 | +| test.c:455:13:455:29 | ... * ... | 5.0 | +| test.c:455:14:455:14 | 2 | 1.0 | +| test.c:455:14:455:14 | (unsigned int)... | 1.0 | +| test.c:455:14:455:19 | ... * ... | 5.0 | +| test.c:455:14:455:23 | ... + ... | 5.0 | +| test.c:455:18:455:19 | ip | 5.0 | +| test.c:455:23:455:23 | 1 | 1.0 | +| test.c:455:23:455:23 | (unsigned int)... | 1.0 | +| test.c:455:28:455:29 | 14 | 1.0 | +| test.c:455:28:455:29 | (unsigned int)... | 1.0 | +| test.c:456:13:456:14 | 14 | 1.0 | +| test.c:456:13:456:14 | (unsigned int)... | 1.0 | +| test.c:456:13:456:25 | ... * ... | 5.0 | +| test.c:456:13:456:35 | ... > ... | 1.0 | +| test.c:456:13:458:21 | ... ? ... : ... | 25.0 | +| test.c:456:18:456:25 | (...) | 5.0 | +| test.c:456:19:456:19 | 2 | 1.0 | +| test.c:456:19:456:19 | (unsigned int)... | 1.0 | +| test.c:456:19:456:24 | ... * ... | 5.0 | +| test.c:456:23:456:24 | ip | 5.0 | +| test.c:456:29:456:30 | 17 | 1.0 | +| test.c:456:29:456:30 | (unsigned int)... | 1.0 | +| test.c:456:29:456:35 | ... * ... | 5.0 | +| test.c:456:34:456:35 | ip | 5.0 | +| test.c:457:15:457:16 | 14 | 1.0 | +| test.c:457:15:457:16 | (unsigned int)... | 1.0 | +| test.c:457:15:457:27 | ... * ... | 5.0 | +| test.c:457:20:457:27 | (...) | 5.0 | +| test.c:457:21:457:21 | 2 | 1.0 | +| test.c:457:21:457:21 | (unsigned int)... | 1.0 | +| test.c:457:21:457:26 | ... * ... | 5.0 | +| test.c:457:25:457:26 | ip | 5.0 | +| test.c:458:15:458:16 | 14 | 1.0 | +| test.c:458:15:458:16 | (unsigned int)... | 1.0 | +| test.c:458:15:458:21 | ... * ... | 5.0 | +| test.c:458:20:458:21 | ip | 5.0 | +| test.c:459:7:459:7 | 2 | 1.0 | +| test.c:459:7:459:7 | (unsigned int)... | 1.0 | +| test.c:459:7:459:12 | ... * ... | 15.0 | +| test.c:459:7:459:17 | ... * ... | 15.0 | +| test.c:459:7:459:37 | ... + ... | 225.0 | +| test.c:459:11:459:12 | ip | 15.0 | +| test.c:459:16:459:17 | 14 | 1.0 | +| test.c:459:16:459:17 | (unsigned int)... | 1.0 | +| test.c:459:21:459:32 | (...) | 15.0 | +| test.c:459:21:459:37 | ... * ... | 15.0 | +| test.c:459:22:459:22 | 2 | 1.0 | +| test.c:459:22:459:22 | (unsigned int)... | 1.0 | +| test.c:459:22:459:27 | ... * ... | 15.0 | +| test.c:459:22:459:31 | ... + ... | 15.0 | +| test.c:459:26:459:27 | ip | 15.0 | +| test.c:459:31:459:31 | 1 | 1.0 | +| test.c:459:31:459:31 | (unsigned int)... | 1.0 | +| test.c:459:36:459:37 | 17 | 1.0 | +| test.c:459:36:459:37 | (unsigned int)... | 1.0 | +| test.c:460:11:460:11 | 4 | 1.0 | +| test.c:460:11:460:11 | (unsigned int)... | 1.0 | +| test.c:460:11:460:28 | ... * ... | 15.0 | +| test.c:460:11:461:28 | ... + ... | 225.0 | +| test.c:460:11:462:28 | ... + ... | 3375.0 | +| test.c:460:11:468:24 | ... + ... | 1.00544625E8 | +| test.c:460:15:460:28 | (...) | 15.0 | +| test.c:460:16:460:17 | ip | 15.0 | +| test.c:460:16:460:22 | ... * ... | 15.0 | +| test.c:460:16:460:27 | ... + ... | 15.0 | +| test.c:460:21:460:22 | 14 | 1.0 | +| test.c:460:21:460:22 | (unsigned int)... | 1.0 | +| test.c:460:26:460:27 | 32 | 1.0 | +| test.c:460:26:460:27 | (unsigned int)... | 1.0 | +| test.c:461:11:461:28 | (...) | 15.0 | +| test.c:461:12:461:12 | 2 | 1.0 | +| test.c:461:12:461:12 | (unsigned int)... | 1.0 | +| test.c:461:12:461:17 | ... * ... | 15.0 | +| test.c:461:12:461:22 | ... * ... | 15.0 | +| test.c:461:12:461:27 | ... + ... | 15.0 | +| test.c:461:16:461:17 | ip | 15.0 | +| test.c:461:21:461:22 | 14 | 1.0 | +| test.c:461:21:461:22 | (unsigned int)... | 1.0 | +| test.c:461:26:461:27 | 32 | 1.0 | +| test.c:461:26:461:27 | (unsigned int)... | 1.0 | +| test.c:462:11:462:11 | 2 | 1.0 | +| test.c:462:11:462:11 | (unsigned int)... | 1.0 | +| test.c:462:11:462:28 | ... * ... | 15.0 | +| test.c:462:15:462:28 | (...) | 15.0 | +| test.c:462:16:462:17 | ip | 15.0 | +| test.c:462:16:462:22 | ... * ... | 15.0 | +| test.c:462:16:462:27 | ... + ... | 15.0 | +| test.c:462:21:462:22 | 14 | 1.0 | +| test.c:462:21:462:22 | (unsigned int)... | 1.0 | +| test.c:462:26:462:27 | 64 | 1.0 | +| test.c:462:26:462:27 | (unsigned int)... | 1.0 | +| test.c:463:11:468:24 | (...) | 29791.0 | +| test.c:463:12:463:23 | (...) | 15.0 | +| test.c:463:12:463:28 | ... * ... | 15.0 | +| test.c:463:12:464:61 | ... > ... | 1.0 | +| test.c:463:12:468:23 | ... ? ... : ... | 29791.0 | +| test.c:463:13:463:13 | 2 | 1.0 | +| test.c:463:13:463:13 | (unsigned int)... | 1.0 | +| test.c:463:13:463:18 | ... * ... | 15.0 | +| test.c:463:13:463:22 | ... + ... | 15.0 | +| test.c:463:17:463:18 | ip | 15.0 | +| test.c:463:22:463:22 | 1 | 1.0 | +| test.c:463:22:463:22 | (unsigned int)... | 1.0 | +| test.c:463:27:463:28 | 14 | 1.0 | +| test.c:463:27:463:28 | (unsigned int)... | 1.0 | +| test.c:464:11:464:61 | (...) | 225.0 | +| test.c:464:12:464:13 | 14 | 1.0 | +| test.c:464:12:464:13 | (unsigned int)... | 1.0 | +| test.c:464:12:464:24 | ... * ... | 15.0 | +| test.c:464:12:464:34 | ... > ... | 1.0 | +| test.c:464:12:464:60 | ... ? ... : ... | 225.0 | +| test.c:464:17:464:24 | (...) | 15.0 | +| test.c:464:18:464:18 | 2 | 1.0 | +| test.c:464:18:464:18 | (unsigned int)... | 1.0 | +| test.c:464:18:464:23 | ... * ... | 15.0 | +| test.c:464:22:464:23 | ip | 15.0 | +| test.c:464:28:464:29 | 17 | 1.0 | +| test.c:464:28:464:29 | (unsigned int)... | 1.0 | +| test.c:464:28:464:34 | ... * ... | 15.0 | +| test.c:464:33:464:34 | ip | 15.0 | +| test.c:464:38:464:39 | 17 | 1.0 | +| test.c:464:38:464:39 | (unsigned int)... | 1.0 | +| test.c:464:38:464:50 | ... * ... | 15.0 | +| test.c:464:43:464:50 | (...) | 15.0 | +| test.c:464:44:464:44 | 2 | 1.0 | +| test.c:464:44:464:44 | (unsigned int)... | 1.0 | +| test.c:464:44:464:49 | ... * ... | 15.0 | +| test.c:464:48:464:49 | ip | 15.0 | +| test.c:464:54:464:55 | 17 | 1.0 | +| test.c:464:54:464:55 | (unsigned int)... | 1.0 | +| test.c:464:54:464:60 | ... * ... | 15.0 | +| test.c:464:59:464:60 | ip | 15.0 | +| test.c:465:15:465:26 | (...) | 31.0 | +| test.c:465:15:465:31 | ... * ... | 31.0 | +| test.c:465:16:465:16 | 2 | 1.0 | +| test.c:465:16:465:16 | (unsigned int)... | 1.0 | +| test.c:465:16:465:21 | ... * ... | 31.0 | +| test.c:465:16:465:25 | ... + ... | 31.0 | +| test.c:465:20:465:21 | ip | 31.0 | +| test.c:465:25:465:25 | 1 | 1.0 | +| test.c:465:25:465:25 | (unsigned int)... | 1.0 | +| test.c:465:30:465:31 | 14 | 1.0 | +| test.c:465:30:465:31 | (unsigned int)... | 1.0 | +| test.c:466:15:466:16 | 14 | 1.0 | +| test.c:466:15:466:16 | (unsigned int)... | 1.0 | +| test.c:466:15:466:27 | ... * ... | 31.0 | +| test.c:466:15:466:37 | ... > ... | 1.0 | +| test.c:466:15:468:23 | ... ? ... : ... | 961.0 | +| test.c:466:20:466:27 | (...) | 31.0 | +| test.c:466:21:466:21 | 2 | 1.0 | +| test.c:466:21:466:21 | (unsigned int)... | 1.0 | +| test.c:466:21:466:26 | ... * ... | 31.0 | +| test.c:466:25:466:26 | ip | 31.0 | +| test.c:466:31:466:32 | 17 | 1.0 | +| test.c:466:31:466:32 | (unsigned int)... | 1.0 | +| test.c:466:31:466:37 | ... * ... | 31.0 | +| test.c:466:36:466:37 | ip | 31.0 | +| test.c:467:17:467:18 | 14 | 1.0 | +| test.c:467:17:467:18 | (unsigned int)... | 1.0 | +| test.c:467:17:467:29 | ... * ... | 31.0 | +| test.c:467:22:467:29 | (...) | 31.0 | +| test.c:467:23:467:23 | 2 | 1.0 | +| test.c:467:23:467:23 | (unsigned int)... | 1.0 | +| test.c:467:23:467:28 | ... * ... | 31.0 | +| test.c:467:27:467:28 | ip | 31.0 | +| test.c:468:17:468:18 | 14 | 1.0 | +| test.c:468:17:468:18 | (unsigned int)... | 1.0 | +| test.c:468:17:468:23 | ... * ... | 31.0 | +| test.c:468:22:468:23 | ip | 31.0 | +| test.c:469:11:469:11 | 2 | 1.0 | +| test.c:469:11:469:11 | (unsigned int)... | 1.0 | +| test.c:469:11:469:16 | ... * ... | 15.0 | +| test.c:469:11:469:21 | ... * ... | 15.0 | +| test.c:469:11:469:41 | ... + ... | 225.0 | +| test.c:469:15:469:16 | ip | 15.0 | +| test.c:469:20:469:21 | 14 | 1.0 | +| test.c:469:20:469:21 | (unsigned int)... | 1.0 | +| test.c:469:25:469:36 | (...) | 15.0 | +| test.c:469:25:469:41 | ... * ... | 15.0 | +| test.c:469:26:469:26 | 2 | 1.0 | +| test.c:469:26:469:26 | (unsigned int)... | 1.0 | +| test.c:469:26:469:31 | ... * ... | 15.0 | +| test.c:469:26:469:35 | ... + ... | 15.0 | +| test.c:469:30:469:31 | ip | 15.0 | +| test.c:469:35:469:35 | 1 | 1.0 | +| test.c:469:35:469:35 | (unsigned int)... | 1.0 | +| test.c:469:40:469:41 | 17 | 1.0 | +| test.c:469:40:469:41 | (unsigned int)... | 1.0 | +| test.c:470:5:489:24 | (...) | 6.6142118960740864E25 | +| test.c:470:6:470:6 | 4 | 1.0 | +| test.c:470:6:470:6 | (unsigned int)... | 1.0 | +| test.c:470:6:470:23 | ... * ... | 108.0 | +| test.c:470:6:471:24 | ... + ... | 11664.0 | +| test.c:470:6:472:24 | ... + ... | 1259712.0 | +| test.c:470:6:477:20 | ... + ... | 1.2872131505856E13 | +| test.c:470:6:478:55 | ... > ... | 1.0 | +| test.c:470:6:489:23 | ... ? ... : ... | 6.6142118960740864E25 | +| test.c:470:10:470:23 | (...) | 108.0 | +| test.c:470:11:470:12 | ip | 108.0 | +| test.c:470:11:470:17 | ... * ... | 108.0 | +| test.c:470:11:470:22 | ... + ... | 108.0 | +| test.c:470:16:470:17 | 14 | 1.0 | +| test.c:470:16:470:17 | (unsigned int)... | 1.0 | +| test.c:470:21:470:22 | 32 | 1.0 | +| test.c:470:21:470:22 | (unsigned int)... | 1.0 | +| test.c:471:7:471:24 | (...) | 108.0 | +| test.c:471:8:471:8 | 2 | 1.0 | +| test.c:471:8:471:8 | (unsigned int)... | 1.0 | +| test.c:471:8:471:13 | ... * ... | 108.0 | +| test.c:471:8:471:18 | ... * ... | 108.0 | +| test.c:471:8:471:23 | ... + ... | 108.0 | +| test.c:471:12:471:13 | ip | 108.0 | +| test.c:471:17:471:18 | 14 | 1.0 | +| test.c:471:17:471:18 | (unsigned int)... | 1.0 | +| test.c:471:22:471:23 | 32 | 1.0 | +| test.c:471:22:471:23 | (unsigned int)... | 1.0 | +| test.c:472:7:472:7 | 2 | 1.0 | +| test.c:472:7:472:7 | (unsigned int)... | 1.0 | +| test.c:472:7:472:24 | ... * ... | 108.0 | +| test.c:472:11:472:24 | (...) | 108.0 | +| test.c:472:12:472:13 | ip | 108.0 | +| test.c:472:12:472:18 | ... * ... | 108.0 | +| test.c:472:12:472:23 | ... + ... | 108.0 | +| test.c:472:17:472:18 | 14 | 1.0 | +| test.c:472:17:472:18 | (unsigned int)... | 1.0 | +| test.c:472:22:472:23 | 64 | 1.0 | +| test.c:472:22:472:23 | (unsigned int)... | 1.0 | +| test.c:473:7:477:20 | (...) | 1.0218313E7 | +| test.c:473:8:473:19 | (...) | 108.0 | +| test.c:473:8:473:24 | ... * ... | 108.0 | +| test.c:473:8:473:78 | ... > ... | 1.0 | +| test.c:473:8:477:19 | ... ? ... : ... | 1.0218313E7 | +| test.c:473:9:473:9 | 2 | 1.0 | +| test.c:473:9:473:9 | (unsigned int)... | 1.0 | +| test.c:473:9:473:14 | ... * ... | 108.0 | +| test.c:473:9:473:18 | ... + ... | 108.0 | +| test.c:473:13:473:14 | ip | 108.0 | +| test.c:473:18:473:18 | 1 | 1.0 | +| test.c:473:18:473:18 | (unsigned int)... | 1.0 | +| test.c:473:23:473:24 | 14 | 1.0 | +| test.c:473:23:473:24 | (unsigned int)... | 1.0 | +| test.c:473:28:473:78 | (...) | 11664.0 | +| test.c:473:29:473:30 | 17 | 1.0 | +| test.c:473:29:473:30 | (unsigned int)... | 1.0 | +| test.c:473:29:473:41 | ... * ... | 108.0 | +| test.c:473:29:473:51 | ... > ... | 1.0 | +| test.c:473:29:473:77 | ... ? ... : ... | 11664.0 | +| test.c:473:34:473:41 | (...) | 108.0 | +| test.c:473:35:473:35 | 2 | 1.0 | +| test.c:473:35:473:35 | (unsigned int)... | 1.0 | +| test.c:473:35:473:40 | ... * ... | 108.0 | +| test.c:473:39:473:40 | ip | 108.0 | +| test.c:473:45:473:46 | 17 | 1.0 | +| test.c:473:45:473:46 | (unsigned int)... | 1.0 | +| test.c:473:45:473:51 | ... * ... | 108.0 | +| test.c:473:50:473:51 | ip | 108.0 | +| test.c:473:55:473:56 | 17 | 1.0 | +| test.c:473:55:473:56 | (unsigned int)... | 1.0 | +| test.c:473:55:473:67 | ... * ... | 108.0 | +| test.c:473:60:473:67 | (...) | 108.0 | +| test.c:473:61:473:61 | 2 | 1.0 | +| test.c:473:61:473:61 | (unsigned int)... | 1.0 | +| test.c:473:61:473:66 | ... * ... | 108.0 | +| test.c:473:65:473:66 | ip | 108.0 | +| test.c:473:71:473:72 | 17 | 1.0 | +| test.c:473:71:473:72 | (unsigned int)... | 1.0 | +| test.c:473:71:473:77 | ... * ... | 108.0 | +| test.c:473:76:473:77 | ip | 108.0 | +| test.c:474:11:474:22 | (...) | 217.0 | +| test.c:474:11:474:27 | ... * ... | 217.0 | +| test.c:474:12:474:12 | 2 | 1.0 | +| test.c:474:12:474:12 | (unsigned int)... | 1.0 | +| test.c:474:12:474:17 | ... * ... | 217.0 | +| test.c:474:12:474:21 | ... + ... | 217.0 | +| test.c:474:16:474:17 | ip | 217.0 | +| test.c:474:21:474:21 | 1 | 1.0 | +| test.c:474:21:474:21 | (unsigned int)... | 1.0 | +| test.c:474:26:474:27 | 14 | 1.0 | +| test.c:474:26:474:27 | (unsigned int)... | 1.0 | +| test.c:475:11:475:12 | 14 | 1.0 | +| test.c:475:11:475:12 | (unsigned int)... | 1.0 | +| test.c:475:11:475:23 | ... * ... | 217.0 | +| test.c:475:11:475:33 | ... > ... | 1.0 | +| test.c:475:11:477:19 | ... ? ... : ... | 47089.0 | +| test.c:475:16:475:23 | (...) | 217.0 | +| test.c:475:17:475:17 | 2 | 1.0 | +| test.c:475:17:475:17 | (unsigned int)... | 1.0 | +| test.c:475:17:475:22 | ... * ... | 217.0 | +| test.c:475:21:475:22 | ip | 217.0 | +| test.c:475:27:475:28 | 17 | 1.0 | +| test.c:475:27:475:28 | (unsigned int)... | 1.0 | +| test.c:475:27:475:33 | ... * ... | 217.0 | +| test.c:475:32:475:33 | ip | 217.0 | +| test.c:476:13:476:14 | 14 | 1.0 | +| test.c:476:13:476:14 | (unsigned int)... | 1.0 | +| test.c:476:13:476:25 | ... * ... | 217.0 | +| test.c:476:18:476:25 | (...) | 217.0 | +| test.c:476:19:476:19 | 2 | 1.0 | +| test.c:476:19:476:19 | (unsigned int)... | 1.0 | +| test.c:476:19:476:24 | ... * ... | 217.0 | +| test.c:476:23:476:24 | ip | 217.0 | +| test.c:477:13:477:14 | 14 | 1.0 | +| test.c:477:13:477:14 | (unsigned int)... | 1.0 | +| test.c:477:13:477:19 | ... * ... | 217.0 | +| test.c:477:18:477:19 | ip | 217.0 | +| test.c:478:5:478:55 | (...) | 423801.0 | +| test.c:478:6:478:7 | 14 | 1.0 | +| test.c:478:6:478:7 | (unsigned int)... | 1.0 | +| test.c:478:6:478:12 | ... * ... | 651.0 | +| test.c:478:6:478:28 | ... > ... | 1.0 | +| test.c:478:6:478:54 | ... ? ... : ... | 423801.0 | +| test.c:478:11:478:12 | ip | 651.0 | +| test.c:478:16:478:23 | (...) | 651.0 | +| test.c:478:16:478:28 | ... * ... | 651.0 | +| test.c:478:17:478:18 | ip | 651.0 | +| test.c:478:17:478:22 | ... + ... | 651.0 | +| test.c:478:22:478:22 | 1 | 1.0 | +| test.c:478:22:478:22 | (unsigned int)... | 1.0 | +| test.c:478:27:478:28 | 17 | 1.0 | +| test.c:478:27:478:28 | (unsigned int)... | 1.0 | +| test.c:478:32:478:33 | 17 | 1.0 | +| test.c:478:32:478:33 | (unsigned int)... | 1.0 | +| test.c:478:32:478:38 | ... * ... | 651.0 | +| test.c:478:37:478:38 | ip | 651.0 | +| test.c:478:42:478:49 | (...) | 651.0 | +| test.c:478:42:478:54 | ... * ... | 651.0 | +| test.c:478:43:478:44 | ip | 651.0 | +| test.c:478:43:478:48 | ... + ... | 651.0 | +| test.c:478:48:478:48 | 1 | 1.0 | +| test.c:478:48:478:48 | (unsigned int)... | 1.0 | +| test.c:478:53:478:54 | 17 | 1.0 | +| test.c:478:53:478:54 | (unsigned int)... | 1.0 | +| test.c:479:9:479:9 | 4 | 1.0 | +| test.c:479:9:479:9 | (unsigned int)... | 1.0 | +| test.c:479:9:479:26 | ... * ... | 1302.0 | +| test.c:479:9:480:26 | ... + ... | 1695204.0 | +| test.c:479:9:481:26 | ... + ... | 2.207155608E9 | +| test.c:479:9:486:22 | ... + ... | 3.9017203216097214E19 | +| test.c:479:13:479:26 | (...) | 1302.0 | +| test.c:479:14:479:15 | ip | 1302.0 | +| test.c:479:14:479:20 | ... * ... | 1302.0 | +| test.c:479:14:479:25 | ... + ... | 1302.0 | +| test.c:479:19:479:20 | 14 | 1.0 | +| test.c:479:19:479:20 | (unsigned int)... | 1.0 | +| test.c:479:24:479:25 | 32 | 1.0 | +| test.c:479:24:479:25 | (unsigned int)... | 1.0 | +| test.c:480:9:480:26 | (...) | 1302.0 | +| test.c:480:10:480:10 | 2 | 1.0 | +| test.c:480:10:480:10 | (unsigned int)... | 1.0 | +| test.c:480:10:480:15 | ... * ... | 1302.0 | +| test.c:480:10:480:20 | ... * ... | 1302.0 | +| test.c:480:10:480:25 | ... + ... | 1302.0 | +| test.c:480:14:480:15 | ip | 1302.0 | +| test.c:480:19:480:20 | 14 | 1.0 | +| test.c:480:19:480:20 | (unsigned int)... | 1.0 | +| test.c:480:24:480:25 | 32 | 1.0 | +| test.c:480:24:480:25 | (unsigned int)... | 1.0 | +| test.c:481:9:481:9 | 2 | 1.0 | +| test.c:481:9:481:9 | (unsigned int)... | 1.0 | +| test.c:481:9:481:26 | ... * ... | 1302.0 | +| test.c:481:13:481:26 | (...) | 1302.0 | +| test.c:481:14:481:15 | ip | 1302.0 | +| test.c:481:14:481:20 | ... * ... | 1302.0 | +| test.c:481:14:481:25 | ... + ... | 1302.0 | +| test.c:481:19:481:20 | 14 | 1.0 | +| test.c:481:19:481:20 | (unsigned int)... | 1.0 | +| test.c:481:24:481:25 | 64 | 1.0 | +| test.c:481:24:481:25 | (unsigned int)... | 1.0 | +| test.c:482:9:486:22 | (...) | 1.7677595125E10 | +| test.c:482:10:482:21 | (...) | 1302.0 | +| test.c:482:10:482:26 | ... * ... | 1302.0 | +| test.c:482:10:482:80 | ... > ... | 1.0 | +| test.c:482:10:486:21 | ... ? ... : ... | 1.7677595125E10 | +| test.c:482:11:482:11 | 2 | 1.0 | +| test.c:482:11:482:11 | (unsigned int)... | 1.0 | +| test.c:482:11:482:16 | ... * ... | 1302.0 | +| test.c:482:11:482:20 | ... + ... | 1302.0 | +| test.c:482:15:482:16 | ip | 1302.0 | +| test.c:482:20:482:20 | 1 | 1.0 | +| test.c:482:20:482:20 | (unsigned int)... | 1.0 | +| test.c:482:25:482:26 | 14 | 1.0 | +| test.c:482:25:482:26 | (unsigned int)... | 1.0 | +| test.c:482:30:482:80 | (...) | 1695204.0 | +| test.c:482:31:482:32 | 17 | 1.0 | +| test.c:482:31:482:32 | (unsigned int)... | 1.0 | +| test.c:482:31:482:43 | ... * ... | 1302.0 | +| test.c:482:31:482:53 | ... > ... | 1.0 | +| test.c:482:31:482:79 | ... ? ... : ... | 1695204.0 | +| test.c:482:36:482:43 | (...) | 1302.0 | +| test.c:482:37:482:37 | 2 | 1.0 | +| test.c:482:37:482:37 | (unsigned int)... | 1.0 | +| test.c:482:37:482:42 | ... * ... | 1302.0 | +| test.c:482:41:482:42 | ip | 1302.0 | +| test.c:482:47:482:48 | 17 | 1.0 | +| test.c:482:47:482:48 | (unsigned int)... | 1.0 | +| test.c:482:47:482:53 | ... * ... | 1302.0 | +| test.c:482:52:482:53 | ip | 1302.0 | +| test.c:482:57:482:58 | 17 | 1.0 | +| test.c:482:57:482:58 | (unsigned int)... | 1.0 | +| test.c:482:57:482:69 | ... * ... | 1302.0 | +| test.c:482:62:482:69 | (...) | 1302.0 | +| test.c:482:63:482:63 | 2 | 1.0 | +| test.c:482:63:482:63 | (unsigned int)... | 1.0 | +| test.c:482:63:482:68 | ... * ... | 1302.0 | +| test.c:482:67:482:68 | ip | 1302.0 | +| test.c:482:73:482:74 | 17 | 1.0 | +| test.c:482:73:482:74 | (unsigned int)... | 1.0 | +| test.c:482:73:482:79 | ... * ... | 1302.0 | +| test.c:482:78:482:79 | ip | 1302.0 | +| test.c:483:13:483:24 | (...) | 2605.0 | +| test.c:483:13:483:29 | ... * ... | 2605.0 | +| test.c:483:14:483:14 | 2 | 1.0 | +| test.c:483:14:483:14 | (unsigned int)... | 1.0 | +| test.c:483:14:483:19 | ... * ... | 2605.0 | +| test.c:483:14:483:23 | ... + ... | 2605.0 | +| test.c:483:18:483:19 | ip | 2605.0 | +| test.c:483:23:483:23 | 1 | 1.0 | +| test.c:483:23:483:23 | (unsigned int)... | 1.0 | +| test.c:483:28:483:29 | 14 | 1.0 | +| test.c:483:28:483:29 | (unsigned int)... | 1.0 | +| test.c:484:13:484:14 | 14 | 1.0 | +| test.c:484:13:484:14 | (unsigned int)... | 1.0 | +| test.c:484:13:484:25 | ... * ... | 2605.0 | +| test.c:484:13:484:35 | ... > ... | 1.0 | +| test.c:484:13:486:21 | ... ? ... : ... | 6786025.0 | +| test.c:484:18:484:25 | (...) | 2605.0 | +| test.c:484:19:484:19 | 2 | 1.0 | +| test.c:484:19:484:19 | (unsigned int)... | 1.0 | +| test.c:484:19:484:24 | ... * ... | 2605.0 | +| test.c:484:23:484:24 | ip | 2605.0 | +| test.c:484:29:484:30 | 17 | 1.0 | +| test.c:484:29:484:30 | (unsigned int)... | 1.0 | +| test.c:484:29:484:35 | ... * ... | 2605.0 | +| test.c:484:34:484:35 | ip | 2605.0 | +| test.c:485:15:485:16 | 14 | 1.0 | +| test.c:485:15:485:16 | (unsigned int)... | 1.0 | +| test.c:485:15:485:27 | ... * ... | 2605.0 | +| test.c:485:20:485:27 | (...) | 2605.0 | +| test.c:485:21:485:21 | 2 | 1.0 | +| test.c:485:21:485:21 | (unsigned int)... | 1.0 | +| test.c:485:21:485:26 | ... * ... | 2605.0 | +| test.c:485:25:485:26 | ip | 2605.0 | +| test.c:486:15:486:16 | 14 | 1.0 | +| test.c:486:15:486:16 | (unsigned int)... | 1.0 | +| test.c:486:15:486:21 | ... * ... | 2605.0 | +| test.c:486:20:486:21 | ip | 2605.0 | +| test.c:487:9:487:10 | 14 | 1.0 | +| test.c:487:9:487:10 | (unsigned int)... | 1.0 | +| test.c:487:9:487:15 | ... * ... | 1302.0 | +| test.c:487:9:487:31 | ... > ... | 1.0 | +| test.c:487:9:489:23 | ... ? ... : ... | 1695204.0 | +| test.c:487:14:487:15 | ip | 1302.0 | +| test.c:487:19:487:26 | (...) | 1302.0 | +| test.c:487:19:487:31 | ... * ... | 1302.0 | +| test.c:487:20:487:21 | ip | 1302.0 | +| test.c:487:20:487:25 | ... + ... | 1302.0 | +| test.c:487:25:487:25 | 1 | 1.0 | +| test.c:487:25:487:25 | (unsigned int)... | 1.0 | +| test.c:487:30:487:31 | 17 | 1.0 | +| test.c:487:30:487:31 | (unsigned int)... | 1.0 | +| test.c:488:11:488:12 | 14 | 1.0 | +| test.c:488:11:488:12 | (unsigned int)... | 1.0 | +| test.c:488:11:488:17 | ... * ... | 1302.0 | +| test.c:488:16:488:17 | ip | 1302.0 | +| test.c:489:11:489:18 | (...) | 1302.0 | +| test.c:489:11:489:23 | ... * ... | 1302.0 | +| test.c:489:12:489:13 | ip | 1302.0 | +| test.c:489:12:489:17 | ... + ... | 1302.0 | +| test.c:489:17:489:17 | 1 | 1.0 | +| test.c:489:17:489:17 | (unsigned int)... | 1.0 | +| test.c:489:22:489:23 | 14 | 1.0 | +| test.c:489:22:489:23 | (unsigned int)... | 1.0 | +| test.c:490:9:490:9 | 2 | 1.0 | +| test.c:490:9:490:9 | (unsigned int)... | 1.0 | +| test.c:490:9:490:26 | ... * ... | 10419.0 | +| test.c:490:9:510:44 | ... + ... | 1.9449636104972528E43 | +| test.c:490:13:490:26 | (...) | 10419.0 | +| test.c:490:14:490:15 | ip | 10419.0 | +| test.c:490:14:490:20 | ... * ... | 10419.0 | +| test.c:490:14:490:25 | ... + ... | 10419.0 | +| test.c:490:19:490:20 | 14 | 1.0 | +| test.c:490:19:490:20 | (unsigned int)... | 1.0 | +| test.c:490:24:490:25 | 32 | 1.0 | +| test.c:490:24:490:25 | (unsigned int)... | 1.0 | +| test.c:491:9:510:44 | (...) | 1.8667469147684545E39 | +| test.c:491:10:491:10 | 4 | 1.0 | +| test.c:491:10:491:10 | (unsigned int)... | 1.0 | +| test.c:491:10:491:27 | ... * ... | 10419.0 | +| test.c:491:10:492:28 | ... + ... | 1.08555561E8 | +| test.c:491:10:493:28 | ... + ... | 1.131040390059E12 | +| test.c:491:10:499:24 | ... + ... | 1.0235492350954187E25 | +| test.c:491:10:500:39 | ... > ... | 1.0 | +| test.c:491:10:510:43 | ... ? ... : ... | 1.8667469147684545E39 | +| test.c:491:14:491:27 | (...) | 10419.0 | +| test.c:491:15:491:16 | ip | 10419.0 | +| test.c:491:15:491:21 | ... * ... | 10419.0 | +| test.c:491:15:491:26 | ... + ... | 10419.0 | +| test.c:491:20:491:21 | 14 | 1.0 | +| test.c:491:20:491:21 | (unsigned int)... | 1.0 | +| test.c:491:25:491:26 | 32 | 1.0 | +| test.c:491:25:491:26 | (unsigned int)... | 1.0 | +| test.c:492:11:492:28 | (...) | 10419.0 | +| test.c:492:12:492:12 | 2 | 1.0 | +| test.c:492:12:492:12 | (unsigned int)... | 1.0 | +| test.c:492:12:492:17 | ... * ... | 10419.0 | +| test.c:492:12:492:22 | ... * ... | 10419.0 | +| test.c:492:12:492:27 | ... + ... | 10419.0 | +| test.c:492:16:492:17 | ip | 10419.0 | +| test.c:492:21:492:22 | 14 | 1.0 | +| test.c:492:21:492:22 | (unsigned int)... | 1.0 | +| test.c:492:26:492:27 | 32 | 1.0 | +| test.c:492:26:492:27 | (unsigned int)... | 1.0 | +| test.c:493:11:493:11 | 2 | 1.0 | +| test.c:493:11:493:11 | (unsigned int)... | 1.0 | +| test.c:493:11:493:28 | ... * ... | 10419.0 | +| test.c:493:15:493:28 | (...) | 10419.0 | +| test.c:493:16:493:17 | ip | 10419.0 | +| test.c:493:16:493:22 | ... * ... | 10419.0 | +| test.c:493:16:493:27 | ... + ... | 10419.0 | +| test.c:493:21:493:22 | 14 | 1.0 | +| test.c:493:21:493:22 | (unsigned int)... | 1.0 | +| test.c:493:26:493:27 | 64 | 1.0 | +| test.c:493:26:493:27 | (unsigned int)... | 1.0 | +| test.c:494:11:499:24 | (...) | 9.049625849719E12 | +| test.c:494:12:494:23 | (...) | 10419.0 | +| test.c:494:12:494:28 | ... * ... | 10419.0 | +| test.c:494:12:495:61 | ... > ... | 1.0 | +| test.c:494:12:499:23 | ... ? ... : ... | 9.049625849719E12 | +| test.c:494:13:494:13 | 2 | 1.0 | +| test.c:494:13:494:13 | (unsigned int)... | 1.0 | +| test.c:494:13:494:18 | ... * ... | 10419.0 | +| test.c:494:13:494:22 | ... + ... | 10419.0 | +| test.c:494:17:494:18 | ip | 10419.0 | +| test.c:494:22:494:22 | 1 | 1.0 | +| test.c:494:22:494:22 | (unsigned int)... | 1.0 | +| test.c:494:27:494:28 | 14 | 1.0 | +| test.c:494:27:494:28 | (unsigned int)... | 1.0 | +| test.c:495:11:495:61 | (...) | 1.08555561E8 | +| test.c:495:12:495:13 | 14 | 1.0 | +| test.c:495:12:495:13 | (unsigned int)... | 1.0 | +| test.c:495:12:495:24 | ... * ... | 10419.0 | +| test.c:495:12:495:34 | ... > ... | 1.0 | +| test.c:495:12:495:60 | ... ? ... : ... | 1.08555561E8 | +| test.c:495:17:495:24 | (...) | 10419.0 | +| test.c:495:18:495:18 | 2 | 1.0 | +| test.c:495:18:495:18 | (unsigned int)... | 1.0 | +| test.c:495:18:495:23 | ... * ... | 10419.0 | +| test.c:495:22:495:23 | ip | 10419.0 | +| test.c:495:28:495:29 | 17 | 1.0 | +| test.c:495:28:495:29 | (unsigned int)... | 1.0 | +| test.c:495:28:495:34 | ... * ... | 10419.0 | +| test.c:495:33:495:34 | ip | 10419.0 | +| test.c:495:38:495:39 | 17 | 1.0 | +| test.c:495:38:495:39 | (unsigned int)... | 1.0 | +| test.c:495:38:495:50 | ... * ... | 10419.0 | +| test.c:495:43:495:50 | (...) | 10419.0 | +| test.c:495:44:495:44 | 2 | 1.0 | +| test.c:495:44:495:44 | (unsigned int)... | 1.0 | +| test.c:495:44:495:49 | ... * ... | 10419.0 | +| test.c:495:48:495:49 | ip | 10419.0 | +| test.c:495:54:495:55 | 17 | 1.0 | +| test.c:495:54:495:55 | (unsigned int)... | 1.0 | +| test.c:495:54:495:60 | ... * ... | 10419.0 | +| test.c:495:59:495:60 | ip | 10419.0 | +| test.c:496:15:496:26 | (...) | 20839.0 | +| test.c:496:15:496:31 | ... * ... | 20839.0 | +| test.c:496:16:496:16 | 2 | 1.0 | +| test.c:496:16:496:16 | (unsigned int)... | 1.0 | +| test.c:496:16:496:21 | ... * ... | 20839.0 | +| test.c:496:16:496:25 | ... + ... | 20839.0 | +| test.c:496:20:496:21 | ip | 20839.0 | +| test.c:496:25:496:25 | 1 | 1.0 | +| test.c:496:25:496:25 | (unsigned int)... | 1.0 | +| test.c:496:30:496:31 | 14 | 1.0 | +| test.c:496:30:496:31 | (unsigned int)... | 1.0 | +| test.c:497:15:497:16 | 14 | 1.0 | +| test.c:497:15:497:16 | (unsigned int)... | 1.0 | +| test.c:497:15:497:27 | ... * ... | 20839.0 | +| test.c:497:15:497:37 | ... > ... | 1.0 | +| test.c:497:15:499:23 | ... ? ... : ... | 4.34263921E8 | +| test.c:497:20:497:27 | (...) | 20839.0 | +| test.c:497:21:497:21 | 2 | 1.0 | +| test.c:497:21:497:21 | (unsigned int)... | 1.0 | +| test.c:497:21:497:26 | ... * ... | 20839.0 | +| test.c:497:25:497:26 | ip | 20839.0 | +| test.c:497:31:497:32 | 17 | 1.0 | +| test.c:497:31:497:32 | (unsigned int)... | 1.0 | +| test.c:497:31:497:37 | ... * ... | 20839.0 | +| test.c:497:36:497:37 | ip | 20839.0 | +| test.c:498:17:498:18 | 14 | 1.0 | +| test.c:498:17:498:18 | (unsigned int)... | 1.0 | +| test.c:498:17:498:29 | ... * ... | 20839.0 | +| test.c:498:22:498:29 | (...) | 20839.0 | +| test.c:498:23:498:23 | 2 | 1.0 | +| test.c:498:23:498:23 | (unsigned int)... | 1.0 | +| test.c:498:23:498:28 | ... * ... | 20839.0 | +| test.c:498:27:498:28 | ip | 20839.0 | +| test.c:499:17:499:18 | 14 | 1.0 | +| test.c:499:17:499:18 | (unsigned int)... | 1.0 | +| test.c:499:17:499:23 | ... * ... | 20839.0 | +| test.c:499:22:499:23 | ip | 20839.0 | +| test.c:500:9:500:9 | 2 | 1.0 | +| test.c:500:9:500:9 | (unsigned int)... | 1.0 | +| test.c:500:9:500:14 | ... * ... | 62517.0 | +| test.c:500:9:500:19 | ... * ... | 62517.0 | +| test.c:500:9:500:39 | ... + ... | 3.908375289E9 | +| test.c:500:13:500:14 | ip | 62517.0 | +| test.c:500:18:500:19 | 14 | 1.0 | +| test.c:500:18:500:19 | (unsigned int)... | 1.0 | +| test.c:500:23:500:34 | (...) | 62517.0 | +| test.c:500:23:500:39 | ... * ... | 62517.0 | +| test.c:500:24:500:24 | 2 | 1.0 | +| test.c:500:24:500:24 | (unsigned int)... | 1.0 | +| test.c:500:24:500:29 | ... * ... | 62517.0 | +| test.c:500:24:500:33 | ... + ... | 62517.0 | +| test.c:500:28:500:29 | ip | 62517.0 | +| test.c:500:33:500:33 | 1 | 1.0 | +| test.c:500:33:500:33 | (unsigned int)... | 1.0 | +| test.c:500:38:500:39 | 17 | 1.0 | +| test.c:500:38:500:39 | (unsigned int)... | 1.0 | +| test.c:501:13:501:13 | 4 | 1.0 | +| test.c:501:13:501:13 | (unsigned int)... | 1.0 | +| test.c:501:13:501:30 | ... * ... | 62517.0 | +| test.c:501:13:502:30 | ... + ... | 3.908375289E9 | +| test.c:501:13:503:30 | ... + ... | 2.44339897942413E14 | +| test.c:501:13:509:26 | ... + ... | 4.7762734556795386E29 | +| test.c:501:17:501:30 | (...) | 62517.0 | +| test.c:501:18:501:19 | ip | 62517.0 | +| test.c:501:18:501:24 | ... * ... | 62517.0 | +| test.c:501:18:501:29 | ... + ... | 62517.0 | +| test.c:501:23:501:24 | 14 | 1.0 | +| test.c:501:23:501:24 | (unsigned int)... | 1.0 | +| test.c:501:28:501:29 | 32 | 1.0 | +| test.c:501:28:501:29 | (unsigned int)... | 1.0 | +| test.c:502:13:502:30 | (...) | 62517.0 | +| test.c:502:14:502:14 | 2 | 1.0 | +| test.c:502:14:502:14 | (unsigned int)... | 1.0 | +| test.c:502:14:502:19 | ... * ... | 62517.0 | +| test.c:502:14:502:24 | ... * ... | 62517.0 | +| test.c:502:14:502:29 | ... + ... | 62517.0 | +| test.c:502:18:502:19 | ip | 62517.0 | +| test.c:502:23:502:24 | 14 | 1.0 | +| test.c:502:23:502:24 | (unsigned int)... | 1.0 | +| test.c:502:28:502:29 | 32 | 1.0 | +| test.c:502:28:502:29 | (unsigned int)... | 1.0 | +| test.c:503:13:503:13 | 2 | 1.0 | +| test.c:503:13:503:13 | (unsigned int)... | 1.0 | +| test.c:503:13:503:30 | ... * ... | 62517.0 | +| test.c:503:17:503:30 | (...) | 62517.0 | +| test.c:503:18:503:19 | ip | 62517.0 | +| test.c:503:18:503:24 | ... * ... | 62517.0 | +| test.c:503:18:503:29 | ... + ... | 62517.0 | +| test.c:503:23:503:24 | 14 | 1.0 | +| test.c:503:23:503:24 | (unsigned int)... | 1.0 | +| test.c:503:28:503:29 | 64 | 1.0 | +| test.c:503:28:503:29 | (unsigned int)... | 1.0 | +| test.c:504:13:509:26 | (...) | 1.954766084417875E15 | +| test.c:504:14:504:25 | (...) | 62517.0 | +| test.c:504:14:504:30 | ... * ... | 62517.0 | +| test.c:504:14:505:63 | ... > ... | 1.0 | +| test.c:504:14:509:25 | ... ? ... : ... | 1.954766084417875E15 | +| test.c:504:15:504:15 | 2 | 1.0 | +| test.c:504:15:504:15 | (unsigned int)... | 1.0 | +| test.c:504:15:504:20 | ... * ... | 62517.0 | +| test.c:504:15:504:24 | ... + ... | 62517.0 | +| test.c:504:19:504:20 | ip | 62517.0 | +| test.c:504:24:504:24 | 1 | 1.0 | +| test.c:504:24:504:24 | (unsigned int)... | 1.0 | +| test.c:504:29:504:30 | 14 | 1.0 | +| test.c:504:29:504:30 | (unsigned int)... | 1.0 | +| test.c:505:13:505:63 | (...) | 3.908375289E9 | +| test.c:505:14:505:15 | 14 | 1.0 | +| test.c:505:14:505:15 | (unsigned int)... | 1.0 | +| test.c:505:14:505:26 | ... * ... | 62517.0 | +| test.c:505:14:505:36 | ... > ... | 1.0 | +| test.c:505:14:505:62 | ... ? ... : ... | 3.908375289E9 | +| test.c:505:19:505:26 | (...) | 62517.0 | +| test.c:505:20:505:20 | 2 | 1.0 | +| test.c:505:20:505:20 | (unsigned int)... | 1.0 | +| test.c:505:20:505:25 | ... * ... | 62517.0 | +| test.c:505:24:505:25 | ip | 62517.0 | +| test.c:505:30:505:31 | 17 | 1.0 | +| test.c:505:30:505:31 | (unsigned int)... | 1.0 | +| test.c:505:30:505:36 | ... * ... | 62517.0 | +| test.c:505:35:505:36 | ip | 62517.0 | +| test.c:505:40:505:41 | 17 | 1.0 | +| test.c:505:40:505:41 | (unsigned int)... | 1.0 | +| test.c:505:40:505:52 | ... * ... | 62517.0 | +| test.c:505:45:505:52 | (...) | 62517.0 | +| test.c:505:46:505:46 | 2 | 1.0 | +| test.c:505:46:505:46 | (unsigned int)... | 1.0 | +| test.c:505:46:505:51 | ... * ... | 62517.0 | +| test.c:505:50:505:51 | ip | 62517.0 | +| test.c:505:56:505:57 | 17 | 1.0 | +| test.c:505:56:505:57 | (unsigned int)... | 1.0 | +| test.c:505:56:505:62 | ... * ... | 62517.0 | +| test.c:505:61:505:62 | ip | 62517.0 | +| test.c:506:17:506:28 | (...) | 125035.0 | +| test.c:506:17:506:33 | ... * ... | 125035.0 | +| test.c:506:18:506:18 | 2 | 1.0 | +| test.c:506:18:506:18 | (unsigned int)... | 1.0 | +| test.c:506:18:506:23 | ... * ... | 125035.0 | +| test.c:506:18:506:27 | ... + ... | 125035.0 | +| test.c:506:22:506:23 | ip | 125035.0 | +| test.c:506:27:506:27 | 1 | 1.0 | +| test.c:506:27:506:27 | (unsigned int)... | 1.0 | +| test.c:506:32:506:33 | 14 | 1.0 | +| test.c:506:32:506:33 | (unsigned int)... | 1.0 | +| test.c:507:17:507:18 | 14 | 1.0 | +| test.c:507:17:507:18 | (unsigned int)... | 1.0 | +| test.c:507:17:507:29 | ... * ... | 125035.0 | +| test.c:507:17:507:39 | ... > ... | 1.0 | +| test.c:507:17:509:25 | ... ? ... : ... | 1.5633751225E10 | +| test.c:507:22:507:29 | (...) | 125035.0 | +| test.c:507:23:507:23 | 2 | 1.0 | +| test.c:507:23:507:23 | (unsigned int)... | 1.0 | +| test.c:507:23:507:28 | ... * ... | 125035.0 | +| test.c:507:27:507:28 | ip | 125035.0 | +| test.c:507:33:507:34 | 17 | 1.0 | +| test.c:507:33:507:34 | (unsigned int)... | 1.0 | +| test.c:507:33:507:39 | ... * ... | 125035.0 | +| test.c:507:38:507:39 | ip | 125035.0 | +| test.c:508:19:508:20 | 14 | 1.0 | +| test.c:508:19:508:20 | (unsigned int)... | 1.0 | +| test.c:508:19:508:31 | ... * ... | 125035.0 | +| test.c:508:24:508:31 | (...) | 125035.0 | +| test.c:508:25:508:25 | 2 | 1.0 | +| test.c:508:25:508:25 | (unsigned int)... | 1.0 | +| test.c:508:25:508:30 | ... * ... | 125035.0 | +| test.c:508:29:508:30 | ip | 125035.0 | +| test.c:509:19:509:20 | 14 | 1.0 | +| test.c:509:19:509:20 | (unsigned int)... | 1.0 | +| test.c:509:19:509:25 | ... * ... | 125035.0 | +| test.c:509:24:509:25 | ip | 125035.0 | +| test.c:510:13:510:13 | 2 | 1.0 | +| test.c:510:13:510:13 | (unsigned int)... | 1.0 | +| test.c:510:13:510:18 | ... * ... | 62517.0 | +| test.c:510:13:510:23 | ... * ... | 62517.0 | +| test.c:510:13:510:43 | ... + ... | 3.908375289E9 | +| test.c:510:17:510:18 | ip | 62517.0 | +| test.c:510:22:510:23 | 14 | 1.0 | +| test.c:510:22:510:23 | (unsigned int)... | 1.0 | +| test.c:510:27:510:38 | (...) | 62517.0 | +| test.c:510:27:510:43 | ... * ... | 62517.0 | +| test.c:510:28:510:28 | 2 | 1.0 | +| test.c:510:28:510:28 | (unsigned int)... | 1.0 | +| test.c:510:28:510:33 | ... * ... | 62517.0 | +| test.c:510:28:510:37 | ... + ... | 62517.0 | +| test.c:510:32:510:33 | ip | 62517.0 | +| test.c:510:37:510:37 | 1 | 1.0 | +| test.c:510:37:510:37 | (unsigned int)... | 1.0 | +| test.c:510:42:510:43 | 17 | 1.0 | +| test.c:510:42:510:43 | (unsigned int)... | 1.0 | +| test.c:511:9:511:9 | 4 | 1.0 | +| test.c:511:9:511:9 | (unsigned int)... | 1.0 | +| test.c:511:9:511:26 | ... * ... | 10419.0 | +| test.c:511:9:512:30 | ... + ... | 1.08555561E8 | +| test.c:511:9:513:30 | ... + ... | 1.131040390059E12 | +| test.c:511:9:519:26 | ... + ... | 1.0235492350954187E25 | +| test.c:511:9:520:61 | ... > ... | 1.0 | +| test.c:511:9:532:25 | ... ? ... : ... | 4.778814771623795E41 | +| test.c:511:13:511:26 | (...) | 10419.0 | +| test.c:511:14:511:15 | ip | 10419.0 | +| test.c:511:14:511:20 | ... * ... | 10419.0 | +| test.c:511:14:511:25 | ... + ... | 10419.0 | +| test.c:511:19:511:20 | 14 | 1.0 | +| test.c:511:19:511:20 | (unsigned int)... | 1.0 | +| test.c:511:24:511:25 | 32 | 1.0 | +| test.c:511:24:511:25 | (unsigned int)... | 1.0 | +| test.c:512:13:512:30 | (...) | 10419.0 | +| test.c:512:14:512:14 | 2 | 1.0 | +| test.c:512:14:512:14 | (unsigned int)... | 1.0 | +| test.c:512:14:512:19 | ... * ... | 10419.0 | +| test.c:512:14:512:24 | ... * ... | 10419.0 | +| test.c:512:14:512:29 | ... + ... | 10419.0 | +| test.c:512:18:512:19 | ip | 10419.0 | +| test.c:512:23:512:24 | 14 | 1.0 | +| test.c:512:23:512:24 | (unsigned int)... | 1.0 | +| test.c:512:28:512:29 | 32 | 1.0 | +| test.c:512:28:512:29 | (unsigned int)... | 1.0 | +| test.c:513:13:513:13 | 2 | 1.0 | +| test.c:513:13:513:13 | (unsigned int)... | 1.0 | +| test.c:513:13:513:30 | ... * ... | 10419.0 | +| test.c:513:17:513:30 | (...) | 10419.0 | +| test.c:513:18:513:19 | ip | 10419.0 | +| test.c:513:18:513:24 | ... * ... | 10419.0 | +| test.c:513:18:513:29 | ... + ... | 10419.0 | +| test.c:513:23:513:24 | 14 | 1.0 | +| test.c:513:23:513:24 | (unsigned int)... | 1.0 | +| test.c:513:28:513:29 | 64 | 1.0 | +| test.c:513:28:513:29 | (unsigned int)... | 1.0 | +| test.c:514:13:519:26 | (...) | 9.049625849719E12 | +| test.c:514:14:514:25 | (...) | 10419.0 | +| test.c:514:14:514:30 | ... * ... | 10419.0 | +| test.c:514:14:515:63 | ... > ... | 1.0 | +| test.c:514:14:519:25 | ... ? ... : ... | 9.049625849719E12 | +| test.c:514:15:514:15 | 2 | 1.0 | +| test.c:514:15:514:15 | (unsigned int)... | 1.0 | +| test.c:514:15:514:20 | ... * ... | 10419.0 | +| test.c:514:15:514:24 | ... + ... | 10419.0 | +| test.c:514:19:514:20 | ip | 10419.0 | +| test.c:514:24:514:24 | 1 | 1.0 | +| test.c:514:24:514:24 | (unsigned int)... | 1.0 | +| test.c:514:29:514:30 | 14 | 1.0 | +| test.c:514:29:514:30 | (unsigned int)... | 1.0 | +| test.c:515:13:515:63 | (...) | 1.08555561E8 | +| test.c:515:14:515:15 | 14 | 1.0 | +| test.c:515:14:515:15 | (unsigned int)... | 1.0 | +| test.c:515:14:515:26 | ... * ... | 10419.0 | +| test.c:515:14:515:36 | ... > ... | 1.0 | +| test.c:515:14:515:62 | ... ? ... : ... | 1.08555561E8 | +| test.c:515:19:515:26 | (...) | 10419.0 | +| test.c:515:20:515:20 | 2 | 1.0 | +| test.c:515:20:515:20 | (unsigned int)... | 1.0 | +| test.c:515:20:515:25 | ... * ... | 10419.0 | +| test.c:515:24:515:25 | ip | 10419.0 | +| test.c:515:30:515:31 | 17 | 1.0 | +| test.c:515:30:515:31 | (unsigned int)... | 1.0 | +| test.c:515:30:515:36 | ... * ... | 10419.0 | +| test.c:515:35:515:36 | ip | 10419.0 | +| test.c:515:40:515:41 | 17 | 1.0 | +| test.c:515:40:515:41 | (unsigned int)... | 1.0 | +| test.c:515:40:515:52 | ... * ... | 10419.0 | +| test.c:515:45:515:52 | (...) | 10419.0 | +| test.c:515:46:515:46 | 2 | 1.0 | +| test.c:515:46:515:46 | (unsigned int)... | 1.0 | +| test.c:515:46:515:51 | ... * ... | 10419.0 | +| test.c:515:50:515:51 | ip | 10419.0 | +| test.c:515:56:515:57 | 17 | 1.0 | +| test.c:515:56:515:57 | (unsigned int)... | 1.0 | +| test.c:515:56:515:62 | ... * ... | 10419.0 | +| test.c:515:61:515:62 | ip | 10419.0 | +| test.c:516:17:516:28 | (...) | 20839.0 | +| test.c:516:17:516:33 | ... * ... | 20839.0 | +| test.c:516:18:516:18 | 2 | 1.0 | +| test.c:516:18:516:18 | (unsigned int)... | 1.0 | +| test.c:516:18:516:23 | ... * ... | 20839.0 | +| test.c:516:18:516:27 | ... + ... | 20839.0 | +| test.c:516:22:516:23 | ip | 20839.0 | +| test.c:516:27:516:27 | 1 | 1.0 | +| test.c:516:27:516:27 | (unsigned int)... | 1.0 | +| test.c:516:32:516:33 | 14 | 1.0 | +| test.c:516:32:516:33 | (unsigned int)... | 1.0 | +| test.c:517:17:517:18 | 14 | 1.0 | +| test.c:517:17:517:18 | (unsigned int)... | 1.0 | +| test.c:517:17:517:29 | ... * ... | 20839.0 | +| test.c:517:17:517:39 | ... > ... | 1.0 | +| test.c:517:17:519:25 | ... ? ... : ... | 4.34263921E8 | +| test.c:517:22:517:29 | (...) | 20839.0 | +| test.c:517:23:517:23 | 2 | 1.0 | +| test.c:517:23:517:23 | (unsigned int)... | 1.0 | +| test.c:517:23:517:28 | ... * ... | 20839.0 | +| test.c:517:27:517:28 | ip | 20839.0 | +| test.c:517:33:517:34 | 17 | 1.0 | +| test.c:517:33:517:34 | (unsigned int)... | 1.0 | +| test.c:517:33:517:39 | ... * ... | 20839.0 | +| test.c:517:38:517:39 | ip | 20839.0 | +| test.c:518:19:518:20 | 14 | 1.0 | +| test.c:518:19:518:20 | (unsigned int)... | 1.0 | +| test.c:518:19:518:31 | ... * ... | 20839.0 | +| test.c:518:24:518:31 | (...) | 20839.0 | +| test.c:518:25:518:25 | 2 | 1.0 | +| test.c:518:25:518:25 | (unsigned int)... | 1.0 | +| test.c:518:25:518:30 | ... * ... | 20839.0 | +| test.c:518:29:518:30 | ip | 20839.0 | +| test.c:519:19:519:20 | 14 | 1.0 | +| test.c:519:19:519:20 | (unsigned int)... | 1.0 | +| test.c:519:19:519:25 | ... * ... | 20839.0 | +| test.c:519:24:519:25 | ip | 20839.0 | +| test.c:520:11:520:61 | (...) | 3.908375289E9 | +| test.c:520:12:520:13 | 14 | 1.0 | +| test.c:520:12:520:13 | (unsigned int)... | 1.0 | +| test.c:520:12:520:18 | ... * ... | 62517.0 | +| test.c:520:12:520:34 | ... > ... | 1.0 | +| test.c:520:12:520:60 | ... ? ... : ... | 3.908375289E9 | +| test.c:520:17:520:18 | ip | 62517.0 | +| test.c:520:22:520:29 | (...) | 62517.0 | +| test.c:520:22:520:34 | ... * ... | 62517.0 | +| test.c:520:23:520:24 | ip | 62517.0 | +| test.c:520:23:520:28 | ... + ... | 62517.0 | +| test.c:520:28:520:28 | 1 | 1.0 | +| test.c:520:28:520:28 | (unsigned int)... | 1.0 | +| test.c:520:33:520:34 | 17 | 1.0 | +| test.c:520:33:520:34 | (unsigned int)... | 1.0 | +| test.c:520:38:520:39 | 17 | 1.0 | +| test.c:520:38:520:39 | (unsigned int)... | 1.0 | +| test.c:520:38:520:44 | ... * ... | 62517.0 | +| test.c:520:43:520:44 | ip | 62517.0 | +| test.c:520:48:520:55 | (...) | 62517.0 | +| test.c:520:48:520:60 | ... * ... | 62517.0 | +| test.c:520:49:520:50 | ip | 62517.0 | +| test.c:520:49:520:54 | ... + ... | 62517.0 | +| test.c:520:54:520:54 | 1 | 1.0 | +| test.c:520:54:520:54 | (unsigned int)... | 1.0 | +| test.c:520:59:520:60 | 17 | 1.0 | +| test.c:520:59:520:60 | (unsigned int)... | 1.0 | +| test.c:521:11:521:11 | 4 | 1.0 | +| test.c:521:11:521:11 | (unsigned int)... | 1.0 | +| test.c:521:11:521:28 | ... * ... | 125034.0 | +| test.c:521:11:522:28 | ... + ... | 1.5633501156E10 | +| test.c:521:11:523:28 | ... + ... | 1.954719183539304E15 | +| test.c:521:11:529:24 | ... + ... | 3.056778340269433E31 | +| test.c:521:15:521:28 | (...) | 125034.0 | +| test.c:521:16:521:17 | ip | 125034.0 | +| test.c:521:16:521:22 | ... * ... | 125034.0 | +| test.c:521:16:521:27 | ... + ... | 125034.0 | +| test.c:521:21:521:22 | 14 | 1.0 | +| test.c:521:21:521:22 | (unsigned int)... | 1.0 | +| test.c:521:26:521:27 | 32 | 1.0 | +| test.c:521:26:521:27 | (unsigned int)... | 1.0 | +| test.c:522:11:522:28 | (...) | 125034.0 | +| test.c:522:12:522:12 | 2 | 1.0 | +| test.c:522:12:522:12 | (unsigned int)... | 1.0 | +| test.c:522:12:522:17 | ... * ... | 125034.0 | +| test.c:522:12:522:22 | ... * ... | 125034.0 | +| test.c:522:12:522:27 | ... + ... | 125034.0 | +| test.c:522:16:522:17 | ip | 125034.0 | +| test.c:522:21:522:22 | 14 | 1.0 | +| test.c:522:21:522:22 | (unsigned int)... | 1.0 | +| test.c:522:26:522:27 | 32 | 1.0 | +| test.c:522:26:522:27 | (unsigned int)... | 1.0 | +| test.c:523:11:523:11 | 2 | 1.0 | +| test.c:523:11:523:11 | (unsigned int)... | 1.0 | +| test.c:523:11:523:28 | ... * ... | 125034.0 | +| test.c:523:15:523:28 | (...) | 125034.0 | +| test.c:523:16:523:17 | ip | 125034.0 | +| test.c:523:16:523:22 | ... * ... | 125034.0 | +| test.c:523:16:523:27 | ... + ... | 125034.0 | +| test.c:523:21:523:22 | 14 | 1.0 | +| test.c:523:21:523:22 | (unsigned int)... | 1.0 | +| test.c:523:26:523:27 | 64 | 1.0 | +| test.c:523:26:523:27 | (unsigned int)... | 1.0 | +| test.c:524:11:529:24 | (...) | 1.5637941071078508E16 | +| test.c:524:12:524:23 | (...) | 125034.0 | +| test.c:524:12:524:28 | ... * ... | 125034.0 | +| test.c:524:12:525:61 | ... > ... | 1.0 | +| test.c:524:12:529:23 | ... ? ... : ... | 1.5637941071078508E16 | +| test.c:524:13:524:13 | 2 | 1.0 | +| test.c:524:13:524:13 | (unsigned int)... | 1.0 | +| test.c:524:13:524:18 | ... * ... | 125034.0 | +| test.c:524:13:524:22 | ... + ... | 125034.0 | +| test.c:524:17:524:18 | ip | 125034.0 | +| test.c:524:22:524:22 | 1 | 1.0 | +| test.c:524:22:524:22 | (unsigned int)... | 1.0 | +| test.c:524:27:524:28 | 14 | 1.0 | +| test.c:524:27:524:28 | (unsigned int)... | 1.0 | +| test.c:525:11:525:61 | (...) | 1.5633501156E10 | +| test.c:525:12:525:13 | 14 | 1.0 | +| test.c:525:12:525:13 | (unsigned int)... | 1.0 | +| test.c:525:12:525:24 | ... * ... | 125034.0 | +| test.c:525:12:525:34 | ... > ... | 1.0 | +| test.c:525:12:525:60 | ... ? ... : ... | 1.5633501156E10 | +| test.c:525:17:525:24 | (...) | 125034.0 | +| test.c:525:18:525:18 | 2 | 1.0 | +| test.c:525:18:525:18 | (unsigned int)... | 1.0 | +| test.c:525:18:525:23 | ... * ... | 125034.0 | +| test.c:525:22:525:23 | ip | 125034.0 | +| test.c:525:28:525:29 | 17 | 1.0 | +| test.c:525:28:525:29 | (unsigned int)... | 1.0 | +| test.c:525:28:525:34 | ... * ... | 125034.0 | +| test.c:525:33:525:34 | ip | 125034.0 | +| test.c:525:38:525:39 | 17 | 1.0 | +| test.c:525:38:525:39 | (unsigned int)... | 1.0 | +| test.c:525:38:525:50 | ... * ... | 125034.0 | +| test.c:525:43:525:50 | (...) | 125034.0 | +| test.c:525:44:525:44 | 2 | 1.0 | +| test.c:525:44:525:44 | (unsigned int)... | 1.0 | +| test.c:525:44:525:49 | ... * ... | 125034.0 | +| test.c:525:48:525:49 | ip | 125034.0 | +| test.c:525:54:525:55 | 17 | 1.0 | +| test.c:525:54:525:55 | (unsigned int)... | 1.0 | +| test.c:525:54:525:60 | ... * ... | 125034.0 | +| test.c:525:59:525:60 | ip | 125034.0 | +| test.c:526:15:526:26 | (...) | 250069.0 | +| test.c:526:15:526:31 | ... * ... | 250069.0 | +| test.c:526:16:526:16 | 2 | 1.0 | +| test.c:526:16:526:16 | (unsigned int)... | 1.0 | +| test.c:526:16:526:21 | ... * ... | 250069.0 | +| test.c:526:16:526:25 | ... + ... | 250069.0 | +| test.c:526:20:526:21 | ip | 250069.0 | +| test.c:526:25:526:25 | 1 | 1.0 | +| test.c:526:25:526:25 | (unsigned int)... | 1.0 | +| test.c:526:30:526:31 | 14 | 1.0 | +| test.c:526:30:526:31 | (unsigned int)... | 1.0 | +| test.c:527:15:527:16 | 14 | 1.0 | +| test.c:527:15:527:16 | (unsigned int)... | 1.0 | +| test.c:527:15:527:27 | ... * ... | 250069.0 | +| test.c:527:15:527:37 | ... > ... | 1.0 | +| test.c:527:15:529:23 | ... ? ... : ... | 6.2534504761E10 | +| test.c:527:20:527:27 | (...) | 250069.0 | +| test.c:527:21:527:21 | 2 | 1.0 | +| test.c:527:21:527:21 | (unsigned int)... | 1.0 | +| test.c:527:21:527:26 | ... * ... | 250069.0 | +| test.c:527:25:527:26 | ip | 250069.0 | +| test.c:527:31:527:32 | 17 | 1.0 | +| test.c:527:31:527:32 | (unsigned int)... | 1.0 | +| test.c:527:31:527:37 | ... * ... | 250069.0 | +| test.c:527:36:527:37 | ip | 250069.0 | +| test.c:528:17:528:18 | 14 | 1.0 | +| test.c:528:17:528:18 | (unsigned int)... | 1.0 | +| test.c:528:17:528:29 | ... * ... | 250069.0 | +| test.c:528:22:528:29 | (...) | 250069.0 | +| test.c:528:23:528:23 | 2 | 1.0 | +| test.c:528:23:528:23 | (unsigned int)... | 1.0 | +| test.c:528:23:528:28 | ... * ... | 250069.0 | +| test.c:528:27:528:28 | ip | 250069.0 | +| test.c:529:17:529:18 | 14 | 1.0 | +| test.c:529:17:529:18 | (unsigned int)... | 1.0 | +| test.c:529:17:529:23 | ... * ... | 250069.0 | +| test.c:529:22:529:23 | ip | 250069.0 | +| test.c:530:11:530:12 | 14 | 1.0 | +| test.c:530:11:530:12 | (unsigned int)... | 1.0 | +| test.c:530:11:530:17 | ... * ... | 125034.0 | +| test.c:530:11:530:33 | ... > ... | 1.0 | +| test.c:530:11:532:25 | ... ? ... : ... | 1.5633501156E10 | +| test.c:530:16:530:17 | ip | 125034.0 | +| test.c:530:21:530:28 | (...) | 125034.0 | +| test.c:530:21:530:33 | ... * ... | 125034.0 | +| test.c:530:22:530:23 | ip | 125034.0 | +| test.c:530:22:530:27 | ... + ... | 125034.0 | +| test.c:530:27:530:27 | 1 | 1.0 | +| test.c:530:27:530:27 | (unsigned int)... | 1.0 | +| test.c:530:32:530:33 | 17 | 1.0 | +| test.c:530:32:530:33 | (unsigned int)... | 1.0 | +| test.c:531:13:531:14 | 14 | 1.0 | +| test.c:531:13:531:14 | (unsigned int)... | 1.0 | +| test.c:531:13:531:19 | ... * ... | 125034.0 | +| test.c:531:18:531:19 | ip | 125034.0 | +| test.c:532:13:532:20 | (...) | 125034.0 | +| test.c:532:13:532:25 | ... * ... | 125034.0 | +| test.c:532:14:532:15 | ip | 125034.0 | +| test.c:532:14:532:19 | ... + ... | 125034.0 | +| test.c:532:19:532:19 | 1 | 1.0 | +| test.c:532:19:532:19 | (unsigned int)... | 1.0 | +| test.c:532:24:532:25 | 14 | 1.0 | +| test.c:532:24:532:25 | (unsigned int)... | 1.0 | +| test.c:533:9:533:10 | 14 | 1.0 | +| test.c:533:9:533:10 | (unsigned int)... | 1.0 | +| test.c:533:9:533:15 | ... * ... | 1437897.0 | +| test.c:533:9:533:59 | ... > ... | 1.0 | +| test.c:533:9:535:51 | ... ? ... : ... | 2.9729207539701335E18 | +| test.c:533:14:533:15 | ip | 1437897.0 | +| test.c:533:19:533:30 | (...) | 1437897.0 | +| test.c:533:19:533:35 | ... * ... | 1437897.0 | +| test.c:533:19:533:59 | ... + ... | 2.067547782609E12 | +| test.c:533:20:533:20 | 2 | 1.0 | +| test.c:533:20:533:20 | (unsigned int)... | 1.0 | +| test.c:533:20:533:25 | ... * ... | 1437897.0 | +| test.c:533:20:533:29 | ... + ... | 1437897.0 | +| test.c:533:24:533:25 | ip | 1437897.0 | +| test.c:533:29:533:29 | 1 | 1.0 | +| test.c:533:29:533:29 | (unsigned int)... | 1.0 | +| test.c:533:34:533:35 | 17 | 1.0 | +| test.c:533:34:533:35 | (unsigned int)... | 1.0 | +| test.c:533:39:533:54 | (...) | 1437897.0 | +| test.c:533:39:533:59 | ... * ... | 1437897.0 | +| test.c:533:40:533:40 | 2 | 1.0 | +| test.c:533:40:533:40 | (unsigned int)... | 1.0 | +| test.c:533:40:533:45 | ... * ... | 1437897.0 | +| test.c:533:40:533:49 | ... + ... | 1437897.0 | +| test.c:533:40:533:53 | ... + ... | 1437897.0 | +| test.c:533:44:533:45 | ip | 1437897.0 | +| test.c:533:49:533:49 | 1 | 1.0 | +| test.c:533:49:533:49 | (unsigned int)... | 1.0 | +| test.c:533:53:533:53 | 1 | 1.0 | +| test.c:533:53:533:53 | (unsigned int)... | 1.0 | +| test.c:533:58:533:59 | 17 | 1.0 | +| test.c:533:58:533:59 | (unsigned int)... | 1.0 | +| test.c:534:11:534:12 | 14 | 1.0 | +| test.c:534:11:534:12 | (unsigned int)... | 1.0 | +| test.c:534:11:534:17 | ... * ... | 1437897.0 | +| test.c:534:16:534:17 | ip | 1437897.0 | +| test.c:535:11:535:22 | (...) | 1437897.0 | +| test.c:535:11:535:27 | ... * ... | 1437897.0 | +| test.c:535:11:535:51 | ... + ... | 2.067547782609E12 | +| test.c:535:12:535:12 | 2 | 1.0 | +| test.c:535:12:535:12 | (unsigned int)... | 1.0 | +| test.c:535:12:535:17 | ... * ... | 1437897.0 | +| test.c:535:12:535:21 | ... + ... | 1437897.0 | +| test.c:535:16:535:17 | ip | 1437897.0 | +| test.c:535:21:535:21 | 1 | 1.0 | +| test.c:535:21:535:21 | (unsigned int)... | 1.0 | +| test.c:535:26:535:27 | 14 | 1.0 | +| test.c:535:26:535:27 | (unsigned int)... | 1.0 | +| test.c:535:31:535:46 | (...) | 1437897.0 | +| test.c:535:31:535:51 | ... * ... | 1437897.0 | +| test.c:535:32:535:32 | 2 | 1.0 | +| test.c:535:32:535:32 | (unsigned int)... | 1.0 | +| test.c:535:32:535:37 | ... * ... | 1437897.0 | +| test.c:535:32:535:41 | ... + ... | 1437897.0 | +| test.c:535:32:535:45 | ... + ... | 1437897.0 | +| test.c:535:36:535:37 | ip | 1437897.0 | +| test.c:535:41:535:41 | 1 | 1.0 | +| test.c:535:41:535:41 | (unsigned int)... | 1.0 | +| test.c:535:45:535:45 | 1 | 1.0 | +| test.c:535:45:535:45 | (unsigned int)... | 1.0 | +| test.c:535:50:535:51 | 17 | 1.0 | +| test.c:535:50:535:51 | (unsigned int)... | 1.0 | +| test.c:536:9:536:9 | 2 | 1.0 | +| test.c:536:9:536:9 | (unsigned int)... | 1.0 | +| test.c:536:9:536:26 | ... * ... | 1437897.0 | +| test.c:536:9:556:48 | ... + ... | 3.5306223994138077E62 | +| test.c:536:9:578:30 | ... > ... | 1.0 | +| test.c:536:9:621:27 | ... ? ... : ... | 4.3658022750663434E182 | +| test.c:536:13:536:26 | (...) | 1437897.0 | +| test.c:536:14:536:15 | ip | 1437897.0 | +| test.c:536:14:536:20 | ... * ... | 1437897.0 | +| test.c:536:14:536:25 | ... + ... | 1437897.0 | +| test.c:536:19:536:20 | 14 | 1.0 | +| test.c:536:19:536:20 | (unsigned int)... | 1.0 | +| test.c:536:24:536:25 | 32 | 1.0 | +| test.c:536:24:536:25 | (unsigned int)... | 1.0 | +| test.c:537:13:556:48 | (...) | 2.4554070280512497E56 | +| test.c:537:14:537:14 | 4 | 1.0 | +| test.c:537:14:537:14 | (unsigned int)... | 1.0 | +| test.c:537:14:537:31 | ... * ... | 1437897.0 | +| test.c:537:14:538:32 | ... + ... | 2.067547782609E12 | +| test.c:537:14:539:32 | ... + ... | 2.9729207539701335E18 | +| test.c:537:14:545:28 | ... + ... | 7.070613623498497E37 | +| test.c:537:14:546:43 | ... > ... | 1.0 | +| test.c:537:14:556:47 | ... ? ... : ... | 2.4554070280512497E56 | +| test.c:537:18:537:31 | (...) | 1437897.0 | +| test.c:537:19:537:20 | ip | 1437897.0 | +| test.c:537:19:537:25 | ... * ... | 1437897.0 | +| test.c:537:19:537:30 | ... + ... | 1437897.0 | +| test.c:537:24:537:25 | 14 | 1.0 | +| test.c:537:24:537:25 | (unsigned int)... | 1.0 | +| test.c:537:29:537:30 | 32 | 1.0 | +| test.c:537:29:537:30 | (unsigned int)... | 1.0 | +| test.c:538:15:538:32 | (...) | 1437897.0 | +| test.c:538:16:538:16 | 2 | 1.0 | +| test.c:538:16:538:16 | (unsigned int)... | 1.0 | +| test.c:538:16:538:21 | ... * ... | 1437897.0 | +| test.c:538:16:538:26 | ... * ... | 1437897.0 | +| test.c:538:16:538:31 | ... + ... | 1437897.0 | +| test.c:538:20:538:21 | ip | 1437897.0 | +| test.c:538:25:538:26 | 14 | 1.0 | +| test.c:538:25:538:26 | (unsigned int)... | 1.0 | +| test.c:538:30:538:31 | 32 | 1.0 | +| test.c:538:30:538:31 | (unsigned int)... | 1.0 | +| test.c:539:15:539:15 | 2 | 1.0 | +| test.c:539:15:539:15 | (unsigned int)... | 1.0 | +| test.c:539:15:539:32 | ... * ... | 1437897.0 | +| test.c:539:19:539:32 | (...) | 1437897.0 | +| test.c:539:20:539:21 | ip | 1437897.0 | +| test.c:539:20:539:26 | ... * ... | 1437897.0 | +| test.c:539:20:539:31 | ... + ... | 1437897.0 | +| test.c:539:25:539:26 | 14 | 1.0 | +| test.c:539:25:539:26 | (unsigned int)... | 1.0 | +| test.c:539:30:539:31 | 64 | 1.0 | +| test.c:539:30:539:31 | (unsigned int)... | 1.0 | +| test.c:540:15:545:28 | (...) | 2.3783390842343084E19 | +| test.c:540:16:540:27 | (...) | 1437897.0 | +| test.c:540:16:540:32 | ... * ... | 1437897.0 | +| test.c:540:16:541:65 | ... > ... | 1.0 | +| test.c:540:16:545:27 | ... ? ... : ... | 2.3783390842343084E19 | +| test.c:540:17:540:17 | 2 | 1.0 | +| test.c:540:17:540:17 | (unsigned int)... | 1.0 | +| test.c:540:17:540:22 | ... * ... | 1437897.0 | +| test.c:540:17:540:26 | ... + ... | 1437897.0 | +| test.c:540:21:540:22 | ip | 1437897.0 | +| test.c:540:26:540:26 | 1 | 1.0 | +| test.c:540:26:540:26 | (unsigned int)... | 1.0 | +| test.c:540:31:540:32 | 14 | 1.0 | +| test.c:540:31:540:32 | (unsigned int)... | 1.0 | +| test.c:541:15:541:65 | (...) | 2.067547782609E12 | +| test.c:541:16:541:17 | 14 | 1.0 | +| test.c:541:16:541:17 | (unsigned int)... | 1.0 | +| test.c:541:16:541:28 | ... * ... | 1437897.0 | +| test.c:541:16:541:38 | ... > ... | 1.0 | +| test.c:541:16:541:64 | ... ? ... : ... | 2.067547782609E12 | +| test.c:541:21:541:28 | (...) | 1437897.0 | +| test.c:541:22:541:22 | 2 | 1.0 | +| test.c:541:22:541:22 | (unsigned int)... | 1.0 | +| test.c:541:22:541:27 | ... * ... | 1437897.0 | +| test.c:541:26:541:27 | ip | 1437897.0 | +| test.c:541:32:541:33 | 17 | 1.0 | +| test.c:541:32:541:33 | (unsigned int)... | 1.0 | +| test.c:541:32:541:38 | ... * ... | 1437897.0 | +| test.c:541:37:541:38 | ip | 1437897.0 | +| test.c:541:42:541:43 | 17 | 1.0 | +| test.c:541:42:541:43 | (unsigned int)... | 1.0 | +| test.c:541:42:541:54 | ... * ... | 1437897.0 | +| test.c:541:47:541:54 | (...) | 1437897.0 | +| test.c:541:48:541:48 | 2 | 1.0 | +| test.c:541:48:541:48 | (unsigned int)... | 1.0 | +| test.c:541:48:541:53 | ... * ... | 1437897.0 | +| test.c:541:52:541:53 | ip | 1437897.0 | +| test.c:541:58:541:59 | 17 | 1.0 | +| test.c:541:58:541:59 | (unsigned int)... | 1.0 | +| test.c:541:58:541:64 | ... * ... | 1437897.0 | +| test.c:541:63:541:64 | ip | 1437897.0 | +| test.c:542:19:542:30 | (...) | 2875795.0 | +| test.c:542:19:542:35 | ... * ... | 2875795.0 | +| test.c:542:20:542:20 | 2 | 1.0 | +| test.c:542:20:542:20 | (unsigned int)... | 1.0 | +| test.c:542:20:542:25 | ... * ... | 2875795.0 | +| test.c:542:20:542:29 | ... + ... | 2875795.0 | +| test.c:542:24:542:25 | ip | 2875795.0 | +| test.c:542:29:542:29 | 1 | 1.0 | +| test.c:542:29:542:29 | (unsigned int)... | 1.0 | +| test.c:542:34:542:35 | 14 | 1.0 | +| test.c:542:34:542:35 | (unsigned int)... | 1.0 | +| test.c:543:19:543:20 | 14 | 1.0 | +| test.c:543:19:543:20 | (unsigned int)... | 1.0 | +| test.c:543:19:543:31 | ... * ... | 2875795.0 | +| test.c:543:19:543:41 | ... > ... | 1.0 | +| test.c:543:19:545:27 | ... ? ... : ... | 8.270196882025E12 | +| test.c:543:24:543:31 | (...) | 2875795.0 | +| test.c:543:25:543:25 | 2 | 1.0 | +| test.c:543:25:543:25 | (unsigned int)... | 1.0 | +| test.c:543:25:543:30 | ... * ... | 2875795.0 | +| test.c:543:29:543:30 | ip | 2875795.0 | +| test.c:543:35:543:36 | 17 | 1.0 | +| test.c:543:35:543:36 | (unsigned int)... | 1.0 | +| test.c:543:35:543:41 | ... * ... | 2875795.0 | +| test.c:543:40:543:41 | ip | 2875795.0 | +| test.c:544:21:544:22 | 14 | 1.0 | +| test.c:544:21:544:22 | (unsigned int)... | 1.0 | +| test.c:544:21:544:33 | ... * ... | 2875795.0 | +| test.c:544:26:544:33 | (...) | 2875795.0 | +| test.c:544:27:544:27 | 2 | 1.0 | +| test.c:544:27:544:27 | (unsigned int)... | 1.0 | +| test.c:544:27:544:32 | ... * ... | 2875795.0 | +| test.c:544:31:544:32 | ip | 2875795.0 | +| test.c:545:21:545:22 | 14 | 1.0 | +| test.c:545:21:545:22 | (unsigned int)... | 1.0 | +| test.c:545:21:545:27 | ... * ... | 2875795.0 | +| test.c:545:26:545:27 | ip | 2875795.0 | +| test.c:546:13:546:13 | 2 | 1.0 | +| test.c:546:13:546:13 | (unsigned int)... | 1.0 | +| test.c:546:13:546:18 | ... * ... | 8627385.0 | +| test.c:546:13:546:23 | ... * ... | 8627385.0 | +| test.c:546:13:546:43 | ... + ... | 7.4431771938225E13 | +| test.c:546:17:546:18 | ip | 8627385.0 | +| test.c:546:22:546:23 | 14 | 1.0 | +| test.c:546:22:546:23 | (unsigned int)... | 1.0 | +| test.c:546:27:546:38 | (...) | 8627385.0 | +| test.c:546:27:546:43 | ... * ... | 8627385.0 | +| test.c:546:28:546:28 | 2 | 1.0 | +| test.c:546:28:546:28 | (unsigned int)... | 1.0 | +| test.c:546:28:546:33 | ... * ... | 8627385.0 | +| test.c:546:28:546:37 | ... + ... | 8627385.0 | +| test.c:546:32:546:33 | ip | 8627385.0 | +| test.c:546:37:546:37 | 1 | 1.0 | +| test.c:546:37:546:37 | (unsigned int)... | 1.0 | +| test.c:546:42:546:43 | 17 | 1.0 | +| test.c:546:42:546:43 | (unsigned int)... | 1.0 | +| test.c:547:17:547:17 | 4 | 1.0 | +| test.c:547:17:547:17 | (unsigned int)... | 1.0 | +| test.c:547:17:547:34 | ... * ... | 8627385.0 | +| test.c:547:17:548:34 | ... + ... | 7.4431771938225E13 | +| test.c:547:17:549:34 | ... + ... | 6.421515527432633E20 | +| test.c:547:17:555:30 | ... + ... | 3.298869507082441E42 | +| test.c:547:21:547:34 | (...) | 8627385.0 | +| test.c:547:22:547:23 | ip | 8627385.0 | +| test.c:547:22:547:28 | ... * ... | 8627385.0 | +| test.c:547:22:547:33 | ... + ... | 8627385.0 | +| test.c:547:27:547:28 | 14 | 1.0 | +| test.c:547:27:547:28 | (unsigned int)... | 1.0 | +| test.c:547:32:547:33 | 32 | 1.0 | +| test.c:547:32:547:33 | (unsigned int)... | 1.0 | +| test.c:548:17:548:34 | (...) | 8627385.0 | +| test.c:548:18:548:18 | 2 | 1.0 | +| test.c:548:18:548:18 | (unsigned int)... | 1.0 | +| test.c:548:18:548:23 | ... * ... | 8627385.0 | +| test.c:548:18:548:28 | ... * ... | 8627385.0 | +| test.c:548:18:548:33 | ... + ... | 8627385.0 | +| test.c:548:22:548:23 | ip | 8627385.0 | +| test.c:548:27:548:28 | 14 | 1.0 | +| test.c:548:27:548:28 | (unsigned int)... | 1.0 | +| test.c:548:32:548:33 | 32 | 1.0 | +| test.c:548:32:548:33 | (unsigned int)... | 1.0 | +| test.c:549:17:549:17 | 2 | 1.0 | +| test.c:549:17:549:17 | (unsigned int)... | 1.0 | +| test.c:549:17:549:34 | ... * ... | 8627385.0 | +| test.c:549:21:549:34 | (...) | 8627385.0 | +| test.c:549:22:549:23 | ip | 8627385.0 | +| test.c:549:22:549:28 | ... * ... | 8627385.0 | +| test.c:549:22:549:33 | ... + ... | 8627385.0 | +| test.c:549:27:549:28 | 14 | 1.0 | +| test.c:549:27:549:28 | (unsigned int)... | 1.0 | +| test.c:549:32:549:33 | 64 | 1.0 | +| test.c:549:32:549:33 | (unsigned int)... | 1.0 | +| test.c:550:17:555:30 | (...) | 5.137213315127421E21 | +| test.c:550:18:550:29 | (...) | 8627385.0 | +| test.c:550:18:550:34 | ... * ... | 8627385.0 | +| test.c:550:18:551:67 | ... > ... | 1.0 | +| test.c:550:18:555:29 | ... ? ... : ... | 5.137213315127421E21 | +| test.c:550:19:550:19 | 2 | 1.0 | +| test.c:550:19:550:19 | (unsigned int)... | 1.0 | +| test.c:550:19:550:24 | ... * ... | 8627385.0 | +| test.c:550:19:550:28 | ... + ... | 8627385.0 | +| test.c:550:23:550:24 | ip | 8627385.0 | +| test.c:550:28:550:28 | 1 | 1.0 | +| test.c:550:28:550:28 | (unsigned int)... | 1.0 | +| test.c:550:33:550:34 | 14 | 1.0 | +| test.c:550:33:550:34 | (unsigned int)... | 1.0 | +| test.c:551:17:551:67 | (...) | 7.4431771938225E13 | +| test.c:551:18:551:19 | 14 | 1.0 | +| test.c:551:18:551:19 | (unsigned int)... | 1.0 | +| test.c:551:18:551:30 | ... * ... | 8627385.0 | +| test.c:551:18:551:40 | ... > ... | 1.0 | +| test.c:551:18:551:66 | ... ? ... : ... | 7.4431771938225E13 | +| test.c:551:23:551:30 | (...) | 8627385.0 | +| test.c:551:24:551:24 | 2 | 1.0 | +| test.c:551:24:551:24 | (unsigned int)... | 1.0 | +| test.c:551:24:551:29 | ... * ... | 8627385.0 | +| test.c:551:28:551:29 | ip | 8627385.0 | +| test.c:551:34:551:35 | 17 | 1.0 | +| test.c:551:34:551:35 | (unsigned int)... | 1.0 | +| test.c:551:34:551:40 | ... * ... | 8627385.0 | +| test.c:551:39:551:40 | ip | 8627385.0 | +| test.c:551:44:551:45 | 17 | 1.0 | +| test.c:551:44:551:45 | (unsigned int)... | 1.0 | +| test.c:551:44:551:56 | ... * ... | 8627385.0 | +| test.c:551:49:551:56 | (...) | 8627385.0 | +| test.c:551:50:551:50 | 2 | 1.0 | +| test.c:551:50:551:50 | (unsigned int)... | 1.0 | +| test.c:551:50:551:55 | ... * ... | 8627385.0 | +| test.c:551:54:551:55 | ip | 8627385.0 | +| test.c:551:60:551:61 | 17 | 1.0 | +| test.c:551:60:551:61 | (unsigned int)... | 1.0 | +| test.c:551:60:551:66 | ... * ... | 8627385.0 | +| test.c:551:65:551:66 | ip | 8627385.0 | +| test.c:552:21:552:32 | (...) | 1.7254771E7 | +| test.c:552:21:552:37 | ... * ... | 1.7254771E7 | +| test.c:552:22:552:22 | 2 | 1.0 | +| test.c:552:22:552:22 | (unsigned int)... | 1.0 | +| test.c:552:22:552:27 | ... * ... | 1.7254771E7 | +| test.c:552:22:552:31 | ... + ... | 1.7254771E7 | +| test.c:552:26:552:27 | ip | 1.7254771E7 | +| test.c:552:31:552:31 | 1 | 1.0 | +| test.c:552:31:552:31 | (unsigned int)... | 1.0 | +| test.c:552:36:552:37 | 14 | 1.0 | +| test.c:552:36:552:37 | (unsigned int)... | 1.0 | +| test.c:553:21:553:22 | 14 | 1.0 | +| test.c:553:21:553:22 | (unsigned int)... | 1.0 | +| test.c:553:21:553:33 | ... * ... | 1.7254771E7 | +| test.c:553:21:553:43 | ... > ... | 1.0 | +| test.c:553:21:555:29 | ... ? ... : ... | 2.97727122262441E14 | +| test.c:553:26:553:33 | (...) | 1.7254771E7 | +| test.c:553:27:553:27 | 2 | 1.0 | +| test.c:553:27:553:27 | (unsigned int)... | 1.0 | +| test.c:553:27:553:32 | ... * ... | 1.7254771E7 | +| test.c:553:31:553:32 | ip | 1.7254771E7 | +| test.c:553:37:553:38 | 17 | 1.0 | +| test.c:553:37:553:38 | (unsigned int)... | 1.0 | +| test.c:553:37:553:43 | ... * ... | 1.7254771E7 | +| test.c:553:42:553:43 | ip | 1.7254771E7 | +| test.c:554:23:554:24 | 14 | 1.0 | +| test.c:554:23:554:24 | (unsigned int)... | 1.0 | +| test.c:554:23:554:35 | ... * ... | 1.7254771E7 | +| test.c:554:28:554:35 | (...) | 1.7254771E7 | +| test.c:554:29:554:29 | 2 | 1.0 | +| test.c:554:29:554:29 | (unsigned int)... | 1.0 | +| test.c:554:29:554:34 | ... * ... | 1.7254771E7 | +| test.c:554:33:554:34 | ip | 1.7254771E7 | +| test.c:555:23:555:24 | 14 | 1.0 | +| test.c:555:23:555:24 | (unsigned int)... | 1.0 | +| test.c:555:23:555:29 | ... * ... | 1.7254771E7 | +| test.c:555:28:555:29 | ip | 1.7254771E7 | +| test.c:556:17:556:17 | 2 | 1.0 | +| test.c:556:17:556:17 | (unsigned int)... | 1.0 | +| test.c:556:17:556:22 | ... * ... | 8627385.0 | +| test.c:556:17:556:27 | ... * ... | 8627385.0 | +| test.c:556:17:556:47 | ... + ... | 7.4431771938225E13 | +| test.c:556:21:556:22 | ip | 8627385.0 | +| test.c:556:26:556:27 | 14 | 1.0 | +| test.c:556:26:556:27 | (unsigned int)... | 1.0 | +| test.c:556:31:556:42 | (...) | 8627385.0 | +| test.c:556:31:556:47 | ... * ... | 8627385.0 | +| test.c:556:32:556:32 | 2 | 1.0 | +| test.c:556:32:556:32 | (unsigned int)... | 1.0 | +| test.c:556:32:556:37 | ... * ... | 8627385.0 | +| test.c:556:32:556:41 | ... + ... | 8627385.0 | +| test.c:556:36:556:37 | ip | 8627385.0 | +| test.c:556:41:556:41 | 1 | 1.0 | +| test.c:556:41:556:41 | (unsigned int)... | 1.0 | +| test.c:556:46:556:47 | 17 | 1.0 | +| test.c:556:46:556:47 | (unsigned int)... | 1.0 | +| test.c:557:11:578:30 | (...) | 6.08636382738973E71 | +| test.c:557:12:557:12 | 4 | 1.0 | +| test.c:557:12:557:12 | (unsigned int)... | 1.0 | +| test.c:557:12:557:29 | ... * ... | 6.0391698E7 | +| test.c:557:12:558:30 | ... + ... | 3.647157187323204E15 | +| test.c:557:12:559:30 | ... + ... | 2.2025801541535236E23 | +| test.c:557:12:565:26 | ... + ... | 3.881087564774641E47 | +| test.c:557:12:566:61 | ... > ... | 1.0 | +| test.c:557:12:578:29 | ... ? ... : ... | 6.08636382738973E71 | +| test.c:557:16:557:29 | (...) | 6.0391698E7 | +| test.c:557:17:557:18 | ip | 6.0391698E7 | +| test.c:557:17:557:23 | ... * ... | 6.0391698E7 | +| test.c:557:17:557:28 | ... + ... | 6.0391698E7 | +| test.c:557:22:557:23 | 14 | 1.0 | +| test.c:557:22:557:23 | (unsigned int)... | 1.0 | +| test.c:557:27:557:28 | 32 | 1.0 | +| test.c:557:27:557:28 | (unsigned int)... | 1.0 | +| test.c:558:13:558:30 | (...) | 6.0391698E7 | +| test.c:558:14:558:14 | 2 | 1.0 | +| test.c:558:14:558:14 | (unsigned int)... | 1.0 | +| test.c:558:14:558:19 | ... * ... | 6.0391698E7 | +| test.c:558:14:558:24 | ... * ... | 6.0391698E7 | +| test.c:558:14:558:29 | ... + ... | 6.0391698E7 | +| test.c:558:18:558:19 | ip | 6.0391698E7 | +| test.c:558:23:558:24 | 14 | 1.0 | +| test.c:558:23:558:24 | (unsigned int)... | 1.0 | +| test.c:558:28:558:29 | 32 | 1.0 | +| test.c:558:28:558:29 | (unsigned int)... | 1.0 | +| test.c:559:13:559:13 | 2 | 1.0 | +| test.c:559:13:559:13 | (unsigned int)... | 1.0 | +| test.c:559:13:559:30 | ... * ... | 6.0391698E7 | +| test.c:559:17:559:30 | (...) | 6.0391698E7 | +| test.c:559:18:559:19 | ip | 6.0391698E7 | +| test.c:559:18:559:24 | ... * ... | 6.0391698E7 | +| test.c:559:18:559:29 | ... + ... | 6.0391698E7 | +| test.c:559:23:559:24 | 14 | 1.0 | +| test.c:559:23:559:24 | (unsigned int)... | 1.0 | +| test.c:559:28:559:29 | 64 | 1.0 | +| test.c:559:28:559:29 | (unsigned int)... | 1.0 | +| test.c:560:13:565:26 | (...) | 1.7620641670887053E24 | +| test.c:560:14:560:25 | (...) | 6.0391698E7 | +| test.c:560:14:560:30 | ... * ... | 6.0391698E7 | +| test.c:560:14:561:63 | ... > ... | 1.0 | +| test.c:560:14:565:25 | ... ? ... : ... | 1.7620641670887053E24 | +| test.c:560:15:560:15 | 2 | 1.0 | +| test.c:560:15:560:15 | (unsigned int)... | 1.0 | +| test.c:560:15:560:20 | ... * ... | 6.0391698E7 | +| test.c:560:15:560:24 | ... + ... | 6.0391698E7 | +| test.c:560:19:560:20 | ip | 6.0391698E7 | +| test.c:560:24:560:24 | 1 | 1.0 | +| test.c:560:24:560:24 | (unsigned int)... | 1.0 | +| test.c:560:29:560:30 | 14 | 1.0 | +| test.c:560:29:560:30 | (unsigned int)... | 1.0 | +| test.c:561:13:561:63 | (...) | 3.647157187323204E15 | +| test.c:561:14:561:15 | 14 | 1.0 | +| test.c:561:14:561:15 | (unsigned int)... | 1.0 | +| test.c:561:14:561:26 | ... * ... | 6.0391698E7 | +| test.c:561:14:561:36 | ... > ... | 1.0 | +| test.c:561:14:561:62 | ... ? ... : ... | 3.647157187323204E15 | +| test.c:561:19:561:26 | (...) | 6.0391698E7 | +| test.c:561:20:561:20 | 2 | 1.0 | +| test.c:561:20:561:20 | (unsigned int)... | 1.0 | +| test.c:561:20:561:25 | ... * ... | 6.0391698E7 | +| test.c:561:24:561:25 | ip | 6.0391698E7 | +| test.c:561:30:561:31 | 17 | 1.0 | +| test.c:561:30:561:31 | (unsigned int)... | 1.0 | +| test.c:561:30:561:36 | ... * ... | 6.0391698E7 | +| test.c:561:35:561:36 | ip | 6.0391698E7 | +| test.c:561:40:561:41 | 17 | 1.0 | +| test.c:561:40:561:41 | (unsigned int)... | 1.0 | +| test.c:561:40:561:52 | ... * ... | 6.0391698E7 | +| test.c:561:45:561:52 | (...) | 6.0391698E7 | +| test.c:561:46:561:46 | 2 | 1.0 | +| test.c:561:46:561:46 | (unsigned int)... | 1.0 | +| test.c:561:46:561:51 | ... * ... | 6.0391698E7 | +| test.c:561:50:561:51 | ip | 6.0391698E7 | +| test.c:561:56:561:57 | 17 | 1.0 | +| test.c:561:56:561:57 | (unsigned int)... | 1.0 | +| test.c:561:56:561:62 | ... * ... | 6.0391698E7 | +| test.c:561:61:561:62 | ip | 6.0391698E7 | +| test.c:562:17:562:28 | (...) | 1.20783397E8 | +| test.c:562:17:562:33 | ... * ... | 1.20783397E8 | +| test.c:562:18:562:18 | 2 | 1.0 | +| test.c:562:18:562:18 | (unsigned int)... | 1.0 | +| test.c:562:18:562:23 | ... * ... | 1.20783397E8 | +| test.c:562:18:562:27 | ... + ... | 1.20783397E8 | +| test.c:562:22:562:23 | ip | 1.20783397E8 | +| test.c:562:27:562:27 | 1 | 1.0 | +| test.c:562:27:562:27 | (unsigned int)... | 1.0 | +| test.c:562:32:562:33 | 14 | 1.0 | +| test.c:562:32:562:33 | (unsigned int)... | 1.0 | +| test.c:563:17:563:18 | 14 | 1.0 | +| test.c:563:17:563:18 | (unsigned int)... | 1.0 | +| test.c:563:17:563:29 | ... * ... | 1.20783397E8 | +| test.c:563:17:563:39 | ... > ... | 1.0 | +| test.c:563:17:565:25 | ... ? ... : ... | 1.4588628990859608E16 | +| test.c:563:22:563:29 | (...) | 1.20783397E8 | +| test.c:563:23:563:23 | 2 | 1.0 | +| test.c:563:23:563:23 | (unsigned int)... | 1.0 | +| test.c:563:23:563:28 | ... * ... | 1.20783397E8 | +| test.c:563:27:563:28 | ip | 1.20783397E8 | +| test.c:563:33:563:34 | 17 | 1.0 | +| test.c:563:33:563:34 | (unsigned int)... | 1.0 | +| test.c:563:33:563:39 | ... * ... | 1.20783397E8 | +| test.c:563:38:563:39 | ip | 1.20783397E8 | +| test.c:564:19:564:20 | 14 | 1.0 | +| test.c:564:19:564:20 | (unsigned int)... | 1.0 | +| test.c:564:19:564:31 | ... * ... | 1.20783397E8 | +| test.c:564:24:564:31 | (...) | 1.20783397E8 | +| test.c:564:25:564:25 | 2 | 1.0 | +| test.c:564:25:564:25 | (unsigned int)... | 1.0 | +| test.c:564:25:564:30 | ... * ... | 1.20783397E8 | +| test.c:564:29:564:30 | ip | 1.20783397E8 | +| test.c:565:19:565:20 | 14 | 1.0 | +| test.c:565:19:565:20 | (unsigned int)... | 1.0 | +| test.c:565:19:565:25 | ... * ... | 1.20783397E8 | +| test.c:565:24:565:25 | ip | 1.20783397E8 | +| test.c:566:11:566:61 | (...) | 1.3129766091773648E17 | +| test.c:566:12:566:13 | 14 | 1.0 | +| test.c:566:12:566:13 | (unsigned int)... | 1.0 | +| test.c:566:12:566:18 | ... * ... | 3.62350191E8 | +| test.c:566:12:566:34 | ... > ... | 1.0 | +| test.c:566:12:566:60 | ... ? ... : ... | 1.3129766091773648E17 | +| test.c:566:17:566:18 | ip | 3.62350191E8 | +| test.c:566:22:566:29 | (...) | 3.62350191E8 | +| test.c:566:22:566:34 | ... * ... | 3.62350191E8 | +| test.c:566:23:566:24 | ip | 3.62350191E8 | +| test.c:566:23:566:28 | ... + ... | 3.62350191E8 | +| test.c:566:28:566:28 | 1 | 1.0 | +| test.c:566:28:566:28 | (unsigned int)... | 1.0 | +| test.c:566:33:566:34 | 17 | 1.0 | +| test.c:566:33:566:34 | (unsigned int)... | 1.0 | +| test.c:566:38:566:39 | 17 | 1.0 | +| test.c:566:38:566:39 | (unsigned int)... | 1.0 | +| test.c:566:38:566:44 | ... * ... | 3.62350191E8 | +| test.c:566:43:566:44 | ip | 3.62350191E8 | +| test.c:566:48:566:55 | (...) | 3.62350191E8 | +| test.c:566:48:566:60 | ... * ... | 3.62350191E8 | +| test.c:566:49:566:50 | ip | 3.62350191E8 | +| test.c:566:49:566:54 | ... + ... | 3.62350191E8 | +| test.c:566:54:566:54 | 1 | 1.0 | +| test.c:566:54:566:54 | (unsigned int)... | 1.0 | +| test.c:566:59:566:60 | 17 | 1.0 | +| test.c:566:59:566:60 | (unsigned int)... | 1.0 | +| test.c:567:15:567:15 | 4 | 1.0 | +| test.c:567:15:567:15 | (unsigned int)... | 1.0 | +| test.c:567:15:567:32 | ... * ... | 7.24700382E8 | +| test.c:567:15:568:32 | ... + ... | 5.251906436709459E17 | +| test.c:567:15:569:32 | ... + ... | 3.806058600911604E26 | +| test.c:567:15:575:28 | ... + ... | 1.1588865682845433E54 | +| test.c:567:19:567:32 | (...) | 7.24700382E8 | +| test.c:567:20:567:21 | ip | 7.24700382E8 | +| test.c:567:20:567:26 | ... * ... | 7.24700382E8 | +| test.c:567:20:567:31 | ... + ... | 7.24700382E8 | +| test.c:567:25:567:26 | 14 | 1.0 | +| test.c:567:25:567:26 | (unsigned int)... | 1.0 | +| test.c:567:30:567:31 | 32 | 1.0 | +| test.c:567:30:567:31 | (unsigned int)... | 1.0 | +| test.c:568:15:568:32 | (...) | 7.24700382E8 | +| test.c:568:16:568:16 | 2 | 1.0 | +| test.c:568:16:568:16 | (unsigned int)... | 1.0 | +| test.c:568:16:568:21 | ... * ... | 7.24700382E8 | +| test.c:568:16:568:26 | ... * ... | 7.24700382E8 | +| test.c:568:16:568:31 | ... + ... | 7.24700382E8 | +| test.c:568:20:568:21 | ip | 7.24700382E8 | +| test.c:568:25:568:26 | 14 | 1.0 | +| test.c:568:25:568:26 | (unsigned int)... | 1.0 | +| test.c:568:30:568:31 | 32 | 1.0 | +| test.c:568:30:568:31 | (unsigned int)... | 1.0 | +| test.c:569:15:569:15 | 2 | 1.0 | +| test.c:569:15:569:15 | (unsigned int)... | 1.0 | +| test.c:569:15:569:32 | ... * ... | 7.24700382E8 | +| test.c:569:19:569:32 | (...) | 7.24700382E8 | +| test.c:569:20:569:21 | ip | 7.24700382E8 | +| test.c:569:20:569:26 | ... * ... | 7.24700382E8 | +| test.c:569:20:569:31 | ... + ... | 7.24700382E8 | +| test.c:569:25:569:26 | 14 | 1.0 | +| test.c:569:25:569:26 | (unsigned int)... | 1.0 | +| test.c:569:30:569:31 | 64 | 1.0 | +| test.c:569:30:569:31 | (unsigned int)... | 1.0 | +| test.c:570:15:575:28 | (...) | 3.044846887031571E27 | +| test.c:570:16:570:27 | (...) | 7.24700382E8 | +| test.c:570:16:570:32 | ... * ... | 7.24700382E8 | +| test.c:570:16:571:65 | ... > ... | 1.0 | +| test.c:570:16:575:27 | ... ? ... : ... | 3.044846887031571E27 | +| test.c:570:17:570:17 | 2 | 1.0 | +| test.c:570:17:570:17 | (unsigned int)... | 1.0 | +| test.c:570:17:570:22 | ... * ... | 7.24700382E8 | +| test.c:570:17:570:26 | ... + ... | 7.24700382E8 | +| test.c:570:21:570:22 | ip | 7.24700382E8 | +| test.c:570:26:570:26 | 1 | 1.0 | +| test.c:570:26:570:26 | (unsigned int)... | 1.0 | +| test.c:570:31:570:32 | 14 | 1.0 | +| test.c:570:31:570:32 | (unsigned int)... | 1.0 | +| test.c:571:15:571:65 | (...) | 5.251906436709459E17 | +| test.c:571:16:571:17 | 14 | 1.0 | +| test.c:571:16:571:17 | (unsigned int)... | 1.0 | +| test.c:571:16:571:28 | ... * ... | 7.24700382E8 | +| test.c:571:16:571:38 | ... > ... | 1.0 | +| test.c:571:16:571:64 | ... ? ... : ... | 5.251906436709459E17 | +| test.c:571:21:571:28 | (...) | 7.24700382E8 | +| test.c:571:22:571:22 | 2 | 1.0 | +| test.c:571:22:571:22 | (unsigned int)... | 1.0 | +| test.c:571:22:571:27 | ... * ... | 7.24700382E8 | +| test.c:571:26:571:27 | ip | 7.24700382E8 | +| test.c:571:32:571:33 | 17 | 1.0 | +| test.c:571:32:571:33 | (unsigned int)... | 1.0 | +| test.c:571:32:571:38 | ... * ... | 7.24700382E8 | +| test.c:571:37:571:38 | ip | 7.24700382E8 | +| test.c:571:42:571:43 | 17 | 1.0 | +| test.c:571:42:571:43 | (unsigned int)... | 1.0 | +| test.c:571:42:571:54 | ... * ... | 7.24700382E8 | +| test.c:571:47:571:54 | (...) | 7.24700382E8 | +| test.c:571:48:571:48 | 2 | 1.0 | +| test.c:571:48:571:48 | (unsigned int)... | 1.0 | +| test.c:571:48:571:53 | ... * ... | 7.24700382E8 | +| test.c:571:52:571:53 | ip | 7.24700382E8 | +| test.c:571:58:571:59 | 17 | 1.0 | +| test.c:571:58:571:59 | (unsigned int)... | 1.0 | +| test.c:571:58:571:64 | ... * ... | 7.24700382E8 | +| test.c:571:63:571:64 | ip | 7.24700382E8 | +| test.c:572:19:572:30 | (...) | 1.449400765E9 | +| test.c:572:19:572:35 | ... * ... | 1.449400765E9 | +| test.c:572:20:572:20 | 2 | 1.0 | +| test.c:572:20:572:20 | (unsigned int)... | 1.0 | +| test.c:572:20:572:25 | ... * ... | 1.449400765E9 | +| test.c:572:20:572:29 | ... + ... | 1.449400765E9 | +| test.c:572:24:572:25 | ip | 1.449400765E9 | +| test.c:572:29:572:29 | 1 | 1.0 | +| test.c:572:29:572:29 | (unsigned int)... | 1.0 | +| test.c:572:34:572:35 | 14 | 1.0 | +| test.c:572:34:572:35 | (unsigned int)... | 1.0 | +| test.c:573:19:573:20 | 14 | 1.0 | +| test.c:573:19:573:20 | (unsigned int)... | 1.0 | +| test.c:573:19:573:31 | ... * ... | 1.449400765E9 | +| test.c:573:19:573:41 | ... > ... | 1.0 | +| test.c:573:19:575:27 | ... ? ... : ... | 2.1007625775825853E18 | +| test.c:573:24:573:31 | (...) | 1.449400765E9 | +| test.c:573:25:573:25 | 2 | 1.0 | +| test.c:573:25:573:25 | (unsigned int)... | 1.0 | +| test.c:573:25:573:30 | ... * ... | 1.449400765E9 | +| test.c:573:29:573:30 | ip | 1.449400765E9 | +| test.c:573:35:573:36 | 17 | 1.0 | +| test.c:573:35:573:36 | (unsigned int)... | 1.0 | +| test.c:573:35:573:41 | ... * ... | 1.449400765E9 | +| test.c:573:40:573:41 | ip | 1.449400765E9 | +| test.c:574:21:574:22 | 14 | 1.0 | +| test.c:574:21:574:22 | (unsigned int)... | 1.0 | +| test.c:574:21:574:33 | ... * ... | 1.449400765E9 | +| test.c:574:26:574:33 | (...) | 1.449400765E9 | +| test.c:574:27:574:27 | 2 | 1.0 | +| test.c:574:27:574:27 | (unsigned int)... | 1.0 | +| test.c:574:27:574:32 | ... * ... | 1.449400765E9 | +| test.c:574:31:574:32 | ip | 1.449400765E9 | +| test.c:575:21:575:22 | 14 | 1.0 | +| test.c:575:21:575:22 | (unsigned int)... | 1.0 | +| test.c:575:21:575:27 | ... * ... | 1.449400765E9 | +| test.c:575:26:575:27 | ip | 1.449400765E9 | +| test.c:576:15:576:16 | 14 | 1.0 | +| test.c:576:15:576:16 | (unsigned int)... | 1.0 | +| test.c:576:15:576:21 | ... * ... | 7.24700382E8 | +| test.c:576:15:576:37 | ... > ... | 1.0 | +| test.c:576:15:578:29 | ... ? ... : ... | 5.251906436709459E17 | +| test.c:576:20:576:21 | ip | 7.24700382E8 | +| test.c:576:25:576:32 | (...) | 7.24700382E8 | +| test.c:576:25:576:37 | ... * ... | 7.24700382E8 | +| test.c:576:26:576:27 | ip | 7.24700382E8 | +| test.c:576:26:576:31 | ... + ... | 7.24700382E8 | +| test.c:576:31:576:31 | 1 | 1.0 | +| test.c:576:31:576:31 | (unsigned int)... | 1.0 | +| test.c:576:36:576:37 | 17 | 1.0 | +| test.c:576:36:576:37 | (unsigned int)... | 1.0 | +| test.c:577:17:577:18 | 14 | 1.0 | +| test.c:577:17:577:18 | (unsigned int)... | 1.0 | +| test.c:577:17:577:23 | ... * ... | 7.24700382E8 | +| test.c:577:22:577:23 | ip | 7.24700382E8 | +| test.c:578:17:578:24 | (...) | 7.24700382E8 | +| test.c:578:17:578:29 | ... * ... | 7.24700382E8 | +| test.c:578:18:578:19 | ip | 7.24700382E8 | +| test.c:578:18:578:23 | ... + ... | 7.24700382E8 | +| test.c:578:23:578:23 | 1 | 1.0 | +| test.c:578:23:578:23 | (unsigned int)... | 1.0 | +| test.c:578:28:578:29 | 14 | 1.0 | +| test.c:578:28:578:29 | (unsigned int)... | 1.0 | +| test.c:579:11:579:11 | 2 | 1.0 | +| test.c:579:11:579:11 | (unsigned int)... | 1.0 | +| test.c:579:11:579:28 | ... * ... | 5.797603059E9 | +| test.c:579:11:599:46 | ... + ... | 9.943431528813442E94 | +| test.c:579:15:579:28 | (...) | 5.797603059E9 | +| test.c:579:16:579:17 | ip | 5.797603059E9 | +| test.c:579:16:579:22 | ... * ... | 5.797603059E9 | +| test.c:579:16:579:27 | ... + ... | 5.797603059E9 | +| test.c:579:21:579:22 | 14 | 1.0 | +| test.c:579:21:579:22 | (unsigned int)... | 1.0 | +| test.c:579:26:579:27 | 32 | 1.0 | +| test.c:579:26:579:27 | (unsigned int)... | 1.0 | +| test.c:580:11:599:46 | (...) | 1.715093535659983E85 | +| test.c:580:12:580:12 | 4 | 1.0 | +| test.c:580:12:580:12 | (unsigned int)... | 1.0 | +| test.c:580:12:580:29 | ... * ... | 5.797603059E9 | +| test.c:580:12:581:30 | ... + ... | 3.361220122972616E19 | +| test.c:580:12:582:30 | ... + ... | 1.9487020066918396E29 | +| test.c:580:12:588:26 | ... + ... | 3.0379516094938436E59 | +| test.c:580:12:589:41 | ... > ... | 1.0 | +| test.c:580:12:599:45 | ... ? ... : ... | 1.715093535659983E85 | +| test.c:580:16:580:29 | (...) | 5.797603059E9 | +| test.c:580:17:580:18 | ip | 5.797603059E9 | +| test.c:580:17:580:23 | ... * ... | 5.797603059E9 | +| test.c:580:17:580:28 | ... + ... | 5.797603059E9 | +| test.c:580:22:580:23 | 14 | 1.0 | +| test.c:580:22:580:23 | (unsigned int)... | 1.0 | +| test.c:580:27:580:28 | 32 | 1.0 | +| test.c:580:27:580:28 | (unsigned int)... | 1.0 | +| test.c:581:13:581:30 | (...) | 5.797603059E9 | +| test.c:581:14:581:14 | 2 | 1.0 | +| test.c:581:14:581:14 | (unsigned int)... | 1.0 | +| test.c:581:14:581:19 | ... * ... | 5.797603059E9 | +| test.c:581:14:581:24 | ... * ... | 5.797603059E9 | +| test.c:581:14:581:29 | ... + ... | 5.797603059E9 | +| test.c:581:18:581:19 | ip | 5.797603059E9 | +| test.c:581:23:581:24 | 14 | 1.0 | +| test.c:581:23:581:24 | (unsigned int)... | 1.0 | +| test.c:581:28:581:29 | 32 | 1.0 | +| test.c:581:28:581:29 | (unsigned int)... | 1.0 | +| test.c:582:13:582:13 | 2 | 1.0 | +| test.c:582:13:582:13 | (unsigned int)... | 1.0 | +| test.c:582:13:582:30 | ... * ... | 5.797603059E9 | +| test.c:582:17:582:30 | (...) | 5.797603059E9 | +| test.c:582:18:582:19 | ip | 5.797603059E9 | +| test.c:582:18:582:24 | ... * ... | 5.797603059E9 | +| test.c:582:18:582:29 | ... + ... | 5.797603059E9 | +| test.c:582:23:582:24 | 14 | 1.0 | +| test.c:582:23:582:24 | (unsigned int)... | 1.0 | +| test.c:582:28:582:29 | 64 | 1.0 | +| test.c:582:28:582:29 | (unsigned int)... | 1.0 | +| test.c:583:13:588:26 | (...) | 1.558961605756818E30 | +| test.c:583:14:583:25 | (...) | 5.797603059E9 | +| test.c:583:14:583:30 | ... * ... | 5.797603059E9 | +| test.c:583:14:584:63 | ... > ... | 1.0 | +| test.c:583:14:588:25 | ... ? ... : ... | 1.558961605756818E30 | +| test.c:583:15:583:15 | 2 | 1.0 | +| test.c:583:15:583:15 | (unsigned int)... | 1.0 | +| test.c:583:15:583:20 | ... * ... | 5.797603059E9 | +| test.c:583:15:583:24 | ... + ... | 5.797603059E9 | +| test.c:583:19:583:20 | ip | 5.797603059E9 | +| test.c:583:24:583:24 | 1 | 1.0 | +| test.c:583:24:583:24 | (unsigned int)... | 1.0 | +| test.c:583:29:583:30 | 14 | 1.0 | +| test.c:583:29:583:30 | (unsigned int)... | 1.0 | +| test.c:584:13:584:63 | (...) | 3.361220122972616E19 | +| test.c:584:14:584:15 | 14 | 1.0 | +| test.c:584:14:584:15 | (unsigned int)... | 1.0 | +| test.c:584:14:584:26 | ... * ... | 5.797603059E9 | +| test.c:584:14:584:36 | ... > ... | 1.0 | +| test.c:584:14:584:62 | ... ? ... : ... | 3.361220122972616E19 | +| test.c:584:19:584:26 | (...) | 5.797603059E9 | +| test.c:584:20:584:20 | 2 | 1.0 | +| test.c:584:20:584:20 | (unsigned int)... | 1.0 | +| test.c:584:20:584:25 | ... * ... | 5.797603059E9 | +| test.c:584:24:584:25 | ip | 5.797603059E9 | +| test.c:584:30:584:31 | 17 | 1.0 | +| test.c:584:30:584:31 | (unsigned int)... | 1.0 | +| test.c:584:30:584:36 | ... * ... | 5.797603059E9 | +| test.c:584:35:584:36 | ip | 5.797603059E9 | +| test.c:584:40:584:41 | 17 | 1.0 | +| test.c:584:40:584:41 | (unsigned int)... | 1.0 | +| test.c:584:40:584:52 | ... * ... | 5.797603059E9 | +| test.c:584:45:584:52 | (...) | 5.797603059E9 | +| test.c:584:46:584:46 | 2 | 1.0 | +| test.c:584:46:584:46 | (unsigned int)... | 1.0 | +| test.c:584:46:584:51 | ... * ... | 5.797603059E9 | +| test.c:584:50:584:51 | ip | 5.797603059E9 | +| test.c:584:56:584:57 | 17 | 1.0 | +| test.c:584:56:584:57 | (unsigned int)... | 1.0 | +| test.c:584:56:584:62 | ... * ... | 5.797603059E9 | +| test.c:584:61:584:62 | ip | 5.797603059E9 | +| test.c:585:17:585:28 | (...) | 1.1595206119E10 | +| test.c:585:17:585:33 | ... * ... | 1.1595206119E10 | +| test.c:585:18:585:18 | 2 | 1.0 | +| test.c:585:18:585:18 | (unsigned int)... | 1.0 | +| test.c:585:18:585:23 | ... * ... | 1.1595206119E10 | +| test.c:585:18:585:27 | ... + ... | 1.1595206119E10 | +| test.c:585:22:585:23 | ip | 1.1595206119E10 | +| test.c:585:27:585:27 | 1 | 1.0 | +| test.c:585:27:585:27 | (unsigned int)... | 1.0 | +| test.c:585:32:585:33 | 14 | 1.0 | +| test.c:585:32:585:33 | (unsigned int)... | 1.0 | +| test.c:586:17:586:18 | 14 | 1.0 | +| test.c:586:17:586:18 | (unsigned int)... | 1.0 | +| test.c:586:17:586:29 | ... * ... | 1.1595206119E10 | +| test.c:586:17:586:39 | ... > ... | 1.0 | +| test.c:586:17:588:25 | ... ? ... : ... | 1.3444880494209504E20 | +| test.c:586:22:586:29 | (...) | 1.1595206119E10 | +| test.c:586:23:586:23 | 2 | 1.0 | +| test.c:586:23:586:23 | (unsigned int)... | 1.0 | +| test.c:586:23:586:28 | ... * ... | 1.1595206119E10 | +| test.c:586:27:586:28 | ip | 1.1595206119E10 | +| test.c:586:33:586:34 | 17 | 1.0 | +| test.c:586:33:586:34 | (unsigned int)... | 1.0 | +| test.c:586:33:586:39 | ... * ... | 1.1595206119E10 | +| test.c:586:38:586:39 | ip | 1.1595206119E10 | +| test.c:587:19:587:20 | 14 | 1.0 | +| test.c:587:19:587:20 | (unsigned int)... | 1.0 | +| test.c:587:19:587:31 | ... * ... | 1.1595206119E10 | +| test.c:587:24:587:31 | (...) | 1.1595206119E10 | +| test.c:587:25:587:25 | 2 | 1.0 | +| test.c:587:25:587:25 | (unsigned int)... | 1.0 | +| test.c:587:25:587:30 | ... * ... | 1.1595206119E10 | +| test.c:587:29:587:30 | ip | 1.1595206119E10 | +| test.c:588:19:588:20 | 14 | 1.0 | +| test.c:588:19:588:20 | (unsigned int)... | 1.0 | +| test.c:588:19:588:25 | ... * ... | 1.1595206119E10 | +| test.c:588:24:588:25 | ip | 1.1595206119E10 | +| test.c:589:11:589:11 | 2 | 1.0 | +| test.c:589:11:589:11 | (unsigned int)... | 1.0 | +| test.c:589:11:589:16 | ... * ... | 3.4785618357E10 | +| test.c:589:11:589:21 | ... * ... | 3.4785618357E10 | +| test.c:589:11:589:41 | ... + ... | 1.2100392444788552E21 | +| test.c:589:15:589:16 | ip | 3.4785618357E10 | +| test.c:589:20:589:21 | 14 | 1.0 | +| test.c:589:20:589:21 | (unsigned int)... | 1.0 | +| test.c:589:25:589:36 | (...) | 3.4785618357E10 | +| test.c:589:25:589:41 | ... * ... | 3.4785618357E10 | +| test.c:589:26:589:26 | 2 | 1.0 | +| test.c:589:26:589:26 | (unsigned int)... | 1.0 | +| test.c:589:26:589:31 | ... * ... | 3.4785618357E10 | +| test.c:589:26:589:35 | ... + ... | 3.4785618357E10 | +| test.c:589:30:589:31 | ip | 3.4785618357E10 | +| test.c:589:35:589:35 | 1 | 1.0 | +| test.c:589:35:589:35 | (unsigned int)... | 1.0 | +| test.c:589:40:589:41 | 17 | 1.0 | +| test.c:589:40:589:41 | (unsigned int)... | 1.0 | +| test.c:590:15:590:15 | 4 | 1.0 | +| test.c:590:15:590:15 | (unsigned int)... | 1.0 | +| test.c:590:15:590:32 | ... * ... | 3.4785618357E10 | +| test.c:590:15:591:32 | ... + ... | 1.2100392444788552E21 | +| test.c:590:15:592:32 | ... + ... | 4.209196335543408E31 | +| test.c:590:15:598:28 | ... + ... | 1.417386703353284E64 | +| test.c:590:19:590:32 | (...) | 3.4785618357E10 | +| test.c:590:20:590:21 | ip | 3.4785618357E10 | +| test.c:590:20:590:26 | ... * ... | 3.4785618357E10 | +| test.c:590:20:590:31 | ... + ... | 3.4785618357E10 | +| test.c:590:25:590:26 | 14 | 1.0 | +| test.c:590:25:590:26 | (unsigned int)... | 1.0 | +| test.c:590:30:590:31 | 32 | 1.0 | +| test.c:590:30:590:31 | (unsigned int)... | 1.0 | +| test.c:591:15:591:32 | (...) | 3.4785618357E10 | +| test.c:591:16:591:16 | 2 | 1.0 | +| test.c:591:16:591:16 | (unsigned int)... | 1.0 | +| test.c:591:16:591:21 | ... * ... | 3.4785618357E10 | +| test.c:591:16:591:26 | ... * ... | 3.4785618357E10 | +| test.c:591:16:591:31 | ... + ... | 3.4785618357E10 | +| test.c:591:20:591:21 | ip | 3.4785618357E10 | +| test.c:591:25:591:26 | 14 | 1.0 | +| test.c:591:25:591:26 | (unsigned int)... | 1.0 | +| test.c:591:30:591:31 | 32 | 1.0 | +| test.c:591:30:591:31 | (unsigned int)... | 1.0 | +| test.c:592:15:592:15 | 2 | 1.0 | +| test.c:592:15:592:15 | (unsigned int)... | 1.0 | +| test.c:592:15:592:32 | ... * ... | 3.4785618357E10 | +| test.c:592:19:592:32 | (...) | 3.4785618357E10 | +| test.c:592:20:592:21 | ip | 3.4785618357E10 | +| test.c:592:20:592:26 | ... * ... | 3.4785618357E10 | +| test.c:592:20:592:31 | ... + ... | 3.4785618357E10 | +| test.c:592:25:592:26 | 14 | 1.0 | +| test.c:592:25:592:26 | (unsigned int)... | 1.0 | +| test.c:592:30:592:31 | 64 | 1.0 | +| test.c:592:30:592:31 | (unsigned int)... | 1.0 | +| test.c:593:15:598:28 | (...) | 3.367357068579931E32 | +| test.c:593:16:593:27 | (...) | 3.4785618357E10 | +| test.c:593:16:593:32 | ... * ... | 3.4785618357E10 | +| test.c:593:16:594:65 | ... > ... | 1.0 | +| test.c:593:16:598:27 | ... ? ... : ... | 3.367357068579931E32 | +| test.c:593:17:593:17 | 2 | 1.0 | +| test.c:593:17:593:17 | (unsigned int)... | 1.0 | +| test.c:593:17:593:22 | ... * ... | 3.4785618357E10 | +| test.c:593:17:593:26 | ... + ... | 3.4785618357E10 | +| test.c:593:21:593:22 | ip | 3.4785618357E10 | +| test.c:593:26:593:26 | 1 | 1.0 | +| test.c:593:26:593:26 | (unsigned int)... | 1.0 | +| test.c:593:31:593:32 | 14 | 1.0 | +| test.c:593:31:593:32 | (unsigned int)... | 1.0 | +| test.c:594:15:594:65 | (...) | 1.2100392444788552E21 | +| test.c:594:16:594:17 | 14 | 1.0 | +| test.c:594:16:594:17 | (unsigned int)... | 1.0 | +| test.c:594:16:594:28 | ... * ... | 3.4785618357E10 | +| test.c:594:16:594:38 | ... > ... | 1.0 | +| test.c:594:16:594:64 | ... ? ... : ... | 1.2100392444788552E21 | +| test.c:594:21:594:28 | (...) | 3.4785618357E10 | +| test.c:594:22:594:22 | 2 | 1.0 | +| test.c:594:22:594:22 | (unsigned int)... | 1.0 | +| test.c:594:22:594:27 | ... * ... | 3.4785618357E10 | +| test.c:594:26:594:27 | ip | 3.4785618357E10 | +| test.c:594:32:594:33 | 17 | 1.0 | +| test.c:594:32:594:33 | (unsigned int)... | 1.0 | +| test.c:594:32:594:38 | ... * ... | 3.4785618357E10 | +| test.c:594:37:594:38 | ip | 3.4785618357E10 | +| test.c:594:42:594:43 | 17 | 1.0 | +| test.c:594:42:594:43 | (unsigned int)... | 1.0 | +| test.c:594:42:594:54 | ... * ... | 3.4785618357E10 | +| test.c:594:47:594:54 | (...) | 3.4785618357E10 | +| test.c:594:48:594:48 | 2 | 1.0 | +| test.c:594:48:594:48 | (unsigned int)... | 1.0 | +| test.c:594:48:594:53 | ... * ... | 3.4785618357E10 | +| test.c:594:52:594:53 | ip | 3.4785618357E10 | +| test.c:594:58:594:59 | 17 | 1.0 | +| test.c:594:58:594:59 | (unsigned int)... | 1.0 | +| test.c:594:58:594:64 | ... * ... | 3.4785618357E10 | +| test.c:594:63:594:64 | ip | 3.4785618357E10 | +| test.c:595:19:595:30 | (...) | 6.9571236715E10 | +| test.c:595:19:595:35 | ... * ... | 6.9571236715E10 | +| test.c:595:20:595:20 | 2 | 1.0 | +| test.c:595:20:595:20 | (unsigned int)... | 1.0 | +| test.c:595:20:595:25 | ... * ... | 6.9571236715E10 | +| test.c:595:20:595:29 | ... + ... | 6.9571236715E10 | +| test.c:595:24:595:25 | ip | 6.9571236715E10 | +| test.c:595:29:595:29 | 1 | 1.0 | +| test.c:595:29:595:29 | (unsigned int)... | 1.0 | +| test.c:595:34:595:35 | 14 | 1.0 | +| test.c:595:34:595:35 | (unsigned int)... | 1.0 | +| test.c:596:19:596:20 | 14 | 1.0 | +| test.c:596:19:596:20 | (unsigned int)... | 1.0 | +| test.c:596:19:596:31 | ... * ... | 6.9571236715E10 | +| test.c:596:19:596:41 | ... > ... | 1.0 | +| test.c:596:19:598:27 | ... ? ... : ... | 4.840156978054564E21 | +| test.c:596:24:596:31 | (...) | 6.9571236715E10 | +| test.c:596:25:596:25 | 2 | 1.0 | +| test.c:596:25:596:25 | (unsigned int)... | 1.0 | +| test.c:596:25:596:30 | ... * ... | 6.9571236715E10 | +| test.c:596:29:596:30 | ip | 6.9571236715E10 | +| test.c:596:35:596:36 | 17 | 1.0 | +| test.c:596:35:596:36 | (unsigned int)... | 1.0 | +| test.c:596:35:596:41 | ... * ... | 6.9571236715E10 | +| test.c:596:40:596:41 | ip | 6.9571236715E10 | +| test.c:597:21:597:22 | 14 | 1.0 | +| test.c:597:21:597:22 | (unsigned int)... | 1.0 | +| test.c:597:21:597:33 | ... * ... | 6.9571236715E10 | +| test.c:597:26:597:33 | (...) | 6.9571236715E10 | +| test.c:597:27:597:27 | 2 | 1.0 | +| test.c:597:27:597:27 | (unsigned int)... | 1.0 | +| test.c:597:27:597:32 | ... * ... | 6.9571236715E10 | +| test.c:597:31:597:32 | ip | 6.9571236715E10 | +| test.c:598:21:598:22 | 14 | 1.0 | +| test.c:598:21:598:22 | (unsigned int)... | 1.0 | +| test.c:598:21:598:27 | ... * ... | 6.9571236715E10 | +| test.c:598:26:598:27 | ip | 6.9571236715E10 | +| test.c:599:15:599:15 | 2 | 1.0 | +| test.c:599:15:599:15 | (unsigned int)... | 1.0 | +| test.c:599:15:599:20 | ... * ... | 3.4785618357E10 | +| test.c:599:15:599:25 | ... * ... | 3.4785618357E10 | +| test.c:599:15:599:45 | ... + ... | 1.2100392444788552E21 | +| test.c:599:19:599:20 | ip | 3.4785618357E10 | +| test.c:599:24:599:25 | 14 | 1.0 | +| test.c:599:24:599:25 | (unsigned int)... | 1.0 | +| test.c:599:29:599:40 | (...) | 3.4785618357E10 | +| test.c:599:29:599:45 | ... * ... | 3.4785618357E10 | +| test.c:599:30:599:30 | 2 | 1.0 | +| test.c:599:30:599:30 | (unsigned int)... | 1.0 | +| test.c:599:30:599:35 | ... * ... | 3.4785618357E10 | +| test.c:599:30:599:39 | ... + ... | 3.4785618357E10 | +| test.c:599:34:599:35 | ip | 3.4785618357E10 | +| test.c:599:39:599:39 | 1 | 1.0 | +| test.c:599:39:599:39 | (unsigned int)... | 1.0 | +| test.c:599:44:599:45 | 17 | 1.0 | +| test.c:599:44:599:45 | (unsigned int)... | 1.0 | +| test.c:600:11:600:11 | 4 | 1.0 | +| test.c:600:11:600:11 | (unsigned int)... | 1.0 | +| test.c:600:11:600:28 | ... * ... | 5.797603059E9 | +| test.c:600:11:601:32 | ... + ... | 3.361220122972616E19 | +| test.c:600:11:602:32 | ... + ... | 1.9487020066918396E29 | +| test.c:600:11:608:28 | ... + ... | 3.0379516094938436E59 | +| test.c:600:11:609:63 | ... > ... | 1.0 | +| test.c:600:11:621:27 | ... ? ... : ... | 4.390639451194891E87 | +| test.c:600:15:600:28 | (...) | 5.797603059E9 | +| test.c:600:16:600:17 | ip | 5.797603059E9 | +| test.c:600:16:600:22 | ... * ... | 5.797603059E9 | +| test.c:600:16:600:27 | ... + ... | 5.797603059E9 | +| test.c:600:21:600:22 | 14 | 1.0 | +| test.c:600:21:600:22 | (unsigned int)... | 1.0 | +| test.c:600:26:600:27 | 32 | 1.0 | +| test.c:600:26:600:27 | (unsigned int)... | 1.0 | +| test.c:601:15:601:32 | (...) | 5.797603059E9 | +| test.c:601:16:601:16 | 2 | 1.0 | +| test.c:601:16:601:16 | (unsigned int)... | 1.0 | +| test.c:601:16:601:21 | ... * ... | 5.797603059E9 | +| test.c:601:16:601:26 | ... * ... | 5.797603059E9 | +| test.c:601:16:601:31 | ... + ... | 5.797603059E9 | +| test.c:601:20:601:21 | ip | 5.797603059E9 | +| test.c:601:25:601:26 | 14 | 1.0 | +| test.c:601:25:601:26 | (unsigned int)... | 1.0 | +| test.c:601:30:601:31 | 32 | 1.0 | +| test.c:601:30:601:31 | (unsigned int)... | 1.0 | +| test.c:602:15:602:15 | 2 | 1.0 | +| test.c:602:15:602:15 | (unsigned int)... | 1.0 | +| test.c:602:15:602:32 | ... * ... | 5.797603059E9 | +| test.c:602:19:602:32 | (...) | 5.797603059E9 | +| test.c:602:20:602:21 | ip | 5.797603059E9 | +| test.c:602:20:602:26 | ... * ... | 5.797603059E9 | +| test.c:602:20:602:31 | ... + ... | 5.797603059E9 | +| test.c:602:25:602:26 | 14 | 1.0 | +| test.c:602:25:602:26 | (unsigned int)... | 1.0 | +| test.c:602:30:602:31 | 64 | 1.0 | +| test.c:602:30:602:31 | (unsigned int)... | 1.0 | +| test.c:603:15:608:28 | (...) | 1.558961605756818E30 | +| test.c:603:16:603:27 | (...) | 5.797603059E9 | +| test.c:603:16:603:32 | ... * ... | 5.797603059E9 | +| test.c:603:16:604:65 | ... > ... | 1.0 | +| test.c:603:16:608:27 | ... ? ... : ... | 1.558961605756818E30 | +| test.c:603:17:603:17 | 2 | 1.0 | +| test.c:603:17:603:17 | (unsigned int)... | 1.0 | +| test.c:603:17:603:22 | ... * ... | 5.797603059E9 | +| test.c:603:17:603:26 | ... + ... | 5.797603059E9 | +| test.c:603:21:603:22 | ip | 5.797603059E9 | +| test.c:603:26:603:26 | 1 | 1.0 | +| test.c:603:26:603:26 | (unsigned int)... | 1.0 | +| test.c:603:31:603:32 | 14 | 1.0 | +| test.c:603:31:603:32 | (unsigned int)... | 1.0 | +| test.c:604:15:604:65 | (...) | 3.361220122972616E19 | +| test.c:604:16:604:17 | 14 | 1.0 | +| test.c:604:16:604:17 | (unsigned int)... | 1.0 | +| test.c:604:16:604:28 | ... * ... | 5.797603059E9 | +| test.c:604:16:604:38 | ... > ... | 1.0 | +| test.c:604:16:604:64 | ... ? ... : ... | 3.361220122972616E19 | +| test.c:604:21:604:28 | (...) | 5.797603059E9 | +| test.c:604:22:604:22 | 2 | 1.0 | +| test.c:604:22:604:22 | (unsigned int)... | 1.0 | +| test.c:604:22:604:27 | ... * ... | 5.797603059E9 | +| test.c:604:26:604:27 | ip | 5.797603059E9 | +| test.c:604:32:604:33 | 17 | 1.0 | +| test.c:604:32:604:33 | (unsigned int)... | 1.0 | +| test.c:604:32:604:38 | ... * ... | 5.797603059E9 | +| test.c:604:37:604:38 | ip | 5.797603059E9 | +| test.c:604:42:604:43 | 17 | 1.0 | +| test.c:604:42:604:43 | (unsigned int)... | 1.0 | +| test.c:604:42:604:54 | ... * ... | 5.797603059E9 | +| test.c:604:47:604:54 | (...) | 5.797603059E9 | +| test.c:604:48:604:48 | 2 | 1.0 | +| test.c:604:48:604:48 | (unsigned int)... | 1.0 | +| test.c:604:48:604:53 | ... * ... | 5.797603059E9 | +| test.c:604:52:604:53 | ip | 5.797603059E9 | +| test.c:604:58:604:59 | 17 | 1.0 | +| test.c:604:58:604:59 | (unsigned int)... | 1.0 | +| test.c:604:58:604:64 | ... * ... | 5.797603059E9 | +| test.c:604:63:604:64 | ip | 5.797603059E9 | +| test.c:605:19:605:30 | (...) | 1.1595206119E10 | +| test.c:605:19:605:35 | ... * ... | 1.1595206119E10 | +| test.c:605:20:605:20 | 2 | 1.0 | +| test.c:605:20:605:20 | (unsigned int)... | 1.0 | +| test.c:605:20:605:25 | ... * ... | 1.1595206119E10 | +| test.c:605:20:605:29 | ... + ... | 1.1595206119E10 | +| test.c:605:24:605:25 | ip | 1.1595206119E10 | +| test.c:605:29:605:29 | 1 | 1.0 | +| test.c:605:29:605:29 | (unsigned int)... | 1.0 | +| test.c:605:34:605:35 | 14 | 1.0 | +| test.c:605:34:605:35 | (unsigned int)... | 1.0 | +| test.c:606:19:606:20 | 14 | 1.0 | +| test.c:606:19:606:20 | (unsigned int)... | 1.0 | +| test.c:606:19:606:31 | ... * ... | 1.1595206119E10 | +| test.c:606:19:606:41 | ... > ... | 1.0 | +| test.c:606:19:608:27 | ... ? ... : ... | 1.3444880494209504E20 | +| test.c:606:24:606:31 | (...) | 1.1595206119E10 | +| test.c:606:25:606:25 | 2 | 1.0 | +| test.c:606:25:606:25 | (unsigned int)... | 1.0 | +| test.c:606:25:606:30 | ... * ... | 1.1595206119E10 | +| test.c:606:29:606:30 | ip | 1.1595206119E10 | +| test.c:606:35:606:36 | 17 | 1.0 | +| test.c:606:35:606:36 | (unsigned int)... | 1.0 | +| test.c:606:35:606:41 | ... * ... | 1.1595206119E10 | +| test.c:606:40:606:41 | ip | 1.1595206119E10 | +| test.c:607:21:607:22 | 14 | 1.0 | +| test.c:607:21:607:22 | (unsigned int)... | 1.0 | +| test.c:607:21:607:33 | ... * ... | 1.1595206119E10 | +| test.c:607:26:607:33 | (...) | 1.1595206119E10 | +| test.c:607:27:607:27 | 2 | 1.0 | +| test.c:607:27:607:27 | (unsigned int)... | 1.0 | +| test.c:607:27:607:32 | ... * ... | 1.1595206119E10 | +| test.c:607:31:607:32 | ip | 1.1595206119E10 | +| test.c:608:21:608:22 | 14 | 1.0 | +| test.c:608:21:608:22 | (unsigned int)... | 1.0 | +| test.c:608:21:608:27 | ... * ... | 1.1595206119E10 | +| test.c:608:26:608:27 | ip | 1.1595206119E10 | +| test.c:609:13:609:63 | (...) | 1.2100392444788552E21 | +| test.c:609:14:609:15 | 14 | 1.0 | +| test.c:609:14:609:15 | (unsigned int)... | 1.0 | +| test.c:609:14:609:20 | ... * ... | 3.4785618357E10 | +| test.c:609:14:609:36 | ... > ... | 1.0 | +| test.c:609:14:609:62 | ... ? ... : ... | 1.2100392444788552E21 | +| test.c:609:19:609:20 | ip | 3.4785618357E10 | +| test.c:609:24:609:31 | (...) | 3.4785618357E10 | +| test.c:609:24:609:36 | ... * ... | 3.4785618357E10 | +| test.c:609:25:609:26 | ip | 3.4785618357E10 | +| test.c:609:25:609:30 | ... + ... | 3.4785618357E10 | +| test.c:609:30:609:30 | 1 | 1.0 | +| test.c:609:30:609:30 | (unsigned int)... | 1.0 | +| test.c:609:35:609:36 | 17 | 1.0 | +| test.c:609:35:609:36 | (unsigned int)... | 1.0 | +| test.c:609:40:609:41 | 17 | 1.0 | +| test.c:609:40:609:41 | (unsigned int)... | 1.0 | +| test.c:609:40:609:46 | ... * ... | 3.4785618357E10 | +| test.c:609:45:609:46 | ip | 3.4785618357E10 | +| test.c:609:50:609:57 | (...) | 3.4785618357E10 | +| test.c:609:50:609:62 | ... * ... | 3.4785618357E10 | +| test.c:609:51:609:52 | ip | 3.4785618357E10 | +| test.c:609:51:609:56 | ... + ... | 3.4785618357E10 | +| test.c:609:56:609:56 | 1 | 1.0 | +| test.c:609:56:609:56 | (unsigned int)... | 1.0 | +| test.c:609:61:609:62 | 17 | 1.0 | +| test.c:609:61:609:62 | (unsigned int)... | 1.0 | +| test.c:610:13:610:13 | 4 | 1.0 | +| test.c:610:13:610:13 | (unsigned int)... | 1.0 | +| test.c:610:13:610:30 | ... * ... | 6.9571236714E10 | +| test.c:610:13:611:30 | ... + ... | 4.840156977915421E21 | +| test.c:610:13:612:30 | ... + ... | 3.3673570684347266E32 | +| test.c:610:13:618:26 | ... + ... | 9.071274901265435E65 | +| test.c:610:17:610:30 | (...) | 6.9571236714E10 | +| test.c:610:18:610:19 | ip | 6.9571236714E10 | +| test.c:610:18:610:24 | ... * ... | 6.9571236714E10 | +| test.c:610:18:610:29 | ... + ... | 6.9571236714E10 | +| test.c:610:23:610:24 | 14 | 1.0 | +| test.c:610:23:610:24 | (unsigned int)... | 1.0 | +| test.c:610:28:610:29 | 32 | 1.0 | +| test.c:610:28:610:29 | (unsigned int)... | 1.0 | +| test.c:611:13:611:30 | (...) | 6.9571236714E10 | +| test.c:611:14:611:14 | 2 | 1.0 | +| test.c:611:14:611:14 | (unsigned int)... | 1.0 | +| test.c:611:14:611:19 | ... * ... | 6.9571236714E10 | +| test.c:611:14:611:24 | ... * ... | 6.9571236714E10 | +| test.c:611:14:611:29 | ... + ... | 6.9571236714E10 | +| test.c:611:18:611:19 | ip | 6.9571236714E10 | +| test.c:611:23:611:24 | 14 | 1.0 | +| test.c:611:23:611:24 | (unsigned int)... | 1.0 | +| test.c:611:28:611:29 | 32 | 1.0 | +| test.c:611:28:611:29 | (unsigned int)... | 1.0 | +| test.c:612:13:612:13 | 2 | 1.0 | +| test.c:612:13:612:13 | (unsigned int)... | 1.0 | +| test.c:612:13:612:30 | ... * ... | 6.9571236714E10 | +| test.c:612:17:612:30 | (...) | 6.9571236714E10 | +| test.c:612:18:612:19 | ip | 6.9571236714E10 | +| test.c:612:18:612:24 | ... * ... | 6.9571236714E10 | +| test.c:612:18:612:29 | ... + ... | 6.9571236714E10 | +| test.c:612:23:612:24 | 14 | 1.0 | +| test.c:612:23:612:24 | (unsigned int)... | 1.0 | +| test.c:612:28:612:29 | 64 | 1.0 | +| test.c:612:28:612:29 | (unsigned int)... | 1.0 | +| test.c:613:13:618:26 | (...) | 2.693885654805863E33 | +| test.c:613:14:613:25 | (...) | 6.9571236714E10 | +| test.c:613:14:613:30 | ... * ... | 6.9571236714E10 | +| test.c:613:14:614:63 | ... > ... | 1.0 | +| test.c:613:14:618:25 | ... ? ... : ... | 2.693885654805863E33 | +| test.c:613:15:613:15 | 2 | 1.0 | +| test.c:613:15:613:15 | (unsigned int)... | 1.0 | +| test.c:613:15:613:20 | ... * ... | 6.9571236714E10 | +| test.c:613:15:613:24 | ... + ... | 6.9571236714E10 | +| test.c:613:19:613:20 | ip | 6.9571236714E10 | +| test.c:613:24:613:24 | 1 | 1.0 | +| test.c:613:24:613:24 | (unsigned int)... | 1.0 | +| test.c:613:29:613:30 | 14 | 1.0 | +| test.c:613:29:613:30 | (unsigned int)... | 1.0 | +| test.c:614:13:614:63 | (...) | 4.840156977915421E21 | +| test.c:614:14:614:15 | 14 | 1.0 | +| test.c:614:14:614:15 | (unsigned int)... | 1.0 | +| test.c:614:14:614:26 | ... * ... | 6.9571236714E10 | +| test.c:614:14:614:36 | ... > ... | 1.0 | +| test.c:614:14:614:62 | ... ? ... : ... | 4.840156977915421E21 | +| test.c:614:19:614:26 | (...) | 6.9571236714E10 | +| test.c:614:20:614:20 | 2 | 1.0 | +| test.c:614:20:614:20 | (unsigned int)... | 1.0 | +| test.c:614:20:614:25 | ... * ... | 6.9571236714E10 | +| test.c:614:24:614:25 | ip | 6.9571236714E10 | +| test.c:614:30:614:31 | 17 | 1.0 | +| test.c:614:30:614:31 | (unsigned int)... | 1.0 | +| test.c:614:30:614:36 | ... * ... | 6.9571236714E10 | +| test.c:614:35:614:36 | ip | 6.9571236714E10 | +| test.c:614:40:614:41 | 17 | 1.0 | +| test.c:614:40:614:41 | (unsigned int)... | 1.0 | +| test.c:614:40:614:52 | ... * ... | 6.9571236714E10 | +| test.c:614:45:614:52 | (...) | 6.9571236714E10 | +| test.c:614:46:614:46 | 2 | 1.0 | +| test.c:614:46:614:46 | (unsigned int)... | 1.0 | +| test.c:614:46:614:51 | ... * ... | 6.9571236714E10 | +| test.c:614:50:614:51 | ip | 6.9571236714E10 | +| test.c:614:56:614:57 | 17 | 1.0 | +| test.c:614:56:614:57 | (unsigned int)... | 1.0 | +| test.c:614:56:614:62 | ... * ... | 6.9571236714E10 | +| test.c:614:61:614:62 | ip | 6.9571236714E10 | +| test.c:615:17:615:28 | (...) | 1.39142473429E11 | +| test.c:615:17:615:33 | ... * ... | 1.39142473429E11 | +| test.c:615:18:615:18 | 2 | 1.0 | +| test.c:615:18:615:18 | (unsigned int)... | 1.0 | +| test.c:615:18:615:23 | ... * ... | 1.39142473429E11 | +| test.c:615:18:615:27 | ... + ... | 1.39142473429E11 | +| test.c:615:22:615:23 | ip | 1.39142473429E11 | +| test.c:615:27:615:27 | 1 | 1.0 | +| test.c:615:27:615:27 | (unsigned int)... | 1.0 | +| test.c:615:32:615:33 | 14 | 1.0 | +| test.c:615:32:615:33 | (unsigned int)... | 1.0 | +| test.c:616:17:616:18 | 14 | 1.0 | +| test.c:616:17:616:18 | (unsigned int)... | 1.0 | +| test.c:616:17:616:29 | ... * ... | 1.39142473429E11 | +| test.c:616:17:616:39 | ... > ... | 1.0 | +| test.c:616:17:618:25 | ... ? ... : ... | 1.936062791193997E22 | +| test.c:616:22:616:29 | (...) | 1.39142473429E11 | +| test.c:616:23:616:23 | 2 | 1.0 | +| test.c:616:23:616:23 | (unsigned int)... | 1.0 | +| test.c:616:23:616:28 | ... * ... | 1.39142473429E11 | +| test.c:616:27:616:28 | ip | 1.39142473429E11 | +| test.c:616:33:616:34 | 17 | 1.0 | +| test.c:616:33:616:34 | (unsigned int)... | 1.0 | +| test.c:616:33:616:39 | ... * ... | 1.39142473429E11 | +| test.c:616:38:616:39 | ip | 1.39142473429E11 | +| test.c:617:19:617:20 | 14 | 1.0 | +| test.c:617:19:617:20 | (unsigned int)... | 1.0 | +| test.c:617:19:617:31 | ... * ... | 1.39142473429E11 | +| test.c:617:24:617:31 | (...) | 1.39142473429E11 | +| test.c:617:25:617:25 | 2 | 1.0 | +| test.c:617:25:617:25 | (unsigned int)... | 1.0 | +| test.c:617:25:617:30 | ... * ... | 1.39142473429E11 | +| test.c:617:29:617:30 | ip | 1.39142473429E11 | +| test.c:618:19:618:20 | 14 | 1.0 | +| test.c:618:19:618:20 | (unsigned int)... | 1.0 | +| test.c:618:19:618:25 | ... * ... | 1.39142473429E11 | +| test.c:618:24:618:25 | ip | 1.39142473429E11 | +| test.c:619:13:619:14 | 14 | 1.0 | +| test.c:619:13:619:14 | (unsigned int)... | 1.0 | +| test.c:619:13:619:19 | ... * ... | 6.9571236714E10 | +| test.c:619:13:619:35 | ... > ... | 1.0 | +| test.c:619:13:621:27 | ... ? ... : ... | 4.840156977915421E21 | +| test.c:619:18:619:19 | ip | 6.9571236714E10 | +| test.c:619:23:619:30 | (...) | 6.9571236714E10 | +| test.c:619:23:619:35 | ... * ... | 6.9571236714E10 | +| test.c:619:24:619:25 | ip | 6.9571236714E10 | +| test.c:619:24:619:29 | ... + ... | 6.9571236714E10 | +| test.c:619:29:619:29 | 1 | 1.0 | +| test.c:619:29:619:29 | (unsigned int)... | 1.0 | +| test.c:619:34:619:35 | 17 | 1.0 | +| test.c:619:34:619:35 | (unsigned int)... | 1.0 | +| test.c:620:15:620:16 | 14 | 1.0 | +| test.c:620:15:620:16 | (unsigned int)... | 1.0 | +| test.c:620:15:620:21 | ... * ... | 6.9571236714E10 | +| test.c:620:20:620:21 | ip | 6.9571236714E10 | +| test.c:621:15:621:22 | (...) | 6.9571236714E10 | +| test.c:621:15:621:27 | ... * ... | 6.9571236714E10 | +| test.c:621:16:621:17 | ip | 6.9571236714E10 | +| test.c:621:16:621:21 | ... + ... | 6.9571236714E10 | +| test.c:621:21:621:21 | 1 | 1.0 | +| test.c:621:21:621:21 | (unsigned int)... | 1.0 | +| test.c:621:26:621:27 | 14 | 1.0 | +| test.c:621:26:621:27 | (unsigned int)... | 1.0 | +| test.c:622:10:622:23 | special_number | 1.297918419127476E201 | +| test.c:629:10:629:11 | 0 | 1.0 | +| test.c:630:7:630:8 | c1 | 1.0 | +| test.c:630:13:630:13 | x | 1.0 | +| test.c:630:13:630:23 | ... += ... | 1.0 | +| test.c:630:18:630:23 | 748596 | 1.0 | +| test.c:631:7:631:8 | c2 | 1.0 | +| test.c:631:13:631:13 | x | 2.0 | +| test.c:631:13:631:25 | ... += ... | 2.0 | +| test.c:631:18:631:25 | 84652395 | 1.0 | +| test.c:632:7:632:8 | c3 | 1.0 | +| test.c:632:13:632:13 | x | 4.0 | +| test.c:632:13:632:24 | ... += ... | 4.0 | +| test.c:632:18:632:24 | 3675895 | 1.0 | +| test.c:633:7:633:8 | c4 | 1.0 | +| test.c:633:13:633:13 | x | 8.0 | +| test.c:633:13:633:22 | ... += ... | 8.0 | +| test.c:633:18:633:22 | 98634 | 1.0 | +| test.c:634:7:634:8 | c5 | 1.0 | +| test.c:634:13:634:13 | x | 16.0 | +| test.c:634:13:634:24 | ... += ... | 16.0 | +| test.c:634:18:634:24 | 7834985 | 1.0 | +| test.c:635:7:635:8 | c1 | 2.0 | +| test.c:635:7:635:14 | ... && ... | 1.0 | +| test.c:635:13:635:14 | c2 | 2.0 | +| test.c:635:19:635:19 | x | 32.0 | +| test.c:635:19:635:32 | ... += ... | 32.0 | +| test.c:635:24:635:32 | 938457398 | 1.0 | +| test.c:636:7:636:8 | c1 | 3.0 | +| test.c:636:7:636:14 | ... && ... | 1.0 | +| test.c:636:13:636:14 | c3 | 2.0 | +| test.c:636:19:636:19 | x | 64.0 | +| test.c:636:19:636:31 | ... += ... | 64.0 | +| test.c:636:24:636:31 | 73895648 | 1.0 | +| test.c:637:7:637:8 | c1 | 4.0 | +| test.c:637:7:637:14 | ... && ... | 1.0 | +| test.c:637:13:637:14 | c4 | 2.0 | +| test.c:637:19:637:19 | x | 128.0 | +| test.c:637:19:637:31 | ... += ... | 128.0 | +| test.c:637:24:637:31 | 12345432 | 1.0 | +| test.c:638:7:638:8 | c1 | 5.0 | +| test.c:638:7:638:14 | ... && ... | 1.0 | +| test.c:638:13:638:14 | c5 | 2.0 | +| test.c:638:19:638:19 | x | 256.0 | +| test.c:638:19:638:28 | ... += ... | 256.0 | +| test.c:638:24:638:28 | 38847 | 1.0 | +| test.c:639:7:639:8 | c2 | 5.0 | +| test.c:639:7:639:14 | ... && ... | 1.0 | +| test.c:639:13:639:14 | c3 | 5.0 | +| test.c:639:19:639:19 | x | 512.0 | +| test.c:639:19:639:26 | ... += ... | 512.0 | +| test.c:639:24:639:26 | 234 | 1.0 | +| test.c:641:11:641:11 | x | 1024.0 | +| test.c:641:11:641:15 | ... + ... | 1048576.0 | +| test.c:641:11:641:19 | ... + ... | 1.073741824E9 | +| test.c:641:11:641:23 | ... + ... | 1.099511627776E12 | +| test.c:641:11:641:27 | ... + ... | 1.125899906842624E15 | +| test.c:641:11:641:31 | ... + ... | 1.152921504606847E18 | +| test.c:641:11:641:35 | ... + ... | 1.1805916207174113E21 | +| test.c:641:11:641:39 | ... + ... | 1.2089258196146292E24 | +| test.c:641:11:641:43 | ... + ... | 1.2379400392853803E27 | +| test.c:641:11:641:47 | ... + ... | 1.2676506002282294E30 | +| test.c:641:11:641:51 | ... + ... | 1.298074214633707E33 | +| test.c:641:11:641:55 | ... + ... | 1.329227995784916E36 | +| test.c:641:15:641:15 | x | 1024.0 | +| test.c:641:19:641:19 | x | 1024.0 | +| test.c:641:23:641:23 | x | 1024.0 | +| test.c:641:27:641:27 | x | 1024.0 | +| test.c:641:31:641:31 | x | 1024.0 | +| test.c:641:35:641:35 | x | 1024.0 | +| test.c:641:39:641:39 | x | 1024.0 | +| test.c:641:43:641:43 | x | 1024.0 | +| test.c:641:47:641:47 | x | 1024.0 | +| test.c:641:51:641:51 | x | 1024.0 | +| test.c:641:55:641:55 | x | 1024.0 | +| test.c:642:10:642:10 | y | 1.329227995784916E36 | +| test.c:647:20:647:20 | x | 1.0 | +| test.c:647:20:647:26 | ... < ... | 1.0 | +| test.c:647:20:647:36 | ... ? ... : ... | 1.0 | +| test.c:647:24:647:26 | 100 | 1.0 | +| test.c:647:24:647:26 | (unsigned int)... | 1.0 | +| test.c:647:30:647:30 | x | 1.0 | +| test.c:647:34:647:36 | 100 | 1.0 | +| test.c:647:34:647:36 | (unsigned int)... | 1.0 | +| test.c:650:3:650:4 | y1 | 1.0 | +| test.c:650:9:650:11 | ++ ... | 1.0 | +| test.c:650:11:650:11 | y | 1.0 | +| test.c:651:3:651:4 | y2 | 1.0 | +| test.c:651:19:651:19 | 3 | 1.0 | +| test.c:651:19:651:19 | (unsigned int)... | 1.0 | +| test.c:660:3:660:3 | i | 1.0 | +| test.c:660:3:660:8 | ... = ... | 1.0 | +| test.c:660:7:660:8 | 10 | 1.0 | +| test.c:661:7:661:7 | i | 1.0 | +| test.c:663:3:663:3 | i | 1.0 | +| test.c:663:3:663:8 | ... = ... | 1.0 | +| test.c:663:7:663:8 | 10 | 1.0 | +| test.c:664:3:664:3 | i | 1.0 | +| test.c:664:3:664:9 | ... += ... | 1.0 | +| test.c:664:8:664:9 | 10 | 1.0 | +| test.c:665:7:665:7 | i | 1.0 | +| test.c:667:3:667:3 | i | 1.0 | +| test.c:667:3:667:8 | ... = ... | 1.0 | +| test.c:667:7:667:8 | 40 | 1.0 | +| test.c:668:3:668:3 | i | 1.0 | +| test.c:668:3:668:9 | ... -= ... | 1.0 | +| test.c:668:8:668:9 | 10 | 1.0 | +| test.c:669:7:669:7 | i | 1.0 | +| test.c:671:3:671:3 | i | 1.0 | +| test.c:671:3:671:12 | ... = ... | 1.0 | +| test.c:671:7:671:7 | j | 1.0 | +| test.c:671:7:671:12 | ... = ... | 1.0 | +| test.c:671:11:671:12 | 40 | 1.0 | +| test.c:672:7:672:7 | i | 1.0 | +| test.c:674:3:674:3 | i | 1.0 | +| test.c:674:3:674:15 | ... = ... | 1.0 | +| test.c:674:7:674:15 | (...) | 1.0 | +| test.c:674:8:674:8 | j | 1.0 | +| test.c:674:8:674:14 | ... += ... | 1.0 | +| test.c:674:13:674:14 | 10 | 1.0 | +| test.c:675:7:675:7 | i | 1.0 | +| test.c:677:3:677:3 | i | 1.0 | +| test.c:677:3:677:20 | ... = ... | 1.0 | +| test.c:677:7:677:8 | 20 | 1.0 | +| test.c:677:7:677:20 | ... + ... | 1.0 | +| test.c:677:12:677:20 | (...) | 1.0 | +| test.c:677:13:677:13 | j | 1.0 | +| test.c:677:13:677:19 | ... -= ... | 1.0 | +| test.c:677:18:677:19 | 10 | 1.0 | +| test.c:678:7:678:7 | i | 1.0 | +| test.c:683:14:683:15 | 0 | 1.0 | +| test.c:685:7:685:7 | 3 | 1.0 | +| test.c:685:7:685:7 | (unsigned int)... | 1.0 | +| test.c:685:7:685:12 | ... <= ... | 1.0 | +| test.c:685:7:685:23 | ... && ... | 1.0 | +| test.c:685:7:685:33 | ... && ... | 1.0 | +| test.c:685:7:685:44 | ... && ... | 1.0 | +| test.c:685:12:685:12 | a | 1.0 | +| test.c:685:17:685:17 | a | 1.0 | +| test.c:685:17:685:23 | ... <= ... | 1.0 | +| test.c:685:22:685:23 | 11 | 1.0 | +| test.c:685:22:685:23 | (unsigned int)... | 1.0 | +| test.c:685:28:685:28 | 5 | 1.0 | +| test.c:685:28:685:28 | (unsigned int)... | 1.0 | +| test.c:685:28:685:33 | ... <= ... | 1.0 | +| test.c:685:33:685:33 | b | 1.0 | +| test.c:685:38:685:38 | b | 1.0 | +| test.c:685:38:685:44 | ... <= ... | 1.0 | +| test.c:685:43:685:44 | 23 | 1.0 | +| test.c:685:43:685:44 | (unsigned int)... | 1.0 | +| test.c:686:13:686:13 | a | 1.0 | +| test.c:686:13:686:15 | (int)... | 1.0 | +| test.c:686:13:686:15 | ... * ... | 1.0 | +| test.c:686:15:686:15 | b | 1.0 | +| test.c:687:5:687:9 | total | 1.0 | +| test.c:687:5:687:14 | ... += ... | 1.0 | +| test.c:687:14:687:14 | r | 1.0 | +| test.c:689:7:689:7 | 3 | 1.0 | +| test.c:689:7:689:7 | (unsigned int)... | 1.0 | +| test.c:689:7:689:12 | ... <= ... | 1.0 | +| test.c:689:7:689:23 | ... && ... | 1.0 | +| test.c:689:7:689:33 | ... && ... | 1.0 | +| test.c:689:7:689:44 | ... && ... | 1.0 | +| test.c:689:12:689:12 | a | 2.0 | +| test.c:689:17:689:17 | a | 2.0 | +| test.c:689:17:689:23 | ... <= ... | 1.0 | +| test.c:689:22:689:23 | 11 | 1.0 | +| test.c:689:22:689:23 | (unsigned int)... | 1.0 | +| test.c:689:28:689:28 | 0 | 1.0 | +| test.c:689:28:689:28 | (unsigned int)... | 1.0 | +| test.c:689:28:689:33 | ... <= ... | 1.0 | +| test.c:689:33:689:33 | b | 3.0 | +| test.c:689:38:689:38 | b | 3.0 | +| test.c:689:38:689:44 | ... <= ... | 1.0 | +| test.c:689:43:689:44 | 23 | 1.0 | +| test.c:689:43:689:44 | (unsigned int)... | 1.0 | +| test.c:690:13:690:13 | a | 2.0 | +| test.c:690:13:690:15 | (int)... | 6.0 | +| test.c:690:13:690:15 | ... * ... | 6.0 | +| test.c:690:15:690:15 | b | 3.0 | +| test.c:691:5:691:9 | total | 2.0 | +| test.c:691:5:691:14 | ... += ... | 12.0 | +| test.c:691:14:691:14 | r | 6.0 | +| test.c:693:7:693:7 | 3 | 1.0 | +| test.c:693:7:693:7 | (unsigned int)... | 1.0 | +| test.c:693:7:693:12 | ... <= ... | 1.0 | +| test.c:693:7:693:23 | ... && ... | 1.0 | +| test.c:693:7:693:34 | ... && ... | 1.0 | +| test.c:693:7:693:45 | ... && ... | 1.0 | +| test.c:693:12:693:12 | a | 3.0 | +| test.c:693:17:693:17 | a | 3.0 | +| test.c:693:17:693:23 | ... <= ... | 1.0 | +| test.c:693:22:693:23 | 11 | 1.0 | +| test.c:693:22:693:23 | (unsigned int)... | 1.0 | +| test.c:693:28:693:29 | 13 | 1.0 | +| test.c:693:28:693:29 | (unsigned int)... | 1.0 | +| test.c:693:28:693:34 | ... <= ... | 1.0 | +| test.c:693:34:693:34 | b | 7.0 | +| test.c:693:39:693:39 | b | 7.0 | +| test.c:693:39:693:45 | ... <= ... | 1.0 | +| test.c:693:44:693:45 | 23 | 1.0 | +| test.c:693:44:693:45 | (unsigned int)... | 1.0 | +| test.c:694:13:694:13 | a | 3.0 | +| test.c:694:13:694:15 | (int)... | 21.0 | +| test.c:694:13:694:15 | ... * ... | 21.0 | +| test.c:694:15:694:15 | b | 7.0 | +| test.c:695:5:695:9 | total | 14.0 | +| test.c:695:5:695:14 | ... += ... | 294.0 | +| test.c:695:14:695:14 | r | 21.0 | +| test.c:698:10:698:14 | total | 308.0 | +| test.c:702:14:702:15 | 0 | 1.0 | +| test.c:704:7:704:7 | 5 | 1.0 | +| test.c:704:7:704:7 | (unsigned int)... | 1.0 | +| test.c:704:7:704:12 | ... <= ... | 1.0 | +| test.c:704:7:704:23 | ... && ... | 1.0 | +| test.c:704:12:704:12 | b | 1.0 | +| test.c:704:17:704:17 | b | 1.0 | +| test.c:704:17:704:23 | ... <= ... | 1.0 | +| test.c:704:22:704:23 | 23 | 1.0 | +| test.c:704:22:704:23 | (unsigned int)... | 1.0 | +| test.c:705:13:705:14 | 11 | 1.0 | +| test.c:705:13:705:14 | (unsigned int)... | 1.0 | +| test.c:705:13:705:16 | (int)... | 1.0 | +| test.c:705:13:705:16 | ... * ... | 1.0 | +| test.c:705:16:705:16 | b | 1.0 | +| test.c:706:5:706:9 | total | 1.0 | +| test.c:706:5:706:14 | ... += ... | 1.0 | +| test.c:706:14:706:14 | r | 1.0 | +| test.c:708:7:708:7 | 0 | 1.0 | +| test.c:708:7:708:7 | (unsigned int)... | 1.0 | +| test.c:708:7:708:12 | ... <= ... | 1.0 | +| test.c:708:7:708:23 | ... && ... | 1.0 | +| test.c:708:12:708:12 | b | 2.0 | +| test.c:708:17:708:17 | b | 2.0 | +| test.c:708:17:708:23 | ... <= ... | 1.0 | +| test.c:708:22:708:23 | 23 | 1.0 | +| test.c:708:22:708:23 | (unsigned int)... | 1.0 | +| test.c:709:13:709:14 | 11 | 1.0 | +| test.c:709:13:709:14 | (unsigned int)... | 1.0 | +| test.c:709:13:709:16 | (int)... | 2.0 | +| test.c:709:13:709:16 | ... * ... | 2.0 | +| test.c:709:16:709:16 | b | 2.0 | +| test.c:710:5:710:9 | total | 2.0 | +| test.c:710:5:710:14 | ... += ... | 4.0 | +| test.c:710:14:710:14 | r | 2.0 | +| test.c:712:7:712:8 | 13 | 1.0 | +| test.c:712:7:712:8 | (unsigned int)... | 1.0 | +| test.c:712:7:712:13 | ... <= ... | 1.0 | +| test.c:712:7:712:24 | ... && ... | 1.0 | +| test.c:712:13:712:13 | b | 3.0 | +| test.c:712:18:712:18 | b | 3.0 | +| test.c:712:18:712:24 | ... <= ... | 1.0 | +| test.c:712:23:712:24 | 23 | 1.0 | +| test.c:712:23:712:24 | (unsigned int)... | 1.0 | +| test.c:713:13:713:14 | 11 | 1.0 | +| test.c:713:13:713:14 | (unsigned int)... | 1.0 | +| test.c:713:13:713:16 | (int)... | 3.0 | +| test.c:713:13:713:16 | ... * ... | 3.0 | +| test.c:713:16:713:16 | b | 3.0 | +| test.c:714:5:714:9 | total | 6.0 | +| test.c:714:5:714:14 | ... += ... | 18.0 | +| test.c:714:14:714:14 | r | 3.0 | +| test.c:717:10:717:14 | total | 24.0 | +| test.c:722:3:722:3 | x | 1.0 | +| test.c:722:3:722:22 | ... = ... | 1.0 | +| test.c:722:7:722:7 | y | 1.0 | +| test.c:722:7:722:22 | ... = ... | 1.0 | +| test.c:722:11:722:22 | 1000000003 | 1.0 | +| test.c:723:3:723:4 | xy | 1.0 | +| test.c:723:3:723:12 | ... = ... | 1.0 | +| test.c:723:8:723:8 | x | 1.0 | +| test.c:723:8:723:12 | ... * ... | 1.0 | +| test.c:723:12:723:12 | y | 1.0 | +| test.c:724:10:724:11 | xy | 1.0 | +| test.c:729:3:729:3 | x | 1.0 | +| test.c:729:3:729:14 | ... = ... | 1.0 | +| test.c:729:7:729:14 | 274177 | 1.0 | +| test.c:730:3:730:3 | y | 1.0 | +| test.c:730:3:730:22 | ... = ... | 1.0 | +| test.c:730:7:730:22 | 67280421310721 | 1.0 | +| test.c:731:3:731:4 | xy | 1.0 | +| test.c:731:3:731:12 | ... = ... | 1.0 | +| test.c:731:8:731:8 | x | 1.0 | +| test.c:731:8:731:12 | ... * ... | 1.0 | +| test.c:731:12:731:12 | y | 1.0 | +| test.c:732:10:732:11 | xy | 1.0 | +| test.c:736:7:736:8 | ui | 1.0 | +| test.c:736:7:736:14 | ... >= ... | 1.0 | +| test.c:736:13:736:14 | 10 | 1.0 | +| test.c:736:13:736:14 | (unsigned int)... | 1.0 | +| test.c:737:28:737:44 | (unsigned long)... | 1.0 | +| test.c:737:28:737:49 | ... * ... | 1.0 | +| test.c:737:43:737:44 | ui | 1.0 | +| test.c:737:48:737:49 | (unsigned long)... | 1.0 | +| test.c:737:48:737:49 | ui | 1.0 | +| test.c:738:12:738:17 | result | 1.0 | +| test.c:740:7:740:8 | ul | 1.0 | +| test.c:740:7:740:14 | ... >= ... | 1.0 | +| test.c:740:13:740:14 | 10 | 1.0 | +| test.c:740:13:740:14 | (unsigned long)... | 1.0 | +| test.c:741:28:741:29 | ul | 1.0 | +| test.c:741:28:741:34 | ... * ... | 1.0 | +| test.c:741:33:741:34 | ul | 1.0 | +| test.c:742:12:742:17 | result | 1.0 | +| test.c:744:10:744:10 | 0 | 1.0 | +| test.c:744:10:744:10 | (unsigned long)... | 1.0 | +| test.c:748:7:748:8 | ui | 1.0 | +| test.c:748:7:748:14 | ... <= ... | 1.0 | +| test.c:748:7:748:25 | ... && ... | 1.0 | +| test.c:748:13:748:14 | 10 | 1.0 | +| test.c:748:13:748:14 | (unsigned int)... | 1.0 | +| test.c:748:19:748:20 | ui | 1.0 | +| test.c:748:19:748:25 | ... >= ... | 1.0 | +| test.c:748:25:748:25 | 2 | 1.0 | +| test.c:748:25:748:25 | (unsigned int)... | 1.0 | +| test.c:749:5:749:6 | ui | 1.0 | +| test.c:749:5:749:16 | ... *= ... | 1.0 | +| test.c:749:11:749:12 | ui | 1.0 | +| test.c:749:11:749:16 | ... + ... | 1.0 | +| test.c:749:16:749:16 | 0 | 1.0 | +| test.c:749:16:749:16 | (unsigned int)... | 1.0 | +| test.c:750:12:750:13 | (unsigned long)... | 1.0 | +| test.c:750:12:750:13 | ui | 1.0 | +| test.c:753:26:753:27 | 10 | 1.0 | +| test.c:753:26:753:27 | (unsigned int)... | 1.0 | +| test.c:754:3:754:9 | uiconst | 1.0 | +| test.c:754:3:754:14 | ... *= ... | 1.0 | +| test.c:754:14:754:14 | 4 | 1.0 | +| test.c:754:14:754:14 | (unsigned int)... | 1.0 | +| test.c:756:27:756:28 | 10 | 1.0 | +| test.c:756:27:756:28 | (unsigned long)... | 1.0 | +| test.c:757:3:757:9 | ulconst | 1.0 | +| test.c:757:3:757:14 | ... *= ... | 1.0 | +| test.c:757:14:757:14 | 4 | 1.0 | +| test.c:757:14:757:14 | (unsigned long)... | 1.0 | +| test.c:758:10:758:16 | (unsigned long)... | 1.0 | +| test.c:758:10:758:16 | uiconst | 1.0 | +| test.c:758:10:758:26 | ... + ... | 1.0 | +| test.c:758:20:758:26 | ulconst | 1.0 | +| test.c:762:7:762:7 | i | 1.0 | +| test.c:762:7:762:13 | ... >= ... | 1.0 | +| test.c:762:7:762:23 | ... && ... | 1.0 | +| test.c:762:12:762:13 | - ... | 1.0 | +| test.c:762:13:762:13 | 1 | 1.0 | +| test.c:762:18:762:18 | i | 1.0 | +| test.c:762:18:762:23 | ... <= ... | 1.0 | +| test.c:762:23:762:23 | 2 | 1.0 | +| test.c:763:5:763:5 | i | 1.0 | +| test.c:763:5:763:13 | ... = ... | 1.0 | +| test.c:763:9:763:9 | 5 | 1.0 | +| test.c:763:9:763:13 | ... * ... | 1.0 | +| test.c:763:13:763:13 | i | 1.0 | +| test.c:764:9:764:9 | i | 1.0 | +| test.c:766:5:766:5 | i | 1.0 | +| test.c:766:5:766:14 | ... = ... | 1.0 | +| test.c:766:9:766:9 | i | 1.0 | +| test.c:766:9:766:14 | ... * ... | 1.0 | +| test.c:766:13:766:14 | - ... | 1.0 | +| test.c:766:14:766:14 | 3 | 1.0 | +| test.c:767:9:767:9 | i | 1.0 | +| test.c:769:5:769:5 | i | 1.0 | +| test.c:769:5:769:10 | ... *= ... | 1.0 | +| test.c:769:10:769:10 | 7 | 1.0 | +| test.c:770:9:770:9 | i | 1.0 | +| test.c:772:5:772:5 | i | 1.0 | +| test.c:772:5:772:12 | ... *= ... | 1.0 | +| test.c:772:10:772:12 | - ... | 1.0 | +| test.c:772:11:772:12 | 11 | 1.0 | +| test.c:773:9:773:9 | i | 1.0 | +| test.c:775:7:775:7 | i | 2.0 | +| test.c:775:7:775:13 | ... == ... | 1.0 | +| test.c:775:12:775:13 | - ... | 1.0 | +| test.c:775:13:775:13 | 1 | 1.0 | +| test.c:776:5:776:5 | i | 1.0 | +| test.c:776:5:776:27 | ... = ... | 2.0 | +| test.c:776:9:776:9 | i | 2.0 | +| test.c:776:9:776:27 | ... * ... | 2.0 | +| test.c:776:13:776:27 | (int)... | 1.0 | +| test.c:776:18:776:27 | 4294967295 | 1.0 | +| test.c:777:9:777:9 | i | 2.0 | +| test.c:779:3:779:3 | i | 1.0 | +| test.c:779:3:779:12 | ... = ... | 4.0 | +| test.c:779:7:779:7 | i | 4.0 | +| test.c:779:7:779:12 | ... * ... | 4.0 | +| test.c:779:11:779:12 | - ... | 1.0 | +| test.c:779:12:779:12 | 1 | 1.0 | +| test.c:780:10:780:10 | i | 4.0 | +| test.c:782:20:782:20 | 1 | 1.0 | +| test.c:782:20:782:20 | (signed char)... | 1.0 | +| test.c:783:3:783:3 | i | 1.0 | +| test.c:783:3:783:17 | ... = ... | 1.0 | +| test.c:783:7:783:17 | (...) | 1.0 | +| test.c:783:7:783:17 | (int)... | 1.0 | +| test.c:783:8:783:11 | * ... | 1.0 | +| test.c:783:8:783:16 | ... *= ... | 1.0 | +| test.c:783:10:783:11 | sc | 1.0 | +| test.c:783:16:783:16 | 2 | 1.0 | +| test.c:785:7:785:7 | i | 1.0 | +| test.c:787:10:787:10 | 0 | 1.0 | +| test.c:792:7:792:7 | (int)... | 1.0 | +| test.c:792:7:792:7 | n | 1.0 | +| test.c:794:7:794:7 | n | 1.0 | +| test.c:794:7:794:11 | ... > ... | 1.0 | +| test.c:794:11:794:11 | 0 | 1.0 | +| test.c:794:11:794:11 | (unsigned int)... | 1.0 | +| test.c:795:9:795:9 | (int)... | 1.0 | +| test.c:795:9:795:9 | n | 1.0 | +| test.c:798:7:798:7 | n | 2.0 | +| test.c:798:7:798:12 | ... != ... | 1.0 | +| test.c:798:12:798:12 | 0 | 1.0 | +| test.c:798:12:798:12 | (unsigned int)... | 1.0 | +| test.c:799:9:799:9 | (int)... | 2.0 | +| test.c:799:9:799:9 | n | 2.0 | +| test.c:801:9:801:9 | (int)... | 2.0 | +| test.c:801:9:801:9 | n | 2.0 | +| test.c:804:7:804:8 | ! ... | 1.0 | +| test.c:804:8:804:8 | n | 4.0 | +| test.c:805:9:805:9 | (int)... | 4.0 | +| test.c:805:9:805:9 | n | 4.0 | +| test.c:807:9:807:9 | (int)... | 4.0 | +| test.c:807:9:807:9 | n | 4.0 | +| test.c:810:10:810:10 | n | 13.0 | +| test.c:810:10:810:15 | ... != ... | 1.0 | +| test.c:810:15:810:15 | 0 | 1.0 | +| test.c:810:15:810:15 | (unsigned int)... | 1.0 | +| test.c:811:5:811:5 | n | 13.0 | +| test.c:811:5:811:7 | ... -- | 13.0 | +| test.c:814:7:814:7 | (int)... | 13.0 | +| test.c:814:7:814:7 | n | 13.0 | +| test.c:818:7:818:7 | (int)... | 1.0 | +| test.c:818:7:818:7 | n | 1.0 | +| test.c:818:7:818:11 | ... < ... | 1.0 | +| test.c:818:11:818:11 | 0 | 1.0 | +| test.c:821:7:821:7 | (int)... | 1.0 | +| test.c:821:7:821:7 | n | 1.0 | +| test.c:821:7:821:12 | ... == ... | 1.0 | +| test.c:821:12:821:12 | 0 | 1.0 | +| test.c:822:9:822:9 | (int)... | 1.0 | +| test.c:822:9:822:9 | n | 1.0 | +| test.c:824:9:824:9 | (int)... | 1.0 | +| test.c:824:9:824:9 | n | 1.0 | +| test.c:827:7:827:7 | n | 2.0 | +| test.c:828:9:828:9 | (int)... | 2.0 | +| test.c:828:9:828:9 | n | 2.0 | +| test.c:830:9:830:9 | (int)... | 2.0 | +| test.c:830:9:830:9 | n | 2.0 | +| test.c:833:10:833:10 | (int)... | 13.0 | +| test.c:833:10:833:10 | n | 12.0 | +| test.c:833:10:833:15 | ... != ... | 1.0 | +| test.c:833:15:833:15 | 0 | 1.0 | +| test.c:834:5:834:5 | n | 12.0 | +| test.c:834:5:834:7 | ... -- | 12.0 | +| test.c:837:7:837:7 | (int)... | 12.0 | +| test.c:837:7:837:7 | n | 12.0 | +| test.c:841:7:841:7 | (int)... | 1.0 | +| test.c:841:7:841:7 | n | 1.0 | +| test.c:841:7:841:12 | ... != ... | 1.0 | +| test.c:841:12:841:12 | 0 | 1.0 | +| test.c:842:9:842:9 | (int)... | 1.0 | +| test.c:842:9:842:9 | n | 1.0 | +| test.c:842:9:842:14 | ... >= ... | 1.0 | +| test.c:842:14:842:14 | 0 | 1.0 | +| test.c:843:11:843:11 | (int)... | 1.0 | +| test.c:843:11:843:11 | n | 1.0 | +| test.c:847:7:847:7 | (int)... | 2.0 | +| test.c:847:7:847:7 | n | 2.0 | +| test.c:847:7:847:12 | ... >= ... | 1.0 | +| test.c:847:12:847:12 | 5 | 1.0 | +| test.c:848:9:848:9 | 2 | 1.0 | +| test.c:848:9:848:13 | ... * ... | 2.0 | +| test.c:848:9:848:18 | ... - ... | 2.0 | +| test.c:848:9:848:23 | ... == ... | 1.0 | +| test.c:848:13:848:13 | (int)... | 2.0 | +| test.c:848:13:848:13 | n | 2.0 | +| test.c:848:17:848:18 | 10 | 1.0 | +| test.c:848:23:848:23 | 0 | 1.0 | +| test.c:851:9:851:9 | (int)... | 2.0 | +| test.c:851:9:851:9 | n | 2.0 | +| test.c:854:7:854:7 | (int)... | 3.0 | +| test.c:854:7:854:7 | n | 3.0 | +| test.c:854:7:854:17 | ... != ... | 1.0 | +| test.c:854:7:854:32 | ... && ... | 1.0 | +| test.c:854:12:854:17 | - ... | 1.0 | +| test.c:854:13:854:17 | 32768 | 1.0 | +| test.c:854:22:854:22 | (int)... | 3.0 | +| test.c:854:22:854:22 | n | 3.0 | +| test.c:854:22:854:32 | ... != ... | 1.0 | +| test.c:854:27:854:32 | - ... | 1.0 | +| test.c:854:28:854:32 | 32767 | 1.0 | +| test.c:855:9:855:9 | (int)... | 3.0 | +| test.c:855:9:855:9 | n | 3.0 | +| test.c:858:7:858:7 | (int)... | 4.0 | +| test.c:858:7:858:7 | n | 4.0 | +| test.c:858:7:858:12 | ... >= ... | 1.0 | +| test.c:858:12:858:12 | 0 | 1.0 | +| test.c:859:5:859:5 | n | 4.0 | +| test.c:859:5:859:14 | ... ? ... : ... | 16.0 | +| test.c:859:10:859:10 | (int)... | 4.0 | +| test.c:859:10:859:10 | n | 4.0 | +| test.c:859:14:859:14 | (int)... | 4.0 | +| test.c:859:14:859:14 | n | 4.0 | +| test.c:860:5:860:6 | ! ... | 1.0 | +| test.c:860:5:860:14 | ... ? ... : ... | 64.0 | +| test.c:860:6:860:6 | n | 8.0 | +| test.c:860:10:860:10 | (int)... | 8.0 | +| test.c:860:10:860:10 | n | 8.0 | +| test.c:860:14:860:14 | (int)... | 8.0 | +| test.c:860:14:860:14 | n | 8.0 | +| test.c:871:7:871:8 | (unsigned long)... | 1.0 | +| test.c:871:7:871:8 | ss | 1.0 | +| test.c:871:7:871:22 | ... < ... | 1.0 | +| test.c:871:12:871:22 | sizeof(int) | 1.0 | +| test.c:872:9:872:10 | (int)... | 1.0 | +| test.c:872:9:872:10 | ss | 1.0 | +| test.c:875:7:875:8 | (int)... | 2.0 | +| test.c:875:7:875:8 | ss | 2.0 | +| test.c:875:7:875:17 | ... < ... | 1.0 | +| test.c:875:12:875:17 | 32769 | 1.0 | +| test.c:876:9:876:10 | (int)... | 2.0 | +| test.c:876:9:876:10 | ss | 2.0 | +| test.c:879:7:879:15 | (int)... | 1.0 | +| test.c:879:7:879:15 | (short)... | 1.0 | +| test.c:879:7:879:20 | ... >= ... | 1.0 | +| test.c:879:14:879:15 | us | 1.0 | +| test.c:879:20:879:20 | 0 | 1.0 | +| test.c:880:9:880:10 | (int)... | 1.0 | +| test.c:880:9:880:10 | us | 1.0 | +| test.c:883:7:883:15 | (int)... | 2.0 | +| test.c:883:7:883:15 | (short)... | 2.0 | +| test.c:883:7:883:21 | ... >= ... | 1.0 | +| test.c:883:14:883:15 | us | 2.0 | +| test.c:883:20:883:21 | - ... | 1.0 | +| test.c:883:21:883:21 | 1 | 1.0 | +| test.c:884:9:884:10 | (int)... | 2.0 | +| test.c:884:9:884:10 | us | 2.0 | +| test.c:887:7:887:8 | (unsigned long)... | 3.0 | +| test.c:887:7:887:8 | ss | 3.0 | +| test.c:887:7:887:23 | ... >= ... | 1.0 | +| test.c:887:13:887:23 | sizeof(int) | 1.0 | +| test.c:888:9:888:10 | (int)... | 3.0 | +| test.c:888:9:888:10 | ss | 3.0 | +| test.c:891:7:891:8 | (int)... | 4.0 | +| test.c:891:7:891:8 | ss | 4.0 | +| test.c:891:7:891:12 | (unsigned long)... | 4.0 | +| test.c:891:7:891:12 | ... + ... | 4.0 | +| test.c:891:7:891:26 | ... < ... | 1.0 | +| test.c:891:12:891:12 | 1 | 1.0 | +| test.c:891:16:891:26 | sizeof(int) | 1.0 | +| test.c:892:9:892:10 | (int)... | 4.0 | +| test.c:892:9:892:10 | ss | 4.0 | +| test.c:898:8:898:8 | s | 1.0 | +| test.c:898:8:898:12 | ... = ... | 1.0 | +| test.c:898:12:898:12 | 0 | 1.0 | +| test.c:898:15:898:15 | s | 13.0 | +| test.c:898:15:898:20 | ... < ... | 1.0 | +| test.c:898:19:898:20 | 10 | 1.0 | +| test.c:898:23:898:23 | s | 13.0 | +| test.c:898:23:898:25 | ... ++ | 13.0 | +| test.c:899:18:899:18 | s | 13.0 | +| test.c:899:18:899:22 | ... + ... | 13.0 | +| test.c:899:22:899:22 | s | 13.0 | +| test.c:900:9:900:14 | result | 13.0 | +| test.c:905:10:905:11 | 0 | 1.0 | +| test.c:906:7:906:7 | i | 1.0 | +| test.c:906:7:906:11 | ... < ... | 1.0 | +| test.c:906:11:906:11 | 0 | 1.0 | +| test.c:907:9:907:9 | i | 1.0 | +| test.c:910:20:910:20 | 0 | 1.0 | +| test.c:910:20:910:20 | (unsigned int)... | 1.0 | +| test.c:911:7:911:7 | u | 1.0 | +| test.c:911:7:911:11 | ... < ... | 1.0 | +| test.c:911:11:911:11 | 0 | 1.0 | +| test.c:911:11:911:11 | (unsigned int)... | 1.0 | +| test.c:912:9:912:9 | (int)... | 1.0 | +| test.c:912:9:912:9 | u | 1.0 | +| test.c:917:12:917:12 | s | 1.0 | +| test.c:917:12:917:16 | ... % ... | 1.0 | +| test.c:917:16:917:16 | 5 | 1.0 | +| test.c:918:7:918:8 | s2 | 1.0 | +| test.c:923:7:923:7 | x | 1.0 | +| test.c:924:9:924:9 | y | 1.0 | +| test.c:924:9:924:14 | ... != ... | 1.0 | +| test.c:924:14:924:14 | 0 | 1.0 | +| test.c:925:12:925:12 | 0 | 1.0 | +| test.c:928:7:928:7 | y | 2.0 | +| test.c:937:7:937:7 | x | 1.0 | +| test.c:937:7:937:13 | ... >= ... | 1.0 | +| test.c:937:12:937:13 | 10 | 1.0 | +| test.c:942:7:942:7 | x | 13.0 | +| test.c:947:16:947:26 | 2147483647 | 1.0 | +| test.c:948:16:948:19 | 256 | 1.0 | +| test.c:949:7:949:13 | (...) | 1.0 | +| test.c:949:7:949:20 | ... <= ... | 1.0 | +| test.c:949:8:949:8 | x | 1.0 | +| test.c:949:8:949:12 | ... + ... | 1.0 | +| test.c:949:12:949:12 | y | 1.0 | +| test.c:949:18:949:20 | 512 | 1.0 | +| test.c:950:9:950:9 | x | 1.0 | +| test.c:951:9:951:9 | y | 1.0 | +| test.cpp:9:11:9:12 | - ... | 1.0 | +| test.cpp:9:12:9:12 | 1 | 1.0 | +| test.cpp:10:7:10:7 | (bool)... | 1.0 | +| test.cpp:10:7:10:7 | b | 1.0 | +| test.cpp:11:5:11:5 | x | 1.0 | +| test.cpp:11:5:11:14 | ... = ... | 1.0 | +| test.cpp:11:12:11:12 | call to operator[] | 1.0 | +| test.cpp:11:12:11:14 | (reference dereference) | 1.0 | +| test.cpp:11:13:11:13 | 3 | 1.0 | +| test.cpp:13:10:13:10 | x | 2.0 | +| test.cpp:18:12:18:31 | (int)... | 1.0 | +| test.cpp:18:12:18:31 | static_cast... | 1.0 | +| test.cpp:18:30:18:30 | x | 1.0 | +| test.cpp:19:10:19:11 | x0 | 1.0 | +| test.cpp:27:7:27:7 | y | 1.0 | +| test.cpp:27:7:27:12 | ... == ... | 1.0 | +| test.cpp:27:12:27:12 | 0 | 1.0 | +| test.cpp:28:5:28:5 | x | 1.0 | +| test.cpp:28:5:28:9 | ... = ... | 1.0 | +| test.cpp:28:9:28:9 | 0 | 1.0 | +| test.cpp:30:7:30:7 | y | 2.0 | +| test.cpp:30:7:30:13 | ... == ... | 1.0 | +| test.cpp:30:12:30:13 | - ... | 1.0 | +| test.cpp:30:13:30:13 | 1 | 1.0 | +| test.cpp:31:5:31:5 | x | 1.0 | +| test.cpp:31:5:31:10 | ... = ... | 1.0 | +| test.cpp:31:9:31:10 | - ... | 1.0 | +| test.cpp:31:10:31:10 | 1 | 1.0 | +| test.cpp:33:7:33:7 | y | 4.0 | +| test.cpp:33:7:33:12 | ... == ... | 1.0 | +| test.cpp:33:12:33:12 | 1 | 1.0 | +| test.cpp:34:5:34:5 | x | 1.0 | +| test.cpp:34:5:34:9 | ... = ... | 1.0 | +| test.cpp:34:9:34:9 | 1 | 1.0 | +| test.cpp:36:7:36:7 | y | 8.0 | +| test.cpp:36:7:36:15 | ... == ... | 1.0 | +| test.cpp:36:12:36:15 | - ... | 1.0 | +| test.cpp:36:13:36:15 | 128 | 1.0 | +| test.cpp:37:5:37:5 | x | 1.0 | +| test.cpp:37:5:37:12 | ... = ... | 1.0 | +| test.cpp:37:9:37:12 | - ... | 1.0 | +| test.cpp:37:10:37:12 | 128 | 1.0 | +| test.cpp:39:7:39:7 | y | 16.0 | +| test.cpp:39:7:39:14 | ... == ... | 1.0 | +| test.cpp:39:12:39:14 | 128 | 1.0 | +| test.cpp:40:5:40:5 | x | 1.0 | +| test.cpp:40:5:40:11 | ... = ... | 1.0 | +| test.cpp:40:9:40:11 | 128 | 1.0 | +| test.cpp:42:7:42:7 | y | 32.0 | +| test.cpp:42:7:42:16 | ... == ... | 1.0 | +| test.cpp:42:12:42:16 | - ... | 1.0 | +| test.cpp:42:13:42:16 | 1024 | 1.0 | +| test.cpp:43:5:43:5 | x | 1.0 | +| test.cpp:43:5:43:13 | ... = ... | 1.0 | +| test.cpp:43:9:43:13 | - ... | 1.0 | +| test.cpp:43:10:43:13 | 1024 | 1.0 | +| test.cpp:45:7:45:7 | y | 64.0 | +| test.cpp:45:7:45:15 | ... == ... | 1.0 | +| test.cpp:45:12:45:15 | 1024 | 1.0 | +| test.cpp:46:5:46:5 | x | 1.0 | +| test.cpp:46:5:46:12 | ... = ... | 1.0 | +| test.cpp:46:9:46:12 | 1024 | 1.0 | +| test.cpp:49:10:49:11 | 0 | 1.0 | +| test.cpp:51:7:51:7 | x | 8.0 | +| test.cpp:51:7:51:12 | ... == ... | 1.0 | +| test.cpp:51:12:51:12 | 0 | 1.0 | +| test.cpp:52:15:52:21 | (bool)... | 1.0 | +| test.cpp:52:21:52:21 | x | 8.0 | +| test.cpp:53:5:53:5 | t | 1.0 | +| test.cpp:53:5:53:16 | ... += ... | 8.0 | +| test.cpp:53:10:53:16 | (int)... | 8.0 | +| test.cpp:53:15:53:16 | xb | 8.0 | +| test.cpp:56:7:56:7 | x | 16.0 | +| test.cpp:56:7:56:11 | ... > ... | 1.0 | +| test.cpp:56:11:56:11 | 0 | 1.0 | +| test.cpp:57:15:57:21 | (bool)... | 1.0 | +| test.cpp:57:21:57:21 | x | 16.0 | +| test.cpp:58:5:58:5 | t | 9.0 | +| test.cpp:58:5:58:16 | ... += ... | 144.0 | +| test.cpp:58:10:58:16 | (int)... | 16.0 | +| test.cpp:58:15:58:16 | xb | 16.0 | +| test.cpp:61:7:61:7 | x | 17.0 | +| test.cpp:61:7:61:11 | ... < ... | 1.0 | +| test.cpp:61:11:61:11 | 0 | 1.0 | +| test.cpp:62:15:62:21 | (bool)... | 1.0 | +| test.cpp:62:21:62:21 | x | 17.0 | +| test.cpp:63:5:63:5 | t | 153.0 | +| test.cpp:63:5:63:16 | ... += ... | 2601.0 | +| test.cpp:63:10:63:16 | (int)... | 17.0 | +| test.cpp:63:15:63:16 | xb | 17.0 | +| test.cpp:66:13:66:19 | (bool)... | 1.0 | +| test.cpp:66:19:66:19 | x | 18.0 | +| test.cpp:67:3:67:3 | t | 2754.0 | +| test.cpp:67:3:67:14 | ... += ... | 49572.0 | +| test.cpp:67:8:67:14 | (int)... | 18.0 | +| test.cpp:67:13:67:14 | xb | 18.0 | +| test.cpp:69:10:69:10 | b | 1.0 | +| test.cpp:69:10:69:21 | ... \|\| ... | 1.0 | +| test.cpp:69:15:69:21 | (bool)... | 1.0 | +| test.cpp:69:21:69:21 | t | 49572.0 | +| test.cpp:74:30:74:30 | (int)... | 1.0 | +| test.cpp:74:30:74:30 | c | 1.0 | +| test.cpp:74:30:74:34 | (unsigned short)... | 1.0 | +| test.cpp:74:30:74:34 | ... + ... | 1.0 | +| test.cpp:74:34:74:34 | (int)... | 1.0 | +| test.cpp:74:34:74:34 | c | 1.0 | +| test.cpp:75:7:75:30 | (int)... | 1.0 | +| test.cpp:75:7:75:30 | (unsigned char)... | 1.0 | +| test.cpp:75:7:75:35 | ... == ... | 1.0 | +| test.cpp:75:22:75:30 | c_times_2 | 1.0 | +| test.cpp:75:35:75:35 | 0 | 1.0 | +| test.cpp:77:5:77:13 | c_times_2 | 1.0 | +| test.cpp:79:3:79:11 | c_times_2 | 1.0 | +| test.cpp:83:16:83:22 | (reference dereference) | 1.0 | +| test.cpp:83:16:83:22 | (reference to) | 1.0 | +| test.cpp:83:16:83:22 | aliased | 1.0 | +| test.cpp:85:7:85:7 | (reference dereference) | 1.0 | +| test.cpp:85:7:85:7 | i | 1.0 | +| test.cpp:85:7:85:12 | ... >= ... | 1.0 | +| test.cpp:85:12:85:12 | 2 | 1.0 | +| test.cpp:86:12:86:12 | (reference dereference) | 1.0 | +| test.cpp:86:12:86:12 | i | 1.0 | +| test.cpp:88:7:88:8 | (reference dereference) | 1.0 | +| test.cpp:88:7:88:8 | ci | 1.0 | +| test.cpp:88:7:88:13 | ... >= ... | 1.0 | +| test.cpp:88:13:88:13 | 2 | 1.0 | +| test.cpp:89:12:89:13 | (reference dereference) | 1.0 | +| test.cpp:89:12:89:13 | ci | 1.0 | +| test.cpp:91:7:91:13 | (reference dereference) | 1.0 | +| test.cpp:91:7:91:13 | aliased | 1.0 | +| test.cpp:91:7:91:18 | ... >= ... | 1.0 | +| test.cpp:91:18:91:18 | 2 | 1.0 | +| test.cpp:92:12:92:18 | (reference dereference) | 1.0 | +| test.cpp:92:12:92:18 | aliased | 1.0 | +| test.cpp:94:7:94:11 | (reference dereference) | 1.0 | +| test.cpp:94:7:94:11 | alias | 1.0 | +| test.cpp:94:7:94:16 | ... >= ... | 1.0 | +| test.cpp:94:16:94:16 | 2 | 1.0 | +| test.cpp:95:12:95:16 | (reference dereference) | 1.0 | +| test.cpp:95:12:95:16 | alias | 1.0 | +| test.cpp:97:10:97:10 | (reference dereference) | 13.0 | +| test.cpp:97:10:97:19 | ... <= ... | 1.0 | +| test.cpp:97:15:97:19 | 12345 | 1.0 | +| test.cpp:97:22:97:22 | (reference dereference) | 13.0 | +| test.cpp:97:22:97:24 | ... ++ | 13.0 | +| test.cpp:98:5:98:5 | (reference dereference) | 1.0 | +| test.cpp:98:5:98:5 | i | 1.0 | +| test.cpp:98:5:98:9 | ... = ... | 13.0 | +| test.cpp:98:9:98:9 | (reference dereference) | 13.0 | +| test.cpp:99:5:99:5 | (reference dereference) | 13.0 | +| test.cpp:102:10:102:10 | 0 | 1.0 | +| test.cpp:106:7:106:7 | (int)... | 1.0 | +| test.cpp:106:7:106:7 | n | 1.0 | +| test.cpp:106:7:106:11 | ... < ... | 1.0 | +| test.cpp:106:11:106:11 | 0 | 1.0 | +| test.cpp:109:7:109:7 | (bool)... | 1.0 | +| test.cpp:109:7:109:7 | n | 1.0 | +| test.cpp:110:5:110:5 | n | 1.0 | +| test.cpp:112:5:112:5 | n | 1.0 | +| test.cpp:115:7:115:8 | ! ... | 1.0 | +| test.cpp:115:8:115:8 | (bool)... | 1.0 | +| test.cpp:115:8:115:8 | n | 2.0 | +| test.cpp:116:5:116:5 | n | 2.0 | +| test.cpp:118:5:118:5 | n | 2.0 | +| test.cpp:121:3:121:3 | (bool)... | 1.0 | +| test.cpp:121:3:121:3 | n | 4.0 | +| test.cpp:121:3:121:12 | ... ? ... : ... | 16.0 | +| test.cpp:121:8:121:8 | n | 4.0 | +| test.cpp:121:12:121:12 | n | 4.0 | +| test.cpp:122:3:122:4 | ! ... | 1.0 | +| test.cpp:122:3:122:12 | ... ? ... : ... | 64.0 | +| test.cpp:122:4:122:4 | (bool)... | 1.0 | +| test.cpp:122:4:122:4 | n | 8.0 | +| test.cpp:122:8:122:8 | n | 8.0 | +| test.cpp:122:12:122:12 | n | 8.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql new file mode 100644 index 000000000000..efafcf6e684b --- /dev/null +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql @@ -0,0 +1,31 @@ +import cpp +import utils.test.InlineExpectationsTest +import semmle.code.cpp.rangeanalysis.SimpleRangeAnalysis + +query predicate estimateNrOfBounds(Expr e, float nrOfBounds) { + nrOfBounds = SimpleRangeAnalysisInternal::estimateNrOfBounds(e) +} + +/** + * Finds any expressions for which `nrOfBounds` is not functional. The result + * should be empty, so this predicate is useful to debug non-functional cases. + */ +private predicate nonFunctionalNrOfBounds(Expr e) { + strictcount(SimpleRangeAnalysisInternal::estimateNrOfBounds(e)) > 1 +} + +module FunctionalityTest implements TestSig { + string getARelevantTag() { result = "nonFunctionalNrOfBounds" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(Expr e | + nonFunctionalNrOfBounds(e) and + location = e.getLocation() and + element = e.toString() and + tag = "nonFunctionalNrOfBounds" and + value = "" + ) + } +} + +import MakeTest diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected index 0cd2437e0730..48925507106d 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected @@ -72,8 +72,77 @@ | test.c:405:22:405:82 | ... ? ... : ... | 0.13204114 | 0.42186276 | 0.13204114 | | test.c:405:26:405:69 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.44996679 | | test.c:405:30:405:56 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.53843358 | -| test.c:418:20:418:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | -| test.c:630:5:630:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | -| test.c:631:5:631:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | +| test.c:447:4:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:447:5:449:49 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:450:6:532:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:451:8:469:41 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:454:10:458:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:454:31:454:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:456:13:458:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:463:12:468:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:464:12:464:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:466:15:468:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:470:6:489:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:473:8:477:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:473:29:473:77 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:475:11:477:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:478:6:478:54 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:482:10:486:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:482:31:482:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:484:13:486:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:487:9:489:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:491:10:510:43 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:494:12:499:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:495:12:495:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:497:15:499:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:504:14:509:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:505:14:505:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:507:17:509:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:511:9:532:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:514:14:519:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:515:14:515:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:517:17:519:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:520:12:520:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:524:12:529:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:525:12:525:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:527:15:529:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:530:11:532:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:533:9:535:51 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:536:9:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:537:14:556:47 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:540:16:545:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:541:16:541:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:543:19:545:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:550:18:555:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:551:18:551:66 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:553:21:555:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:557:12:578:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:560:14:565:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:561:14:561:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:563:17:565:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:566:12:566:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:570:16:575:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:571:16:571:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:573:19:575:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:576:15:578:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:580:12:599:45 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:583:14:588:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:584:14:584:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:586:17:588:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:593:16:598:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:594:16:594:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:596:19:598:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:600:11:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:603:16:608:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:604:16:604:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:606:19:608:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:609:14:609:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:613:14:618:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:614:14:614:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:616:17:618:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:619:13:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:647:20:647:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | +| test.c:859:5:859:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | +| test.c:860:5:860:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected index b34beda10d42..9c5dec067a67 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected @@ -72,8 +72,77 @@ | test.c:405:22:405:82 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.13204114 | | test.c:405:26:405:69 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.44996679 | | test.c:405:30:405:56 | ... ? ... : ... | 0.53843358 | 0.42186276 | 0.53843358 | -| test.c:418:20:418:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | -| test.c:630:5:630:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | -| test.c:631:5:631:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | +| test.c:447:4:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:447:5:449:49 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:450:6:532:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:451:8:469:41 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:454:10:458:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:454:31:454:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:456:13:458:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:463:12:468:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:464:12:464:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:466:15:468:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:470:6:489:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:473:8:477:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:473:29:473:77 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:475:11:477:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:478:6:478:54 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:482:10:486:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:482:31:482:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:484:13:486:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:487:9:489:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:491:10:510:43 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:494:12:499:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:495:12:495:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:497:15:499:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:504:14:509:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:505:14:505:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:507:17:509:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:511:9:532:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:514:14:519:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:515:14:515:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:517:17:519:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:520:12:520:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:524:12:529:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:525:12:525:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:527:15:529:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:530:11:532:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:533:9:535:51 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:536:9:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:537:14:556:47 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:540:16:545:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:541:16:541:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:543:19:545:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:550:18:555:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:551:18:551:66 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:553:21:555:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:557:12:578:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:560:14:565:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:561:14:561:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:563:17:565:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:566:12:566:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:570:16:575:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:571:16:571:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:573:19:575:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:576:15:578:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:580:12:599:45 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:583:14:588:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:584:14:584:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:586:17:588:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:593:16:598:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:594:16:594:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:596:19:598:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:600:11:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:603:16:608:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:604:16:604:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:606:19:608:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:609:14:609:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:613:14:618:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:614:14:614:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:616:17:618:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:619:13:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:647:20:647:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | +| test.c:859:5:859:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | +| test.c:860:5:860:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c index 26e6a49e6f64..3cb3c761f47c 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c @@ -413,6 +413,235 @@ double test_ternary_nested_of_literals(double m, double n, double o, double p, d return output; } +int repeated_if_statements(unsigned int rhs) { + // Test how many bounds we estimate for `if` statements without `else` + // branches where the following node is both a normal phi node and a guard phi + // node. + if (rhs < 12) { rhs << 1; } + if (rhs < 13) { rhs << 1; } + if (rhs < 14) { rhs << 1; } + if (rhs < 15) { rhs << 1; } + if (rhs < 16) { rhs << 1; } + return rhs; // rhs has 6 bounds +} + +int ne_phi_nodes(int a, int b) { + if (a == 17) { + if (b == 23) { + a += b; + } + if (a == 18) { + b = 10; + } + } + // The statement below is an NE phi node for the access `a` in both `a == 17` + // and `a == 18`. + int c = a + b; + return a + b; +} + +unsigned int conditional_nested_guards(unsigned int ip) { + // This tests a combinatorial explosion that can happen from a large number of + // nested linear guards. + unsigned int special_number = + (14 * ip > (2 * ip + 1) * 17 + (2 * ip + 1 + 1) * 17 + ? 14 * ip + : (2 * ip + 1) * 14 + (2 * ip + 1 + 1) * 17) > + (2 * (ip * 14 + 32) + + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > (17 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + 2 * ip * 14 + (2 * ip + 1) * 17 + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 2 * ip * 14 + (2 * ip + 1) * 17) > + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > (17 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > (17 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 14 * ip > (ip + 1) * 17 + ? 14 * ip + : (ip + 1) * 14) + ? 2 * (ip * 14 + 32) + + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + 2 * ip * 14 + (2 * ip + 1) * 17 + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 2 * ip * 14 + (2 * ip + 1) * 17) + : 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 14 * ip > (ip + 1) * 17 + ? 14 * ip + : (ip + 1) * 14) + ? 14 * ip > (2 * ip + 1) * 17 + (2 * ip + 1 + 1) * 17 + ? 14 * ip + : (2 * ip + 1) * 14 + (2 * ip + 1 + 1) * 17 + : 2 * (ip * 14 + 32) + + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + 2 * ip * 14 + (2 * ip + 1) * 17 + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 2 * ip * 14 + (2 * ip + 1) * 17) > + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 14 * ip > (ip + 1) * 17 + ? 14 * ip + : (ip + 1) * 14) + ? 2 * (ip * 14 + 32) + + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + 2 * ip * 14 + (2 * ip + 1) * 17 + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 2 * ip * 14 + (2 * ip + 1) * 17) + : 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 14 * ip > (ip + 1) * 17 + ? 14 * ip + : (ip + 1) * 14; + return special_number; +} + +int many_conditional_assignments(int c1, int c2, int c3, int c4, int c5) { + // This tests a combinatorial explosion that can happen from many conditional + // assignments, since each conditional assignment doubles the number of + // bounds. + int x = 0; + if (c1) { x += 748596; } + if (c2) { x += 84652395; } + if (c3) { x += 3675895; } + if (c4) { x += 98634; } + if (c5) { x += 7834985; } + if (c1 && c2) { x += 938457398; } + if (c1 && c3) { x += 73895648; } + if (c1 && c4) { x += 12345432; } + if (c1 && c5) { x += 38847; } + if (c2 && c3) { x += 234; } + // x now has 2^10 bounds, the 10 additions below give (2^10)^10 bounds + int y = x + x + x + x + x + x + x + x + x + x + x + x; + return y; +} + // Test the comma expression. unsigned int test_comma01(unsigned int x) { unsigned int y = x < 100 ? x : 100; diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected index 8696ecfe8d09..7b056a8a3ee5 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected @@ -485,197 +485,529 @@ | test.c:411:59:411:59 | k | 0.889553 | | test.c:411:63:411:63 | l | 0.538434 | | test.c:413:10:413:15 | output | 9.284378 | -| test.c:418:20:418:20 | x | 4294967295 | -| test.c:418:30:418:30 | x | 99 | -| test.c:421:3:421:4 | y1 | 4294967295 | -| test.c:421:11:421:11 | y | 100 | -| test.c:421:14:421:14 | y | 101 | -| test.c:422:3:422:4 | y2 | 4294967295 | -| test.c:422:9:422:9 | y | 101 | -| test.c:422:14:422:14 | y | 102 | -| test.c:422:22:422:22 | y | 105 | -| test.c:423:10:423:11 | y1 | 101 | -| test.c:423:15:423:16 | y2 | 105 | -| test.c:431:3:431:3 | i | 2147483647 | -| test.c:432:7:432:7 | i | 10 | -| test.c:434:3:434:3 | i | 2147483647 | -| test.c:435:3:435:3 | i | 10 | -| test.c:436:7:436:7 | i | 20 | -| test.c:438:3:438:3 | i | 2147483647 | -| test.c:439:3:439:3 | i | 40 | -| test.c:440:7:440:7 | i | 30 | -| test.c:442:3:442:3 | i | 2147483647 | -| test.c:442:7:442:7 | j | 2147483647 | -| test.c:443:7:443:7 | i | 40 | -| test.c:445:3:445:3 | i | 2147483647 | -| test.c:445:8:445:8 | j | 40 | -| test.c:446:7:446:7 | i | 50 | -| test.c:448:3:448:3 | i | 2147483647 | -| test.c:448:13:448:13 | j | 50 | -| test.c:449:7:449:7 | i | 60 | -| test.c:456:12:456:12 | a | 4294967295 | -| test.c:456:17:456:17 | a | 4294967295 | -| test.c:456:33:456:33 | b | 4294967295 | -| test.c:456:38:456:38 | b | 4294967295 | -| test.c:457:13:457:13 | a | 11 | -| test.c:457:15:457:15 | b | 23 | -| test.c:458:5:458:9 | total | 0 | -| test.c:458:14:458:14 | r | 253 | -| test.c:460:12:460:12 | a | 4294967295 | -| test.c:460:17:460:17 | a | 4294967295 | -| test.c:460:33:460:33 | b | 4294967295 | -| test.c:460:38:460:38 | b | 4294967295 | -| test.c:461:13:461:13 | a | 11 | -| test.c:461:15:461:15 | b | 23 | -| test.c:462:5:462:9 | total | 253 | -| test.c:462:14:462:14 | r | 253 | -| test.c:464:12:464:12 | a | 4294967295 | -| test.c:464:17:464:17 | a | 4294967295 | -| test.c:464:34:464:34 | b | 4294967295 | -| test.c:464:39:464:39 | b | 4294967295 | -| test.c:465:13:465:13 | a | 11 | -| test.c:465:15:465:15 | b | 23 | -| test.c:466:5:466:9 | total | 506 | -| test.c:466:14:466:14 | r | 253 | -| test.c:469:10:469:14 | total | 759 | -| test.c:475:12:475:12 | b | 4294967295 | -| test.c:475:17:475:17 | b | 4294967295 | -| test.c:476:16:476:16 | b | 23 | -| test.c:477:5:477:9 | total | 0 | -| test.c:477:14:477:14 | r | 253 | -| test.c:479:12:479:12 | b | 4294967295 | -| test.c:479:17:479:17 | b | 4294967295 | -| test.c:480:16:480:16 | b | 23 | -| test.c:481:5:481:9 | total | 253 | -| test.c:481:14:481:14 | r | 253 | -| test.c:483:13:483:13 | b | 4294967295 | -| test.c:483:18:483:18 | b | 4294967295 | -| test.c:484:16:484:16 | b | 23 | -| test.c:485:5:485:9 | total | 506 | -| test.c:485:14:485:14 | r | 253 | -| test.c:488:10:488:14 | total | 759 | -| test.c:493:3:493:3 | x | 18446744073709551616 | -| test.c:493:7:493:7 | y | 18446744073709551616 | -| test.c:494:3:494:4 | xy | 18446744073709551616 | -| test.c:494:8:494:8 | x | 1000000003 | -| test.c:494:12:494:12 | y | 1000000003 | -| test.c:495:10:495:11 | xy | 1000000006000000000 | -| test.c:500:3:500:3 | x | 18446744073709551616 | -| test.c:501:3:501:3 | y | 18446744073709551616 | -| test.c:502:3:502:4 | xy | 18446744073709551616 | -| test.c:502:8:502:8 | x | 274177 | -| test.c:502:12:502:12 | y | 67280421310721 | -| test.c:503:10:503:11 | xy | 18446744073709551616 | -| test.c:507:7:507:8 | ui | 4294967295 | -| test.c:508:43:508:44 | ui | 4294967295 | -| test.c:508:48:508:49 | ui | 4294967295 | -| test.c:509:12:509:17 | result | 18446744065119617024 | -| test.c:511:7:511:8 | ul | 18446744073709551616 | -| test.c:512:28:512:29 | ul | 18446744073709551616 | -| test.c:512:33:512:34 | ul | 18446744073709551616 | -| test.c:513:12:513:17 | result | 18446744073709551616 | -| test.c:519:7:519:8 | ui | 4294967295 | -| test.c:519:19:519:20 | ui | 10 | -| test.c:520:5:520:6 | ui | 10 | -| test.c:520:11:520:12 | ui | 10 | -| test.c:521:12:521:13 | ui | 100 | -| test.c:525:3:525:9 | uiconst | 10 | -| test.c:528:3:528:9 | ulconst | 10 | -| test.c:529:10:529:16 | uiconst | 40 | -| test.c:529:20:529:26 | ulconst | 40 | -| test.c:533:7:533:7 | i | 2147483647 | -| test.c:533:18:533:18 | i | 2147483647 | -| test.c:534:5:534:5 | i | 2147483647 | -| test.c:534:13:534:13 | i | 2 | -| test.c:535:9:535:9 | i | 10 | -| test.c:537:5:537:5 | i | 2147483647 | -| test.c:537:9:537:9 | i | 10 | -| test.c:538:9:538:9 | i | 15 | -| test.c:540:5:540:5 | i | 15 | -| test.c:541:9:541:9 | i | 105 | -| test.c:543:5:543:5 | i | 105 | -| test.c:544:9:544:9 | i | 2310 | -| test.c:546:7:546:7 | i | 2147483647 | -| test.c:547:5:547:5 | i | 2147483647 | -| test.c:547:9:547:9 | i | -1 | -| test.c:548:9:548:9 | i | 1 | -| test.c:550:3:550:3 | i | 2147483647 | -| test.c:550:7:550:7 | i | 2147483647 | -| test.c:551:10:551:10 | i | 2147483647 | -| test.c:554:3:554:3 | i | 2147483647 | -| test.c:554:10:554:11 | sc | 1 | -| test.c:556:7:556:7 | i | 127 | -| test.c:563:7:563:7 | n | 4294967295 | -| test.c:565:7:565:7 | n | 4294967295 | -| test.c:566:9:566:9 | n | 4294967295 | -| test.c:569:7:569:7 | n | 4294967295 | -| test.c:570:9:570:9 | n | 4294967295 | -| test.c:572:9:572:9 | n | 0 | -| test.c:575:8:575:8 | n | 4294967295 | -| test.c:576:9:576:9 | n | 0 | -| test.c:578:9:578:9 | n | 4294967295 | -| test.c:581:10:581:10 | n | 4294967295 | -| test.c:582:5:582:5 | n | 4294967295 | -| test.c:585:7:585:7 | n | 0 | -| test.c:589:7:589:7 | n | 32767 | -| test.c:592:7:592:7 | n | 32767 | -| test.c:593:9:593:9 | n | 0 | -| test.c:595:9:595:9 | n | 32767 | -| test.c:598:7:598:7 | n | 32767 | -| test.c:599:9:599:9 | n | 32767 | -| test.c:601:9:601:9 | n | 0 | -| test.c:604:10:604:10 | n | 32767 | -| test.c:605:5:605:5 | n | 32767 | -| test.c:608:7:608:7 | n | 0 | -| test.c:612:7:612:7 | n | 32767 | -| test.c:613:9:613:9 | n | 32767 | -| test.c:614:11:614:11 | n | 32767 | -| test.c:618:7:618:7 | n | 32767 | -| test.c:619:13:619:13 | n | 32767 | -| test.c:622:9:622:9 | n | 32767 | -| test.c:625:7:625:7 | n | 32767 | -| test.c:625:22:625:22 | n | 32767 | -| test.c:626:9:626:9 | n | 32767 | -| test.c:629:7:629:7 | n | 32767 | -| test.c:630:5:630:5 | n | 32767 | -| test.c:630:10:630:10 | n | 32767 | -| test.c:630:14:630:14 | n | 0 | -| test.c:631:6:631:6 | n | 32767 | -| test.c:631:10:631:10 | n | 0 | -| test.c:631:14:631:14 | n | 32767 | -| test.c:642:7:642:8 | ss | 32767 | -| test.c:643:9:643:10 | ss | 3 | -| test.c:646:7:646:8 | ss | 32767 | -| test.c:647:9:647:10 | ss | 32767 | -| test.c:650:14:650:15 | us | 65535 | -| test.c:651:9:651:10 | us | 32767 | -| test.c:654:14:654:15 | us | 65535 | -| test.c:655:9:655:10 | us | 65535 | -| test.c:658:7:658:8 | ss | 32767 | -| test.c:659:9:659:10 | ss | 32767 | -| test.c:662:7:662:8 | ss | 32767 | -| test.c:663:9:663:10 | ss | 2 | -| test.c:669:8:669:8 | s | 2147483647 | -| test.c:669:15:669:15 | s | 127 | -| test.c:669:23:669:23 | s | 9 | -| test.c:670:18:670:18 | s | 9 | -| test.c:670:22:670:22 | s | 9 | -| test.c:671:9:671:14 | result | 127 | -| test.c:677:7:677:7 | i | 0 | -| test.c:678:9:678:9 | i | 2147483647 | -| test.c:682:7:682:7 | u | 0 | -| test.c:683:9:683:9 | u | 4294967295 | -| test.c:688:12:688:12 | s | 2147483647 | -| test.c:689:7:689:8 | s2 | 4 | -| test.c:694:7:694:7 | x | 2147483647 | -| test.c:695:9:695:9 | y | 2147483647 | -| test.c:699:7:699:7 | y | 2147483647 | -| test.c:708:7:708:7 | x | 2147483647 | -| test.c:713:7:713:7 | x | 15 | -| test.c:720:8:720:8 | x | 2147483647 | -| test.c:720:12:720:12 | y | 256 | -| test.c:721:9:721:9 | x | 2147483647 | -| test.c:722:9:722:9 | y | 256 | +| test.c:420:7:420:9 | rhs | 4294967295 | +| test.c:420:19:420:21 | rhs | 11 | +| test.c:421:7:421:9 | rhs | 4294967295 | +| test.c:421:19:421:21 | rhs | 12 | +| test.c:422:7:422:9 | rhs | 4294967295 | +| test.c:422:19:422:21 | rhs | 13 | +| test.c:423:7:423:9 | rhs | 4294967295 | +| test.c:423:19:423:21 | rhs | 14 | +| test.c:424:7:424:9 | rhs | 4294967295 | +| test.c:424:19:424:21 | rhs | 15 | +| test.c:425:10:425:12 | rhs | 4294967295 | +| test.c:429:7:429:7 | a | 2147483647 | +| test.c:430:9:430:9 | b | 2147483647 | +| test.c:431:7:431:7 | a | 17 | +| test.c:431:12:431:12 | b | 23 | +| test.c:433:9:433:9 | a | 40 | +| test.c:434:7:434:7 | b | 2147483647 | +| test.c:439:11:439:11 | a | 2147483647 | +| test.c:439:15:439:15 | b | 2147483647 | +| test.c:440:10:440:10 | a | 2147483647 | +| test.c:440:14:440:14 | b | 2147483647 | +| test.c:447:10:447:11 | ip | 4294967295 | +| test.c:447:20:447:21 | ip | 4294967295 | +| test.c:447:40:447:41 | ip | 4294967295 | +| test.c:448:14:448:15 | ip | 4294967295 | +| test.c:449:14:449:15 | ip | 4294967295 | +| test.c:449:34:449:35 | ip | 4294967295 | +| test.c:450:11:450:12 | ip | 4294967295 | +| test.c:451:13:451:14 | ip | 4294967295 | +| test.c:452:14:452:15 | ip | 4294967295 | +| test.c:453:14:453:15 | ip | 4294967295 | +| test.c:454:15:454:16 | ip | 4294967295 | +| test.c:454:41:454:42 | ip | 4294967295 | +| test.c:454:52:454:53 | ip | 4294967295 | +| test.c:454:67:454:68 | ip | 4294967295 | +| test.c:454:78:454:79 | ip | 4294967295 | +| test.c:455:18:455:19 | ip | 4294967295 | +| test.c:456:23:456:24 | ip | 4294967295 | +| test.c:456:34:456:35 | ip | 4294967295 | +| test.c:457:25:457:26 | ip | 4294967295 | +| test.c:458:20:458:21 | ip | 4294967295 | +| test.c:459:11:459:12 | ip | 4294967295 | +| test.c:459:26:459:27 | ip | 4294967295 | +| test.c:460:16:460:17 | ip | 4294967295 | +| test.c:461:16:461:17 | ip | 4294967295 | +| test.c:462:16:462:17 | ip | 4294967295 | +| test.c:463:17:463:18 | ip | 4294967295 | +| test.c:464:22:464:23 | ip | 4294967295 | +| test.c:464:33:464:34 | ip | 4294967295 | +| test.c:464:48:464:49 | ip | 4294967295 | +| test.c:464:59:464:60 | ip | 4294967295 | +| test.c:465:20:465:21 | ip | 4294967295 | +| test.c:466:25:466:26 | ip | 4294967295 | +| test.c:466:36:466:37 | ip | 4294967295 | +| test.c:467:27:467:28 | ip | 4294967295 | +| test.c:468:22:468:23 | ip | 4294967295 | +| test.c:469:15:469:16 | ip | 4294967295 | +| test.c:469:30:469:31 | ip | 4294967295 | +| test.c:470:11:470:12 | ip | 4294967295 | +| test.c:471:12:471:13 | ip | 4294967295 | +| test.c:472:12:472:13 | ip | 4294967295 | +| test.c:473:13:473:14 | ip | 4294967295 | +| test.c:473:39:473:40 | ip | 4294967295 | +| test.c:473:50:473:51 | ip | 4294967295 | +| test.c:473:65:473:66 | ip | 4294967295 | +| test.c:473:76:473:77 | ip | 4294967295 | +| test.c:474:16:474:17 | ip | 4294967295 | +| test.c:475:21:475:22 | ip | 4294967295 | +| test.c:475:32:475:33 | ip | 4294967295 | +| test.c:476:23:476:24 | ip | 4294967295 | +| test.c:477:18:477:19 | ip | 4294967295 | +| test.c:478:11:478:12 | ip | 4294967295 | +| test.c:478:17:478:18 | ip | 4294967295 | +| test.c:478:37:478:38 | ip | 4294967295 | +| test.c:478:43:478:44 | ip | 4294967295 | +| test.c:479:14:479:15 | ip | 4294967295 | +| test.c:480:14:480:15 | ip | 4294967295 | +| test.c:481:14:481:15 | ip | 4294967295 | +| test.c:482:15:482:16 | ip | 4294967295 | +| test.c:482:41:482:42 | ip | 4294967295 | +| test.c:482:52:482:53 | ip | 4294967295 | +| test.c:482:67:482:68 | ip | 4294967295 | +| test.c:482:78:482:79 | ip | 4294967295 | +| test.c:483:18:483:19 | ip | 4294967295 | +| test.c:484:23:484:24 | ip | 4294967295 | +| test.c:484:34:484:35 | ip | 4294967295 | +| test.c:485:25:485:26 | ip | 4294967295 | +| test.c:486:20:486:21 | ip | 4294967295 | +| test.c:487:14:487:15 | ip | 4294967295 | +| test.c:487:20:487:21 | ip | 4294967295 | +| test.c:488:16:488:17 | ip | 4294967295 | +| test.c:489:12:489:13 | ip | 4294967295 | +| test.c:490:14:490:15 | ip | 4294967295 | +| test.c:491:15:491:16 | ip | 4294967295 | +| test.c:492:16:492:17 | ip | 4294967295 | +| test.c:493:16:493:17 | ip | 4294967295 | +| test.c:494:17:494:18 | ip | 4294967295 | +| test.c:495:22:495:23 | ip | 4294967295 | +| test.c:495:33:495:34 | ip | 4294967295 | +| test.c:495:48:495:49 | ip | 4294967295 | +| test.c:495:59:495:60 | ip | 4294967295 | +| test.c:496:20:496:21 | ip | 4294967295 | +| test.c:497:25:497:26 | ip | 4294967295 | +| test.c:497:36:497:37 | ip | 4294967295 | +| test.c:498:27:498:28 | ip | 4294967295 | +| test.c:499:22:499:23 | ip | 4294967295 | +| test.c:500:13:500:14 | ip | 4294967295 | +| test.c:500:28:500:29 | ip | 4294967295 | +| test.c:501:18:501:19 | ip | 4294967295 | +| test.c:502:18:502:19 | ip | 4294967295 | +| test.c:503:18:503:19 | ip | 4294967295 | +| test.c:504:19:504:20 | ip | 4294967295 | +| test.c:505:24:505:25 | ip | 4294967295 | +| test.c:505:35:505:36 | ip | 4294967295 | +| test.c:505:50:505:51 | ip | 4294967295 | +| test.c:505:61:505:62 | ip | 4294967295 | +| test.c:506:22:506:23 | ip | 4294967295 | +| test.c:507:27:507:28 | ip | 4294967295 | +| test.c:507:38:507:39 | ip | 4294967295 | +| test.c:508:29:508:30 | ip | 4294967295 | +| test.c:509:24:509:25 | ip | 4294967295 | +| test.c:510:17:510:18 | ip | 4294967295 | +| test.c:510:32:510:33 | ip | 4294967295 | +| test.c:511:14:511:15 | ip | 4294967295 | +| test.c:512:18:512:19 | ip | 4294967295 | +| test.c:513:18:513:19 | ip | 4294967295 | +| test.c:514:19:514:20 | ip | 4294967295 | +| test.c:515:24:515:25 | ip | 4294967295 | +| test.c:515:35:515:36 | ip | 4294967295 | +| test.c:515:50:515:51 | ip | 4294967295 | +| test.c:515:61:515:62 | ip | 4294967295 | +| test.c:516:22:516:23 | ip | 4294967295 | +| test.c:517:27:517:28 | ip | 4294967295 | +| test.c:517:38:517:39 | ip | 4294967295 | +| test.c:518:29:518:30 | ip | 4294967295 | +| test.c:519:24:519:25 | ip | 4294967295 | +| test.c:520:17:520:18 | ip | 4294967295 | +| test.c:520:23:520:24 | ip | 4294967295 | +| test.c:520:43:520:44 | ip | 4294967295 | +| test.c:520:49:520:50 | ip | 4294967295 | +| test.c:521:16:521:17 | ip | 4294967295 | +| test.c:522:16:522:17 | ip | 4294967295 | +| test.c:523:16:523:17 | ip | 4294967295 | +| test.c:524:17:524:18 | ip | 4294967295 | +| test.c:525:22:525:23 | ip | 4294967295 | +| test.c:525:33:525:34 | ip | 4294967295 | +| test.c:525:48:525:49 | ip | 4294967295 | +| test.c:525:59:525:60 | ip | 4294967295 | +| test.c:526:20:526:21 | ip | 4294967295 | +| test.c:527:25:527:26 | ip | 4294967295 | +| test.c:527:36:527:37 | ip | 4294967295 | +| test.c:528:27:528:28 | ip | 4294967295 | +| test.c:529:22:529:23 | ip | 4294967295 | +| test.c:530:16:530:17 | ip | 4294967295 | +| test.c:530:22:530:23 | ip | 4294967295 | +| test.c:531:18:531:19 | ip | 4294967295 | +| test.c:532:14:532:15 | ip | 4294967295 | +| test.c:533:14:533:15 | ip | 4294967295 | +| test.c:533:24:533:25 | ip | 4294967295 | +| test.c:533:44:533:45 | ip | 4294967295 | +| test.c:534:16:534:17 | ip | 4294967295 | +| test.c:535:16:535:17 | ip | 4294967295 | +| test.c:535:36:535:37 | ip | 4294967295 | +| test.c:536:14:536:15 | ip | 4294967295 | +| test.c:537:19:537:20 | ip | 4294967295 | +| test.c:538:20:538:21 | ip | 4294967295 | +| test.c:539:20:539:21 | ip | 4294967295 | +| test.c:540:21:540:22 | ip | 4294967295 | +| test.c:541:26:541:27 | ip | 4294967295 | +| test.c:541:37:541:38 | ip | 4294967295 | +| test.c:541:52:541:53 | ip | 4294967295 | +| test.c:541:63:541:64 | ip | 4294967295 | +| test.c:542:24:542:25 | ip | 4294967295 | +| test.c:543:29:543:30 | ip | 4294967295 | +| test.c:543:40:543:41 | ip | 4294967295 | +| test.c:544:31:544:32 | ip | 4294967295 | +| test.c:545:26:545:27 | ip | 4294967295 | +| test.c:546:17:546:18 | ip | 4294967295 | +| test.c:546:32:546:33 | ip | 4294967295 | +| test.c:547:22:547:23 | ip | 4294967295 | +| test.c:548:22:548:23 | ip | 4294967295 | +| test.c:549:22:549:23 | ip | 4294967295 | +| test.c:550:23:550:24 | ip | 4294967295 | +| test.c:551:28:551:29 | ip | 4294967295 | +| test.c:551:39:551:40 | ip | 4294967295 | +| test.c:551:54:551:55 | ip | 4294967295 | +| test.c:551:65:551:66 | ip | 4294967295 | +| test.c:552:26:552:27 | ip | 4294967295 | +| test.c:553:31:553:32 | ip | 4294967295 | +| test.c:553:42:553:43 | ip | 4294967295 | +| test.c:554:33:554:34 | ip | 4294967295 | +| test.c:555:28:555:29 | ip | 4294967295 | +| test.c:556:21:556:22 | ip | 4294967295 | +| test.c:556:36:556:37 | ip | 4294967295 | +| test.c:557:17:557:18 | ip | 4294967295 | +| test.c:558:18:558:19 | ip | 4294967295 | +| test.c:559:18:559:19 | ip | 4294967295 | +| test.c:560:19:560:20 | ip | 4294967295 | +| test.c:561:24:561:25 | ip | 4294967295 | +| test.c:561:35:561:36 | ip | 4294967295 | +| test.c:561:50:561:51 | ip | 4294967295 | +| test.c:561:61:561:62 | ip | 4294967295 | +| test.c:562:22:562:23 | ip | 4294967295 | +| test.c:563:27:563:28 | ip | 4294967295 | +| test.c:563:38:563:39 | ip | 4294967295 | +| test.c:564:29:564:30 | ip | 4294967295 | +| test.c:565:24:565:25 | ip | 4294967295 | +| test.c:566:17:566:18 | ip | 4294967295 | +| test.c:566:23:566:24 | ip | 4294967295 | +| test.c:566:43:566:44 | ip | 4294967295 | +| test.c:566:49:566:50 | ip | 4294967295 | +| test.c:567:20:567:21 | ip | 4294967295 | +| test.c:568:20:568:21 | ip | 4294967295 | +| test.c:569:20:569:21 | ip | 4294967295 | +| test.c:570:21:570:22 | ip | 4294967295 | +| test.c:571:26:571:27 | ip | 4294967295 | +| test.c:571:37:571:38 | ip | 4294967295 | +| test.c:571:52:571:53 | ip | 4294967295 | +| test.c:571:63:571:64 | ip | 4294967295 | +| test.c:572:24:572:25 | ip | 4294967295 | +| test.c:573:29:573:30 | ip | 4294967295 | +| test.c:573:40:573:41 | ip | 4294967295 | +| test.c:574:31:574:32 | ip | 4294967295 | +| test.c:575:26:575:27 | ip | 4294967295 | +| test.c:576:20:576:21 | ip | 4294967295 | +| test.c:576:26:576:27 | ip | 4294967295 | +| test.c:577:22:577:23 | ip | 4294967295 | +| test.c:578:18:578:19 | ip | 4294967295 | +| test.c:579:16:579:17 | ip | 4294967295 | +| test.c:580:17:580:18 | ip | 4294967295 | +| test.c:581:18:581:19 | ip | 4294967295 | +| test.c:582:18:582:19 | ip | 4294967295 | +| test.c:583:19:583:20 | ip | 4294967295 | +| test.c:584:24:584:25 | ip | 4294967295 | +| test.c:584:35:584:36 | ip | 4294967295 | +| test.c:584:50:584:51 | ip | 4294967295 | +| test.c:584:61:584:62 | ip | 4294967295 | +| test.c:585:22:585:23 | ip | 4294967295 | +| test.c:586:27:586:28 | ip | 4294967295 | +| test.c:586:38:586:39 | ip | 4294967295 | +| test.c:587:29:587:30 | ip | 4294967295 | +| test.c:588:24:588:25 | ip | 4294967295 | +| test.c:589:15:589:16 | ip | 4294967295 | +| test.c:589:30:589:31 | ip | 4294967295 | +| test.c:590:20:590:21 | ip | 4294967295 | +| test.c:591:20:591:21 | ip | 4294967295 | +| test.c:592:20:592:21 | ip | 4294967295 | +| test.c:593:21:593:22 | ip | 4294967295 | +| test.c:594:26:594:27 | ip | 4294967295 | +| test.c:594:37:594:38 | ip | 4294967295 | +| test.c:594:52:594:53 | ip | 4294967295 | +| test.c:594:63:594:64 | ip | 4294967295 | +| test.c:595:24:595:25 | ip | 4294967295 | +| test.c:596:29:596:30 | ip | 4294967295 | +| test.c:596:40:596:41 | ip | 4294967295 | +| test.c:597:31:597:32 | ip | 4294967295 | +| test.c:598:26:598:27 | ip | 4294967295 | +| test.c:599:19:599:20 | ip | 4294967295 | +| test.c:599:34:599:35 | ip | 4294967295 | +| test.c:600:16:600:17 | ip | 4294967295 | +| test.c:601:20:601:21 | ip | 4294967295 | +| test.c:602:20:602:21 | ip | 4294967295 | +| test.c:603:21:603:22 | ip | 4294967295 | +| test.c:604:26:604:27 | ip | 4294967295 | +| test.c:604:37:604:38 | ip | 4294967295 | +| test.c:604:52:604:53 | ip | 4294967295 | +| test.c:604:63:604:64 | ip | 4294967295 | +| test.c:605:24:605:25 | ip | 4294967295 | +| test.c:606:29:606:30 | ip | 4294967295 | +| test.c:606:40:606:41 | ip | 4294967295 | +| test.c:607:31:607:32 | ip | 4294967295 | +| test.c:608:26:608:27 | ip | 4294967295 | +| test.c:609:19:609:20 | ip | 4294967295 | +| test.c:609:25:609:26 | ip | 4294967295 | +| test.c:609:45:609:46 | ip | 4294967295 | +| test.c:609:51:609:52 | ip | 4294967295 | +| test.c:610:18:610:19 | ip | 4294967295 | +| test.c:611:18:611:19 | ip | 4294967295 | +| test.c:612:18:612:19 | ip | 4294967295 | +| test.c:613:19:613:20 | ip | 4294967295 | +| test.c:614:24:614:25 | ip | 4294967295 | +| test.c:614:35:614:36 | ip | 4294967295 | +| test.c:614:50:614:51 | ip | 4294967295 | +| test.c:614:61:614:62 | ip | 4294967295 | +| test.c:615:22:615:23 | ip | 4294967295 | +| test.c:616:27:616:28 | ip | 4294967295 | +| test.c:616:38:616:39 | ip | 4294967295 | +| test.c:617:29:617:30 | ip | 4294967295 | +| test.c:618:24:618:25 | ip | 4294967295 | +| test.c:619:18:619:19 | ip | 4294967295 | +| test.c:619:24:619:25 | ip | 4294967295 | +| test.c:620:20:620:21 | ip | 4294967295 | +| test.c:621:16:621:17 | ip | 4294967295 | +| test.c:622:10:622:23 | special_number | 4294967295 | +| test.c:630:7:630:8 | c1 | 2147483647 | +| test.c:630:13:630:13 | x | 0 | +| test.c:631:7:631:8 | c2 | 2147483647 | +| test.c:631:13:631:13 | x | 748596 | +| test.c:632:7:632:8 | c3 | 2147483647 | +| test.c:632:13:632:13 | x | 85400991 | +| test.c:633:7:633:8 | c4 | 2147483647 | +| test.c:633:13:633:13 | x | 89076886 | +| test.c:634:7:634:8 | c5 | 2147483647 | +| test.c:634:13:634:13 | x | 89175520 | +| test.c:635:7:635:8 | c1 | 2147483647 | +| test.c:635:13:635:14 | c2 | 2147483647 | +| test.c:635:19:635:19 | x | 97010505 | +| test.c:636:7:636:8 | c1 | 2147483647 | +| test.c:636:13:636:14 | c3 | 2147483647 | +| test.c:636:19:636:19 | x | 1035467903 | +| test.c:637:7:637:8 | c1 | 2147483647 | +| test.c:637:13:637:14 | c4 | 2147483647 | +| test.c:637:19:637:19 | x | 1109363551 | +| test.c:638:7:638:8 | c1 | 2147483647 | +| test.c:638:13:638:14 | c5 | 2147483647 | +| test.c:638:19:638:19 | x | 1121708983 | +| test.c:639:7:639:8 | c2 | 2147483647 | +| test.c:639:13:639:14 | c3 | 2147483647 | +| test.c:639:19:639:19 | x | 1121747830 | +| test.c:641:11:641:11 | x | 2147483647 | +| test.c:641:15:641:15 | x | 2147483647 | +| test.c:641:19:641:19 | x | 2147483647 | +| test.c:641:23:641:23 | x | 2147483647 | +| test.c:641:27:641:27 | x | 2147483647 | +| test.c:641:31:641:31 | x | 2147483647 | +| test.c:641:35:641:35 | x | 2147483647 | +| test.c:641:39:641:39 | x | 2147483647 | +| test.c:641:43:641:43 | x | 2147483647 | +| test.c:641:47:641:47 | x | 2147483647 | +| test.c:641:51:641:51 | x | 2147483647 | +| test.c:641:55:641:55 | x | 2147483647 | +| test.c:642:10:642:10 | y | 2147483647 | +| test.c:647:20:647:20 | x | 4294967295 | +| test.c:647:30:647:30 | x | 99 | +| test.c:650:3:650:4 | y1 | 4294967295 | +| test.c:650:11:650:11 | y | 100 | +| test.c:650:14:650:14 | y | 101 | +| test.c:651:3:651:4 | y2 | 4294967295 | +| test.c:651:9:651:9 | y | 101 | +| test.c:651:14:651:14 | y | 102 | +| test.c:651:22:651:22 | y | 105 | +| test.c:652:10:652:11 | y1 | 101 | +| test.c:652:15:652:16 | y2 | 105 | +| test.c:660:3:660:3 | i | 2147483647 | +| test.c:661:7:661:7 | i | 10 | +| test.c:663:3:663:3 | i | 2147483647 | +| test.c:664:3:664:3 | i | 10 | +| test.c:665:7:665:7 | i | 20 | +| test.c:667:3:667:3 | i | 2147483647 | +| test.c:668:3:668:3 | i | 40 | +| test.c:669:7:669:7 | i | 30 | +| test.c:671:3:671:3 | i | 2147483647 | +| test.c:671:7:671:7 | j | 2147483647 | +| test.c:672:7:672:7 | i | 40 | +| test.c:674:3:674:3 | i | 2147483647 | +| test.c:674:8:674:8 | j | 40 | +| test.c:675:7:675:7 | i | 50 | +| test.c:677:3:677:3 | i | 2147483647 | +| test.c:677:13:677:13 | j | 50 | +| test.c:678:7:678:7 | i | 60 | +| test.c:685:12:685:12 | a | 4294967295 | +| test.c:685:17:685:17 | a | 4294967295 | +| test.c:685:33:685:33 | b | 4294967295 | +| test.c:685:38:685:38 | b | 4294967295 | +| test.c:686:13:686:13 | a | 11 | +| test.c:686:15:686:15 | b | 23 | +| test.c:687:5:687:9 | total | 0 | +| test.c:687:14:687:14 | r | 253 | +| test.c:689:12:689:12 | a | 4294967295 | +| test.c:689:17:689:17 | a | 4294967295 | +| test.c:689:33:689:33 | b | 4294967295 | +| test.c:689:38:689:38 | b | 4294967295 | +| test.c:690:13:690:13 | a | 11 | +| test.c:690:15:690:15 | b | 23 | +| test.c:691:5:691:9 | total | 253 | +| test.c:691:14:691:14 | r | 253 | +| test.c:693:12:693:12 | a | 4294967295 | +| test.c:693:17:693:17 | a | 4294967295 | +| test.c:693:34:693:34 | b | 4294967295 | +| test.c:693:39:693:39 | b | 4294967295 | +| test.c:694:13:694:13 | a | 11 | +| test.c:694:15:694:15 | b | 23 | +| test.c:695:5:695:9 | total | 506 | +| test.c:695:14:695:14 | r | 253 | +| test.c:698:10:698:14 | total | 759 | +| test.c:704:12:704:12 | b | 4294967295 | +| test.c:704:17:704:17 | b | 4294967295 | +| test.c:705:16:705:16 | b | 23 | +| test.c:706:5:706:9 | total | 0 | +| test.c:706:14:706:14 | r | 253 | +| test.c:708:12:708:12 | b | 4294967295 | +| test.c:708:17:708:17 | b | 4294967295 | +| test.c:709:16:709:16 | b | 23 | +| test.c:710:5:710:9 | total | 253 | +| test.c:710:14:710:14 | r | 253 | +| test.c:712:13:712:13 | b | 4294967295 | +| test.c:712:18:712:18 | b | 4294967295 | +| test.c:713:16:713:16 | b | 23 | +| test.c:714:5:714:9 | total | 506 | +| test.c:714:14:714:14 | r | 253 | +| test.c:717:10:717:14 | total | 759 | +| test.c:722:3:722:3 | x | 18446744073709551616 | +| test.c:722:7:722:7 | y | 18446744073709551616 | +| test.c:723:3:723:4 | xy | 18446744073709551616 | +| test.c:723:8:723:8 | x | 1000000003 | +| test.c:723:12:723:12 | y | 1000000003 | +| test.c:724:10:724:11 | xy | 1000000006000000000 | +| test.c:729:3:729:3 | x | 18446744073709551616 | +| test.c:730:3:730:3 | y | 18446744073709551616 | +| test.c:731:3:731:4 | xy | 18446744073709551616 | +| test.c:731:8:731:8 | x | 274177 | +| test.c:731:12:731:12 | y | 67280421310721 | +| test.c:732:10:732:11 | xy | 18446744073709551616 | +| test.c:736:7:736:8 | ui | 4294967295 | +| test.c:737:43:737:44 | ui | 4294967295 | +| test.c:737:48:737:49 | ui | 4294967295 | +| test.c:738:12:738:17 | result | 18446744065119617024 | +| test.c:740:7:740:8 | ul | 18446744073709551616 | +| test.c:741:28:741:29 | ul | 18446744073709551616 | +| test.c:741:33:741:34 | ul | 18446744073709551616 | +| test.c:742:12:742:17 | result | 18446744073709551616 | +| test.c:748:7:748:8 | ui | 4294967295 | +| test.c:748:19:748:20 | ui | 10 | +| test.c:749:5:749:6 | ui | 10 | +| test.c:749:11:749:12 | ui | 10 | +| test.c:750:12:750:13 | ui | 100 | +| test.c:754:3:754:9 | uiconst | 10 | +| test.c:757:3:757:9 | ulconst | 10 | +| test.c:758:10:758:16 | uiconst | 40 | +| test.c:758:20:758:26 | ulconst | 40 | +| test.c:762:7:762:7 | i | 2147483647 | +| test.c:762:18:762:18 | i | 2147483647 | +| test.c:763:5:763:5 | i | 2147483647 | +| test.c:763:13:763:13 | i | 2 | +| test.c:764:9:764:9 | i | 10 | +| test.c:766:5:766:5 | i | 2147483647 | +| test.c:766:9:766:9 | i | 10 | +| test.c:767:9:767:9 | i | 15 | +| test.c:769:5:769:5 | i | 15 | +| test.c:770:9:770:9 | i | 105 | +| test.c:772:5:772:5 | i | 105 | +| test.c:773:9:773:9 | i | 2310 | +| test.c:775:7:775:7 | i | 2147483647 | +| test.c:776:5:776:5 | i | 2147483647 | +| test.c:776:9:776:9 | i | -1 | +| test.c:777:9:777:9 | i | 1 | +| test.c:779:3:779:3 | i | 2147483647 | +| test.c:779:7:779:7 | i | 2147483647 | +| test.c:780:10:780:10 | i | 2147483647 | +| test.c:783:3:783:3 | i | 2147483647 | +| test.c:783:10:783:11 | sc | 1 | +| test.c:785:7:785:7 | i | 127 | +| test.c:792:7:792:7 | n | 4294967295 | +| test.c:794:7:794:7 | n | 4294967295 | +| test.c:795:9:795:9 | n | 4294967295 | +| test.c:798:7:798:7 | n | 4294967295 | +| test.c:799:9:799:9 | n | 4294967295 | +| test.c:801:9:801:9 | n | 0 | +| test.c:804:8:804:8 | n | 4294967295 | +| test.c:805:9:805:9 | n | 0 | +| test.c:807:9:807:9 | n | 4294967295 | +| test.c:810:10:810:10 | n | 4294967295 | +| test.c:811:5:811:5 | n | 4294967295 | +| test.c:814:7:814:7 | n | 0 | +| test.c:818:7:818:7 | n | 32767 | +| test.c:821:7:821:7 | n | 32767 | +| test.c:822:9:822:9 | n | 0 | +| test.c:824:9:824:9 | n | 32767 | +| test.c:827:7:827:7 | n | 32767 | +| test.c:828:9:828:9 | n | 32767 | +| test.c:830:9:830:9 | n | 0 | +| test.c:833:10:833:10 | n | 32767 | +| test.c:834:5:834:5 | n | 32767 | +| test.c:837:7:837:7 | n | 0 | +| test.c:841:7:841:7 | n | 32767 | +| test.c:842:9:842:9 | n | 32767 | +| test.c:843:11:843:11 | n | 32767 | +| test.c:847:7:847:7 | n | 32767 | +| test.c:848:13:848:13 | n | 32767 | +| test.c:851:9:851:9 | n | 32767 | +| test.c:854:7:854:7 | n | 32767 | +| test.c:854:22:854:22 | n | 32767 | +| test.c:855:9:855:9 | n | 32767 | +| test.c:858:7:858:7 | n | 32767 | +| test.c:859:5:859:5 | n | 32767 | +| test.c:859:10:859:10 | n | 32767 | +| test.c:859:14:859:14 | n | 0 | +| test.c:860:6:860:6 | n | 32767 | +| test.c:860:10:860:10 | n | 0 | +| test.c:860:14:860:14 | n | 32767 | +| test.c:871:7:871:8 | ss | 32767 | +| test.c:872:9:872:10 | ss | 3 | +| test.c:875:7:875:8 | ss | 32767 | +| test.c:876:9:876:10 | ss | 32767 | +| test.c:879:14:879:15 | us | 65535 | +| test.c:880:9:880:10 | us | 32767 | +| test.c:883:14:883:15 | us | 65535 | +| test.c:884:9:884:10 | us | 65535 | +| test.c:887:7:887:8 | ss | 32767 | +| test.c:888:9:888:10 | ss | 32767 | +| test.c:891:7:891:8 | ss | 32767 | +| test.c:892:9:892:10 | ss | 2 | +| test.c:898:8:898:8 | s | 2147483647 | +| test.c:898:15:898:15 | s | 127 | +| test.c:898:23:898:23 | s | 9 | +| test.c:899:18:899:18 | s | 9 | +| test.c:899:22:899:22 | s | 9 | +| test.c:900:9:900:14 | result | 127 | +| test.c:906:7:906:7 | i | 0 | +| test.c:907:9:907:9 | i | 2147483647 | +| test.c:911:7:911:7 | u | 0 | +| test.c:912:9:912:9 | u | 4294967295 | +| test.c:917:12:917:12 | s | 2147483647 | +| test.c:918:7:918:8 | s2 | 4 | +| test.c:923:7:923:7 | x | 2147483647 | +| test.c:924:9:924:9 | y | 2147483647 | +| test.c:928:7:928:7 | y | 2147483647 | +| test.c:937:7:937:7 | x | 2147483647 | +| test.c:942:7:942:7 | x | 15 | +| test.c:949:8:949:8 | x | 2147483647 | +| test.c:949:12:949:12 | y | 256 | +| test.c:950:9:950:9 | x | 2147483647 | +| test.c:951:9:951:9 | y | 256 | | test.cpp:10:7:10:7 | b | 2147483647 | | test.cpp:11:5:11:5 | x | 2147483647 | | test.cpp:13:10:13:10 | x | 2147483647 | diff --git a/cpp/ql/test/library-tests/types/sizeof/sizeof.expected b/cpp/ql/test/library-tests/types/sizeof/sizeof.expected index c0d075126dfc..ac55caf5a021 100644 --- a/cpp/ql/test/library-tests/types/sizeof/sizeof.expected +++ b/cpp/ql/test/library-tests/types/sizeof/sizeof.expected @@ -1,10 +1,16 @@ -| sizeof.cpp:19:15:19:25 | sizeof(int) | 4 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int | -| sizeof.cpp:20:15:20:26 | sizeof(char) | 1 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | char | -| sizeof.cpp:21:15:21:27 | sizeof(int *) | 8 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int * | -| sizeof.cpp:22:15:22:29 | sizeof(MyClass) | 16 | SizeofTypeOperator.getTypeOperand() | sizeof.cpp:4:7:4:13 | MyClass | +| sizeof.cpp:19:15:19:25 | sizeof(int) | 4 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | int | +| sizeof.cpp:20:15:20:26 | sizeof(char) | 1 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | char | +| sizeof.cpp:21:15:21:27 | sizeof(int *) | 8 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | int * | +| sizeof.cpp:22:15:22:29 | sizeof(MyClass) | 16 | SizeofOperator.getTypeOperand() | sizeof.cpp:4:7:4:13 | MyClass | | sizeof.cpp:23:15:23:23 | sizeof() | 4 | SizeofExprOperator.getExprOperand() | sizeof.cpp:23:22:23:22 | i | +| sizeof.cpp:23:15:23:23 | sizeof() | 4 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | int | | sizeof.cpp:24:15:24:23 | sizeof() | 1 | SizeofExprOperator.getExprOperand() | sizeof.cpp:24:22:24:22 | c | +| sizeof.cpp:24:15:24:23 | sizeof() | 1 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | char | | sizeof.cpp:25:15:25:25 | sizeof() | 8 | SizeofExprOperator.getExprOperand() | sizeof.cpp:25:22:25:24 | ptr | +| sizeof.cpp:25:15:25:25 | sizeof() | 8 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | int * | | sizeof.cpp:26:15:26:24 | sizeof() | 16 | SizeofExprOperator.getExprOperand() | sizeof.cpp:26:22:26:23 | mc | +| sizeof.cpp:26:15:26:24 | sizeof() | 16 | SizeofOperator.getTypeOperand() | sizeof.cpp:4:7:4:13 | MyClass | | sizeof.cpp:27:15:27:25 | sizeof() | 40 | SizeofExprOperator.getExprOperand() | sizeof.cpp:27:22:27:24 | arr | +| sizeof.cpp:27:15:27:25 | sizeof() | 40 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | int[10] | | sizeof.cpp:28:16:28:29 | sizeof() | 4 | SizeofExprOperator.getExprOperand() | sizeof.cpp:28:23:28:28 | access to array | +| sizeof.cpp:28:16:28:29 | sizeof() | 4 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | int | diff --git a/cpp/ql/test/library-tests/types/sizeof/sizeof.ql b/cpp/ql/test/library-tests/types/sizeof/sizeof.ql index 531f55ee45c8..31834e0180fe 100644 --- a/cpp/ql/test/library-tests/types/sizeof/sizeof.ql +++ b/cpp/ql/test/library-tests/types/sizeof/sizeof.ql @@ -2,8 +2,8 @@ import cpp from SizeofOperator sto, string elemDesc, Element e where - elemDesc = "SizeofTypeOperator.getTypeOperand()" and - e = sto.(SizeofTypeOperator).getTypeOperand() + elemDesc = "SizeofOperator.getTypeOperand()" and + e = sto.getTypeOperand() or elemDesc = "SizeofExprOperator.getExprOperand()" and e = sto.(SizeofExprOperator).getExprOperand() diff --git a/cpp/ql/test/library-tests/variables/variables/variable.expected b/cpp/ql/test/library-tests/variables/variables/variable.expected index 1ef5902a9a88..c6ada1f36157 100644 --- a/cpp/ql/test/library-tests/variables/variables/variable.expected +++ b/cpp/ql/test/library-tests/variables/variables/variable.expected @@ -2,10 +2,10 @@ | file://:0:0:0:0 | (unnamed parameter 0) | file://:0:0:0:0 | address && | SemanticStackVariable | | | | file://:0:0:0:0 | (unnamed parameter 0) | file://:0:0:0:0 | const __va_list_tag & | SemanticStackVariable | | | | file://:0:0:0:0 | (unnamed parameter 0) | file://:0:0:0:0 | const address & | SemanticStackVariable | | | -| file://:0:0:0:0 | fp_offset | file://:0:0:0:0 | unsigned int | Field | | | -| file://:0:0:0:0 | gp_offset | file://:0:0:0:0 | unsigned int | Field | | | -| file://:0:0:0:0 | overflow_arg_area | file://:0:0:0:0 | void * | Field | | | -| file://:0:0:0:0 | reg_save_area | file://:0:0:0:0 | void * | Field | | | +| file://:0:0:0:0 | fp_offset | file://:0:0:0:0 | unsigned int | NonLocalCanonicalField | | | +| file://:0:0:0:0 | gp_offset | file://:0:0:0:0 | unsigned int | NonLocalCanonicalField | | | +| file://:0:0:0:0 | overflow_arg_area | file://:0:0:0:0 | void * | NonLocalCanonicalField | | | +| file://:0:0:0:0 | reg_save_area | file://:0:0:0:0 | void * | NonLocalCanonicalField | | | | variables.cpp:1:12:1:12 | i | file://:0:0:0:0 | int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | | | variables.cpp:2:12:2:12 | i | file://:0:0:0:0 | int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | | | variables.cpp:3:12:3:12 | i | file://:0:0:0:0 | int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | | @@ -33,10 +33,10 @@ | variables.cpp:37:6:37:8 | ap3 | file://:0:0:0:0 | int * | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | | | variables.cpp:41:7:41:11 | local | file://:0:0:0:0 | char[] | LocalVariable, SemanticStackVariable | | | | variables.cpp:43:14:43:18 | local | file://:0:0:0:0 | int | GlobalLikeVariable, StaticLocalVariable | | static | -| variables.cpp:48:9:48:12 | name | file://:0:0:0:0 | char * | Field | | | -| variables.cpp:49:12:49:17 | number | file://:0:0:0:0 | long | Field | | | -| variables.cpp:50:9:50:14 | street | file://:0:0:0:0 | char * | Field | | | -| variables.cpp:51:9:51:12 | town | file://:0:0:0:0 | char * | Field | | | +| variables.cpp:48:9:48:12 | name | file://:0:0:0:0 | char * | NonLocalCanonicalField | | | +| variables.cpp:49:12:49:17 | number | file://:0:0:0:0 | long | NonLocalCanonicalField | | | +| variables.cpp:50:9:50:14 | street | file://:0:0:0:0 | char * | NonLocalCanonicalField | | | +| variables.cpp:51:9:51:12 | town | file://:0:0:0:0 | char * | NonLocalCanonicalField | | | | variables.cpp:52:16:52:22 | country | file://:0:0:0:0 | char * | MemberVariable, StaticStorageDurationVariable | | static | | variables.cpp:56:14:56:29 | externInFunction | file://:0:0:0:0 | int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | | | variables.cpp:60:10:60:17 | __func__ | file://:0:0:0:0 | const char[9] | GlobalLikeVariable, StaticInitializedStaticLocalVariable | | static | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/OverflowBuffer.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/OverflowBuffer.expected index ac0e8d3a25a8..f9f887b64091 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/OverflowBuffer.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/OverflowBuffer.expected @@ -1,6 +1,10 @@ | overflowdestination.cpp:46:2:46:7 | call to memcpy | This 'memcpy' operation accesses 128 bytes but the $@ is only 64 bytes. | overflowdestination.cpp:40:7:40:10 | dest | destination buffer | | tests.cpp:23:2:23:7 | call to memcpy | This 'memcpy' operation accesses 20 bytes but the $@ is only 10 bytes. | tests.cpp:19:7:19:17 | smallbuffer | source buffer | | tests.cpp:25:2:25:7 | call to memcpy | This 'memcpy' operation accesses 20 bytes but the $@ is only 10 bytes. | tests.cpp:19:7:19:17 | smallbuffer | destination buffer | +| tests.cpp:34:2:34:7 | call to memcpy | This 'memcpy' operation accesses 20 bytes but the $@ is only 10 bytes. | tests.cpp:30:30:30:35 | call to malloc | source buffer | +| tests.cpp:36:2:36:7 | call to memcpy | This 'memcpy' operation accesses 20 bytes but the $@ is only 10 bytes. | tests.cpp:30:30:30:35 | call to malloc | destination buffer | +| tests.cpp:50:2:50:7 | call to memcpy | This 'memcpy' operation accesses 20 bytes but the $@ is only 10 bytes. | tests.cpp:46:16:46:27 | new[] | source buffer | +| tests.cpp:52:2:52:7 | call to memcpy | This 'memcpy' operation accesses 20 bytes but the $@ is only 10 bytes. | tests.cpp:46:16:46:27 | new[] | destination buffer | | tests.cpp:172:23:172:31 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:170:17:170:41 | {...} | array | | tests.cpp:176:23:176:30 | access to array | This array indexing operation accesses byte offset 31 but the $@ is only 24 bytes. | tests.cpp:170:17:170:41 | {...} | array | | tests.cpp:222:3:222:8 | call to memset | This 'memset' operation accesses 33 bytes but the $@ is only 32 bytes. | tests.cpp:214:8:214:14 | buffer1 | destination buffer | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/tests.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/tests.cpp index 555c8e25fb50..603d868258a9 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/tests.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/tests.cpp @@ -30,10 +30,10 @@ void test2() char *smallbuffer = (char *)malloc(sizeof(char) * 10); char *bigbuffer = (char *)malloc(sizeof(char) * 20); - memcpy(bigbuffer, smallbuffer, sizeof(smallbuffer)); // GOOD - memcpy(bigbuffer, smallbuffer, sizeof(bigbuffer)); // BAD: over-read [NOT DETECTED] - memcpy(smallbuffer, bigbuffer, sizeof(smallbuffer)); // GOOD - memcpy(smallbuffer, bigbuffer, sizeof(bigbuffer)); // BAD: over-write [NOT DETECTED] + memcpy(bigbuffer, smallbuffer, sizeof(char) * 10); // GOOD + memcpy(bigbuffer, smallbuffer, sizeof(char) * 20); // BAD: over-read + memcpy(smallbuffer, bigbuffer, sizeof(char) * 10); // GOOD + memcpy(smallbuffer, bigbuffer, sizeof(char) * 20); // BAD: over-write free(bigbuffer); free(smallbuffer); @@ -46,10 +46,10 @@ void test3() smallbuffer = new char[10]; bigbuffer = new char[20]; - memcpy(bigbuffer, smallbuffer, sizeof(smallbuffer)); // GOOD - memcpy(bigbuffer, smallbuffer, sizeof(bigbuffer)); // BAD: over-read [NOT DETECTED] - memcpy(smallbuffer, bigbuffer, sizeof(smallbuffer)); // GOOD - memcpy(smallbuffer, bigbuffer, sizeof(bigbuffer)); // BAD: over-write [NOT DETECTED] + memcpy(bigbuffer, smallbuffer, sizeof(char[10])); // GOOD + memcpy(bigbuffer, smallbuffer, sizeof(char[20])); // BAD: over-read + memcpy(smallbuffer, bigbuffer, sizeof(char[10])); // GOOD + memcpy(smallbuffer, bigbuffer, sizeof(char[20])); // BAD: over-write delete [] bigbuffer; delete [] smallbuffer; diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs index a29079d205bb..a396ab751eaf 100644 --- a/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs +++ b/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs @@ -84,11 +84,7 @@ public static BuildScript WithDotNet(IAutobuilder builde var temp = FileUtils.GetTemporaryWorkingDirectory(builder.Actions.GetEnvironmentVariable, builder.Options.Language.UpperCaseName, out var shouldCleanUp); return DotNet.WithDotNet(builder.Actions, builder.Logger, builder.Paths.Select(x => x.Item1), temp, shouldCleanUp, ensureDotNetAvailable, builder.Options.DotNetVersion, installDir => { - var env = new Dictionary - { - { "DOTNET_SKIP_FIRST_TIME_EXPERIENCE", "true" }, - { "MSBUILDDISABLENODEREUSE", "1" } - }; + var env = DotNet.MinimalEnvironment.ToDictionary(); if (installDir is not null) { // The installation succeeded, so use the newly installed .NET diff --git a/csharp/codeql-extractor.yml b/csharp/codeql-extractor.yml index 786b78950ca1..8cba8f18e47e 100644 --- a/csharp/codeql-extractor.yml +++ b/csharp/codeql-extractor.yml @@ -4,6 +4,7 @@ aliases: display_name: "C#" version: 1.22.1 column_kind: "utf16" +overlay_support_version: 20250626 extra_env_vars: DOTNET_GENERATE_ASPNET_CERTIFICATE: "false" build_modes: @@ -73,3 +74,8 @@ options: [EXPERIMENTAL] The value is a path to the MsBuild binary log file that should be extracted. This option only works when `--build-mode none` is also specified. type: array + buildless_dependency_dir: + title: The path where buildless (standalone) extraction should keep dependencies. + description: > + If set, the buildless (standalone) extractor will store dependencies in this directory. + type: string diff --git a/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/old.dbscheme b/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/old.dbscheme new file mode 100644 index 000000000000..605f85053409 --- /dev/null +++ b/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/old.dbscheme @@ -0,0 +1,1478 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_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( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : 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 ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string 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 +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string 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); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* 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; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/semmlecode.csharp.dbscheme b/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/semmlecode.csharp.dbscheme new file mode 100644 index 000000000000..66044cfa5bbf --- /dev/null +++ b/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/semmlecode.csharp.dbscheme @@ -0,0 +1,1460 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_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( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : 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 ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string 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 +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string 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); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* 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; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/upgrade.properties b/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/upgrade.properties new file mode 100644 index 000000000000..f9e0669d5215 --- /dev/null +++ b/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/upgrade.properties @@ -0,0 +1,4 @@ +description: Delete databaseMetadata and overlayChangedFiles relations +compatibility: full +databaseMetadata.rel: delete +overlayChangedFiles.rel: delete diff --git a/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/old.dbscheme b/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/old.dbscheme new file mode 100644 index 000000000000..68b5aec54e50 --- /dev/null +++ b/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/old.dbscheme @@ -0,0 +1,1484 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_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( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : 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 ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string 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 +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string 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); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* 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; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/semmlecode.csharp.dbscheme b/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/semmlecode.csharp.dbscheme new file mode 100644 index 000000000000..605f85053409 --- /dev/null +++ b/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/semmlecode.csharp.dbscheme @@ -0,0 +1,1478 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_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( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : 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 ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string 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 +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string 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); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* 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; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/upgrade.properties b/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/upgrade.properties new file mode 100644 index 000000000000..950235727fe7 --- /dev/null +++ b/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/upgrade.properties @@ -0,0 +1,2 @@ +description: Remove @locatable type +compatibility: full diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyDirectory.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyDirectory.cs new file mode 100644 index 000000000000..7c816ed58370 --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyDirectory.cs @@ -0,0 +1,62 @@ +using System; +using System.IO; +using Semmle.Util; +using Semmle.Util.Logging; + +namespace Semmle.Extraction.CSharp.DependencyFetching +{ + /// + /// A directory used for storing fetched dependencies. + /// When a specific directory is set via the dependency directory extractor option, + /// we store dependencies in that directory for caching purposes. + /// Otherwise, we create a temporary directory that is deleted upon disposal. + /// + public sealed class DependencyDirectory : IDisposable + { + private readonly string userReportedDirectoryPurpose; + private readonly ILogger logger; + private readonly bool attemptCleanup; + + public DirectoryInfo DirInfo { get; } + + public DependencyDirectory(string subfolderName, string userReportedDirectoryPurpose, ILogger logger) + { + this.logger = logger; + this.userReportedDirectoryPurpose = userReportedDirectoryPurpose; + + string path; + if (EnvironmentVariables.GetBuildlessDependencyDir() is string dir) + { + path = dir; + attemptCleanup = false; + } + else + { + path = FileUtils.GetTemporaryWorkingDirectory(out _); + attemptCleanup = true; + } + DirInfo = new DirectoryInfo(Path.Join(path, subfolderName)); + DirInfo.Create(); + } + + public void Dispose() + { + if (!attemptCleanup) + { + logger.LogInfo($"Keeping {userReportedDirectoryPurpose} directory {DirInfo.FullName} for possible caching purposes."); + return; + } + + try + { + DirInfo.Delete(true); + } + catch (Exception exc) + { + logger.LogInfo($"Couldn't delete {userReportedDirectoryPurpose} directory {exc.Message}"); + } + } + + public override string ToString() => DirInfo.FullName; + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs index 4a4fd651a5b3..7bc792384154 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.IO; using System.Linq; using Newtonsoft.Json.Linq; @@ -140,6 +141,8 @@ public IList GetNugetFeedsFromFolder(string folderPath) // The version number should be kept in sync with the version .NET version used for building the application. public const string LatestDotNetSdkVersion = "9.0.300"; + public static ReadOnlyDictionary MinimalEnvironment => IDotNetCliInvoker.MinimalEnvironment; + /// /// Returns a script for downloading relevant versions of the /// .NET SDK. The SDK(s) will be installed at installDir @@ -254,7 +257,6 @@ BuildScript GetInstall(string pwsh) => else { var dotnetInstallPath = actions.PathCombine(tempWorkingDirectory, ".dotnet", "dotnet-install.sh"); - var downloadDotNetInstallSh = BuildScript.DownloadFile( "https://dot.net/v1/dotnet-install.sh", dotnetInstallPath, @@ -269,17 +271,28 @@ BuildScript GetInstall(string pwsh) => prelude = downloadDotNetInstallSh & chmod.Script; postlude = shouldCleanUp ? BuildScript.DeleteFile(dotnetInstallPath) : BuildScript.Success; - getInstall = version => new CommandBuilder(actions). - RunCommand(dotnetInstallPath). - Argument("--channel"). - Argument("release"). - Argument("--version"). - Argument(version). - Argument("--install-dir"). - Argument(path).Script; + getInstall = version => + { + var cb = new CommandBuilder(actions). + RunCommand(dotnetInstallPath). + Argument("--channel"). + Argument("release"). + Argument("--version"). + Argument(version); + + // Request ARM64 architecture on Apple Silicon machines + if (actions.IsRunningOnAppleSilicon()) + { + cb.Argument("--architecture"). + Argument("arm64"); + } + + return cb.Argument("--install-dir"). + Argument(path).Script; + }; } - var dotnetInfo = new CommandBuilder(actions). + var dotnetInfo = new CommandBuilder(actions, environment: MinimalEnvironment). RunCommand(actions.PathCombine(path, "dotnet")). Argument("--info").Script; @@ -311,7 +324,7 @@ BuildScript GetInstall(string pwsh) => private static BuildScript GetInstalledSdksScript(IBuildActions actions) { - var listSdks = new CommandBuilder(actions, silent: true). + var listSdks = new CommandBuilder(actions, silent: true, environment: MinimalEnvironment). RunCommand("dotnet"). Argument("--list-sdks"); return listSdks.Script; diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs index e3efce094813..45f69a1fdfcd 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Diagnostics; using Semmle.Util; using Semmle.Util.Logging; @@ -36,10 +37,12 @@ private ProcessStartInfo MakeDotnetStartInfo(string args, string? workingDirecto { startInfo.WorkingDirectory = workingDirectory; } - // Set the .NET CLI language to English to avoid localized output. - startInfo.EnvironmentVariables["DOTNET_CLI_UI_LANGUAGE"] = "en"; - startInfo.EnvironmentVariables["MSBUILDDISABLENODEREUSE"] = "1"; - startInfo.EnvironmentVariables["DOTNET_SKIP_FIRST_TIME_EXPERIENCE"] = "true"; + + // Set minimal environment variables. + foreach (var kvp in IDotNetCliInvoker.MinimalEnvironment) + { + startInfo.EnvironmentVariables[kvp.Key] = kvp.Value; + } // Configure the proxy settings, if applicable. if (this.proxy != null) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs index 89631ffa861e..3a599afe96d7 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Collections.ObjectModel; namespace Semmle.Extraction.CSharp.DependencyFetching { @@ -9,6 +10,20 @@ internal interface IDotNetCliInvoker /// string Exec { get; } + /// + /// A minimal environment for running the .NET CLI. + /// + /// DOTNET_CLI_UI_LANGUAGE: The .NET CLI language is set to English to avoid localized output. + /// MSBUILDDISABLENODEREUSE: To ensure clean environment for each build. + /// DOTNET_SKIP_FIRST_TIME_EXPERIENCE: To skip first time experience messages. + /// + static ReadOnlyDictionary MinimalEnvironment { get; } = new(new Dictionary + { + {"DOTNET_CLI_UI_LANGUAGE", "en"}, + {"MSBUILDDISABLENODEREUSE", "1"}, + {"DOTNET_SKIP_FIRST_TIME_EXPERIENCE", "true"} + }); + /// /// Execute `dotnet ` and return true if the command succeeded, otherwise false. /// If `silent` is true the output of the command is logged as `debug` otherwise as `info`. diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs index c77daa8899c8..b90b388e865c 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs @@ -24,16 +24,16 @@ internal class NugetExeWrapper : IDisposable private readonly FileProvider fileProvider; /// - /// The computed packages directory. - /// This will be in the Temp location + /// The packages directory. + /// This will be in the user-specified or computed Temp location /// so as to not trample the source tree. /// - private readonly TemporaryDirectory packageDirectory; + private readonly DependencyDirectory packageDirectory; /// /// Create the package manager for a specified source tree. /// - public NugetExeWrapper(FileProvider fileProvider, TemporaryDirectory packageDirectory, Semmle.Util.Logging.ILogger logger) + public NugetExeWrapper(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger) { this.fileProvider = fileProvider; this.packageDirectory = packageDirectory; diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs index e0e1bc649fa4..e2e548a46a96 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs @@ -24,12 +24,12 @@ internal sealed partial class NugetPackageRestorer : IDisposable private readonly IDotNet dotnet; private readonly DependabotProxy? dependabotProxy; private readonly IDiagnosticsWriter diagnosticsWriter; - private readonly TemporaryDirectory legacyPackageDirectory; - private readonly TemporaryDirectory missingPackageDirectory; + private readonly DependencyDirectory legacyPackageDirectory; + private readonly DependencyDirectory missingPackageDirectory; private readonly ILogger logger; private readonly ICompilationInfoContainer compilationInfoContainer; - public TemporaryDirectory PackageDirectory { get; } + public DependencyDirectory PackageDirectory { get; } public NugetPackageRestorer( FileProvider fileProvider, @@ -48,9 +48,9 @@ public NugetPackageRestorer( this.logger = logger; this.compilationInfoContainer = compilationInfoContainer; - PackageDirectory = new TemporaryDirectory(ComputeTempDirectoryPath("packages"), "package", logger); - legacyPackageDirectory = new TemporaryDirectory(ComputeTempDirectoryPath("legacypackages"), "legacy package", logger); - missingPackageDirectory = new TemporaryDirectory(ComputeTempDirectoryPath("missingpackages"), "missing package", logger); + PackageDirectory = new DependencyDirectory("packages", "package", logger); + legacyPackageDirectory = new DependencyDirectory("legacypackages", "legacy package", logger); + missingPackageDirectory = new DependencyDirectory("missingpackages", "missing package", logger); } public string? TryRestore(string package) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs index 9ddf7686badf..2bcf1a88c870 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs @@ -2,6 +2,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; +using System.IO; using System.Linq; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; @@ -53,6 +54,20 @@ private static void AnalyseStandalone( } progressMonitor.MissingSummary(analyser.ExtractionContext!.MissingTypes.Count(), analyser.ExtractionContext!.MissingNamespaces.Count()); + + // If extracting a base database, we need to create an empty metadata file. + if (EnvironmentVariables.GetBaseMetaDataOutPath() is string baseMetaDataOutPath) + { + try + { + analyser.Logger.LogInfo($"Creating base metadata file at {baseMetaDataOutPath}"); + File.WriteAllText(baseMetaDataOutPath, string.Empty); + } + catch (Exception ex) + { + analyser.Logger.LogError($"Failed to create base metadata file: {ex.Message}"); + } + } }); } finally @@ -143,7 +158,8 @@ public static ExitCode Run(Options options) var pathTransformer = new PathTransformer(canonicalPathCache); var progressMonitor = new ExtractionProgress(logger); - using var analyser = new StandaloneAnalyser(progressMonitor, fileLogger, pathTransformer, canonicalPathCache, false); + var overlayInfo = OverlayInfoFactory.Make(logger, options.SrcDir); + using var analyser = new StandaloneAnalyser(progressMonitor, fileLogger, pathTransformer, canonicalPathCache, overlayInfo, false); try { var extractionInput = new ExtractionInput(dependencyManager.AllSourceFiles, dependencyManager.ReferenceFiles, dependencyManager.CompilationInfos); @@ -154,7 +170,8 @@ public static ExitCode Run(Options options) fileLogger.LogError($" Unhandled exception: {ex}"); } - logger.Log(Severity.Info, $"Extraction completed in {overallStopwatch.Elapsed}"); + logger.Log(Severity.Info, $"Extraction completed in {analyzerStopwatch.Elapsed}"); + logger.Log(Severity.Info, $"Total time: {overallStopwatch.Elapsed}"); return ExitCode.Ok; } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs index 0e1b756a37ce..ded4320cba8c 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs @@ -57,8 +57,21 @@ public sealed override void WriteQuotedId(EscapingTextWriter trapFile) public override void Populate(TextWriter trapFile) { + // In this case, we don't extract the attribute again, as it was extracted using * ID + // originally and we re-use that. + if (Context.OnlyScaffold && (ReportingLocation is null || !ReportingLocation.IsInSource)) + { + return; + } + var type = Type.Create(Context, Symbol.AttributeClass); trapFile.attributes(this, kind, type.TypeRef, entity); + + if (Context.OnlyScaffold) + { + return; + } + WriteLocationToTrap(trapFile.attribute_location, this, Location); if (attributeSyntax is not null) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs index 4e63f5535aad..af579a47dc59 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs @@ -10,9 +10,13 @@ private CommentBlock(Context cx, Comments.CommentBlock init) public override void Populate(TextWriter trapFile) { + if (Context.OnlyScaffold) + { + return; + } trapFile.commentblock(this); - WriteLocationToTrap(trapFile.commentblock_location, this, Context.CreateLocation(Symbol.Location)); Symbol.CommentLines.ForEach((l, child) => trapFile.commentblock_child(this, l, child)); + WriteLocationToTrap(trapFile.commentblock_location, this, Context.CreateLocation(Symbol.Location)); } public override bool NeedsPopulation => true; @@ -27,6 +31,10 @@ public override void WriteId(EscapingTextWriter trapFile) public void BindTo(Label entity, CommentBinding binding) { + if (Context.OnlyScaffold) + { + return; + } Context.TrapWriter.Writer.commentblock_binding(this, entity, binding); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs index 13cd002da79e..f7db5dbe2942 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs @@ -21,9 +21,14 @@ private CommentLine(Context cx, Microsoft.CodeAnalysis.Location loc, CommentLine public override void Populate(TextWriter trapFile) { - location = Context.CreateLocation(Location); + if (Context.OnlyScaffold) + { + return; + } trapFile.commentline(this, Type == CommentLineType.MultilineContinuation ? CommentLineType.Multiline : Type, Text, RawText); + location = Context.CreateLocation(Location); WriteLocationToTrap(trapFile.commentline_location, this, location); + } public override Microsoft.CodeAnalysis.Location? ReportingLocation => location?.Symbol; diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs index b4c0cdca7300..667ed8f43011 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs @@ -21,6 +21,11 @@ public CompilerDiagnostic(Context cx, Microsoft.CodeAnalysis.Diagnostic diag, Co protected override void Populate(TextWriter trapFile) { + if (Context.OnlyScaffold) + { + return; + } + var key = diagnostic.Id; var messageCount = compilation.messageCounts.AddOrUpdate(key, 1, (_, c) => c + 1); if (messageCount > limit) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs index 462fd8067888..2c3b25b2e1c4 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs @@ -29,9 +29,17 @@ public override void Populate(TextWriter trapFile) ContainingType!.PopulateGenerics(); trapFile.constructors(this, Symbol.ContainingType.Name, ContainingType, (Constructor)OriginalDefinition); - if (Context.ExtractLocation(Symbol) && (!IsDefault || IsBestSourceLocation)) + + if (Symbol.IsImplicitlyDeclared) { - WriteLocationToTrap(trapFile.constructor_location, this, Location); + var lineCounts = new LineCounts() { Total = 2, Code = 1, Comment = 0 }; + trapFile.numlines(this, lineCounts); + } + ExtractCompilerGenerated(trapFile); + + if (Context.OnlyScaffold) + { + return; } if (MakeSynthetic) @@ -40,12 +48,11 @@ public override void Populate(TextWriter trapFile) Statements.SyntheticEmptyBlock.Create(Context, this, 0, Location); } - if (Symbol.IsImplicitlyDeclared) + if (Context.ExtractLocation(Symbol) && (!IsDefault || IsBestSourceLocation)) { - var lineCounts = new LineCounts() { Total = 2, Code = 1, Comment = 0 }; - trapFile.numlines(this, lineCounts); + WriteLocationToTrap(trapFile.constructor_location, this, Location); } - ExtractCompilerGenerated(trapFile); + } protected override void ExtractInitializers(TextWriter trapFile) @@ -53,7 +60,7 @@ protected override void ExtractInitializers(TextWriter trapFile) // Do not extract initializers for constructed types. // Extract initializers for constructors with a body, primary constructors // and default constructors for classes and structs declared in source code. - if (Block is null && ExpressionBody is null && !MakeSynthetic) + if (Block is null && ExpressionBody is null && !MakeSynthetic || Context.OnlyScaffold) { return; } @@ -106,6 +113,7 @@ protected override void ExtractInitializers(TextWriter trapFile) } var baseConstructorTarget = Create(Context, baseConstructor); + var info = new ExpressionInfo(Context, AnnotatedTypeSymbol.CreateNotAnnotated(baseType), Location, @@ -179,7 +187,7 @@ Symbol.ContainingType.TypeKind is TypeKind.Class or TypeKind.Struct && /// private bool IsBestSourceLocation => ReportingLocation is not null && Context.IsLocationInContext(ReportingLocation); - private bool MakeSynthetic => IsPrimary || (IsDefault && IsBestSourceLocation); + private bool MakeSynthetic => (IsPrimary || (IsDefault && IsBestSourceLocation)) && !Context.OnlyScaffold; [return: NotNullIfNotNull(nameof(constructor))] public static new Constructor? Create(Context cx, IMethodSymbol? constructor) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Destructor.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Destructor.cs index 13e86792fc35..0681d55377a8 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Destructor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Destructor.cs @@ -15,6 +15,7 @@ public override void Populate(TextWriter trapFile) ContainingType!.PopulateGenerics(); trapFile.destructors(this, $"~{Symbol.ContainingType.Name}", ContainingType, OriginalDefinition(Context, this, Symbol)); + if (Context.ExtractLocation(Symbol)) { WriteLocationToTrap(trapFile.destructor_location, this, Location); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Event.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Event.cs index 8828639820be..bbd90989617c 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Event.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Event.cs @@ -37,7 +37,6 @@ public override void Populate(TextWriter trapFile) Method.Create(Context, remover); PopulateModifiers(trapFile); - BindComments(); var declSyntaxReferences = IsSourceDeclaration ? Symbol.DeclaringSyntaxReferences.Select(d => d.GetSyntax()).ToArray() @@ -51,6 +50,13 @@ public override void Populate(TextWriter trapFile) TypeMention.Create(Context, syntax.ExplicitInterfaceSpecifier!.Name, this, explicitInterface); } + if (Context.OnlyScaffold) + { + return; + } + + BindComments(); + if (Context.ExtractLocation(Symbol)) { WriteLocationsToTrap(trapFile.event_location, this, Locations); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/ExtractionMessage.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/ExtractionMessage.cs index f8a771ae6d0e..922094529b0c 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/ExtractionMessage.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/ExtractionMessage.cs @@ -28,6 +28,11 @@ private ExtractionMessage(Context cx, Message msg, bool bypassLimit) : base(cx) protected override void Populate(TextWriter trapFile) { + if (Context.OnlyScaffold) + { + return; + } + // For the time being we're counting the number of messages per severity, we could introduce other groupings in the future var key = msg.Severity.ToString(); groupedMessageCounts.AddOrUpdate(key, 1, (_, c) => c + 1); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs index 75a35c2a5f02..9a010aad3760 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs @@ -49,6 +49,11 @@ public override void Populate(TextWriter trapFile) } } + if (Context.OnlyScaffold) + { + return; + } + if (Context.ExtractLocation(Symbol)) { WriteLocationsToTrap(trapFile.field_location, this, Locations); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs index e6a188a6ab1e..870c2eb76500 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs @@ -19,10 +19,6 @@ public override void Populate(TextWriter trapFile) var type = Type.Create(Context, Symbol.Type); trapFile.indexers(this, Symbol.GetName(useMetadataName: true), ContainingType!, type.TypeRef, OriginalDefinition); - if (Context.ExtractLocation(Symbol)) - { - WriteLocationsToTrap(trapFile.indexer_location, this, Locations); - } var getter = BodyDeclaringSymbol.GetMethod; var setter = BodyDeclaringSymbol.SetMethod; @@ -42,20 +38,8 @@ public override void Populate(TextWriter trapFile) Parameter.Create(Context, Symbol.Parameters[i], this, original); } - if (IsSourceDeclaration) - { - var expressionBody = ExpressionBody; - if (expressionBody is not null) - { - // The expression may need to reference parameters in the getter. - // So we need to arrange that the expression is populated after the getter. - Context.PopulateLater(() => Expression.CreateFromNode(new ExpressionNodeInfo(Context, expressionBody, this, 0).SetType(Symbol.GetAnnotatedType()))); - } - } - PopulateAttributes(); PopulateModifiers(trapFile); - BindComments(); var declSyntaxReferences = IsSourceDeclaration ? Symbol.DeclaringSyntaxReferences. @@ -70,6 +54,28 @@ public override void Populate(TextWriter trapFile) TypeMention.Create(Context, syntax.ExplicitInterfaceSpecifier!.Name, this, explicitInterface); } + if (Context.OnlyScaffold) + { + return; + } + + if (Context.ExtractLocation(Symbol)) + { + WriteLocationsToTrap(trapFile.indexer_location, this, Locations); + } + + if (IsSourceDeclaration) + { + var expressionBody = ExpressionBody; + if (expressionBody is not null) + { + // The expression may need to reference parameters in the getter. + // So we need to arrange that the expression is populated after the getter. + Context.PopulateLater(() => Expression.CreateFromNode(new ExpressionNodeInfo(Context, expressionBody, this, 0).SetType(Symbol.GetAnnotatedType()))); + } + } + + BindComments(); foreach (var syntax in declSyntaxReferences) TypeMention.Create(Context, syntax.Type, this, type); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/LocalVariable.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/LocalVariable.cs index f16faa7f5303..22174f7e9456 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/LocalVariable.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/LocalVariable.cs @@ -41,6 +41,11 @@ public void PopulateManual(Expression parent, bool isVar) trapFile.localvars(this, Kinds.VariableKind.None, Symbol.Name, @var, Type.Create(Context, parent.Type).TypeRef, parent); } + if (Context.OnlyScaffold) + { + return; + } + WriteLocationToTrap(trapFile.localvar_location, this, Location); DefineConstantValue(trapFile); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs index 6ba5cca01cf6..c1b0f1a65bcb 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs @@ -48,7 +48,7 @@ protected virtual void ExtractInitializers(TextWriter trapFile) protected virtual void PopulateMethodBody(TextWriter trapFile) { - if (!IsSourceDeclaration) + if (!IsSourceDeclaration || Context.OnlyScaffold) return; var block = Block; diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/NamespaceDeclaration.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/NamespaceDeclaration.cs index 09ba3cc02b22..3eaafdca23bf 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/NamespaceDeclaration.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/NamespaceDeclaration.cs @@ -35,7 +35,6 @@ public override void Populate(TextWriter trapFile) var ns = Namespace.Create(Context, @namespace); trapFile.namespace_declarations(this, ns); - WriteLocationToTrap(trapFile.namespace_declaration_location, this, Context.CreateLocation(node.Name.GetLocation())); var visitor = new Populators.TypeOrNamespaceVisitor(Context, trapFile, this); @@ -48,6 +47,12 @@ public override void Populate(TextWriter trapFile) { trapFile.parent_namespace_declaration(this, parent); } + + if (Context.OnlyScaffold) + { + return; + } + WriteLocationToTrap(trapFile.namespace_declaration_location, this, Context.CreateLocation(node.Name.GetLocation())); } public static NamespaceDeclaration Create(Context cx, BaseNamespaceDeclarationSyntax decl, NamespaceDeclaration parent) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs index af4cd1a10cef..22bcd1dce2c8 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs @@ -34,6 +34,16 @@ public override void Populate(TextWriter trapFile) var returnType = Type.Create(Context, Symbol.ReturnType); trapFile.methods(this, Name, ContainingType, returnType.TypeRef, OriginalDefinition); + PopulateGenerics(trapFile); + Overrides(trapFile); + ExtractRefReturn(trapFile, Symbol, this); + ExtractCompilerGenerated(trapFile); + + if (Context.OnlyScaffold) + { + return; + } + if (IsSourceDeclaration) { foreach (var declaration in Symbol.DeclaringSyntaxReferences.Select(s => s.GetSyntax()).OfType()) @@ -47,11 +57,6 @@ public override void Populate(TextWriter trapFile) { WriteLocationsToTrap(trapFile.method_location, this, Locations); } - - PopulateGenerics(trapFile); - Overrides(trapFile); - ExtractRefReturn(trapFile, Symbol, this); - ExtractCompilerGenerated(trapFile); } private bool IsCompilerGeneratedDelegate() => diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Parameter.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Parameter.cs index 8b099261a10e..49ef9a4a6e9a 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Parameter.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Parameter.cs @@ -115,6 +115,11 @@ public override void Populate(TextWriter trapFile) var type = Type.Create(Context, Symbol.Type); trapFile.@params(this, Name, type.TypeRef, Ordinal, ParamKind, Parent!, Original); + if (Context.OnlyScaffold) + { + return; + } + if (Context.ExtractLocation(Symbol)) { var locations = Context.GetLocations(Symbol); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/PreprocessorDirective.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/PreprocessorDirective.cs index 9520e80d2459..4b0da499b804 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/PreprocessorDirective.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/PreprocessorDirective.cs @@ -13,10 +13,15 @@ public sealed override void Populate(TextWriter trapFile) PopulatePreprocessor(trapFile); trapFile.preprocessor_directive_active(this, Symbol.IsActive); - WriteLocationToTrap(trapFile.preprocessor_directive_location, this, Context.CreateLocation(ReportingLocation)); var compilation = Compilation.Create(Context); trapFile.preprocessor_directive_compilation(this, compilation); + + if (Context.OnlyScaffold) + { + return; + } + WriteLocationToTrap(trapFile.preprocessor_directive_location, this, Context.CreateLocation(ReportingLocation)); } protected abstract void PopulatePreprocessor(TextWriter trapFile); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs index ccffa1d95118..d48d778cb75a 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs @@ -40,7 +40,6 @@ public override void Populate(TextWriter trapFile) { PopulateAttributes(); PopulateModifiers(trapFile); - BindComments(); PopulateNullability(trapFile, Symbol.GetAnnotatedType()); PopulateRefKind(trapFile, Symbol.RefKind); @@ -69,6 +68,13 @@ public override void Populate(TextWriter trapFile) TypeMention.Create(Context, syntax.ExplicitInterfaceSpecifier!.Name, this, explicitInterface); } + if (Context.OnlyScaffold) + { + return; + } + + BindComments(); + if (Context.ExtractLocation(Symbol)) { WriteLocationsToTrap(trapFile.property_location, this, Locations); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/TypeMention.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/TypeMention.cs index d41ba5dc1959..aac4c5f5b3f0 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/TypeMention.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/TypeMention.cs @@ -59,6 +59,11 @@ private static Type GetArrayElementType(Type type) protected override void Populate(TextWriter trapFile) { + if (Context.OnlyScaffold) + { + return; + } + switch (syntax.Kind()) { case SyntaxKind.ArrayType: diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/DynamicType.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/DynamicType.cs index a3372726ae31..b1413b206ae8 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/DynamicType.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/DynamicType.cs @@ -16,10 +16,14 @@ private DynamicType(Context cx, IDynamicTypeSymbol init) public override void Populate(TextWriter trapFile) { trapFile.types(this, Kinds.TypeKind.DYNAMIC, "dynamic"); - WriteLocationToTrap(trapFile.type_location, this, Location); trapFile.has_modifiers(this, Modifier.Create(Context, "public")); trapFile.parent_namespace(this, Namespace.Create(Context, Context.Compilation.GlobalNamespace)); + if (Context.OnlyScaffold) + { + return; + } + WriteLocationToTrap(trapFile.type_location, this, Location); } public override void WriteId(EscapingTextWriter trapFile) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/NamedType.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/NamedType.cs index d7eab644eeb9..dcf2bffe095f 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/NamedType.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/NamedType.cs @@ -81,7 +81,7 @@ public override void Populate(TextWriter trapFile) } // Class location - if (!Symbol.IsGenericType || Symbol.IsReallyUnbound()) + if ((!Symbol.IsGenericType || Symbol.IsReallyUnbound()) && !Context.OnlyScaffold) { WriteLocationsToTrap(trapFile.type_location, this, Locations); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TupleType.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TupleType.cs index 18d71c997886..f20be262e30d 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TupleType.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TupleType.cs @@ -51,6 +51,10 @@ public override void Populate(TextWriter trapFile) trapFile.tuple_element(this, index++, element); } + if (Context.OnlyScaffold) + { + return; + } // Note: symbol.Locations seems to be very inconsistent // about what locations are available for a tuple type. // Sometimes it's the source code, and sometimes it's empty. diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Type.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Type.cs index 266fbfa5d606..3e79a8f81018 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Type.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Type.cs @@ -222,7 +222,7 @@ protected void PopulateType(TextWriter trapFile, bool constructUnderlyingTupleTy private IEnumerable GetBaseTypeDeclarations() { - if (!IsSourceDeclaration || !Symbol.FromSource()) + if (!IsSourceDeclaration || !Symbol.FromSource() || Context.OnlyScaffold) { return Enumerable.Empty(); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TypeParameter.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TypeParameter.cs index 8c7c0edde761..7d117dcd427a 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TypeParameter.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TypeParameter.cs @@ -26,6 +26,11 @@ public override void Populate(TextWriter trapFile) var parentNs = Namespace.Create(Context, Symbol.TypeParameterKind == TypeParameterKind.Method ? Context.Compilation.GlobalNamespace : Symbol.ContainingNamespace); trapFile.parent_namespace(this, parentNs); + if (Context.OnlyScaffold) + { + return; + } + if (Context.ExtractLocation(Symbol)) { var locations = Context.GetLocations(Symbol); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs index 40a40aab556d..fc9358ffc2dc 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs @@ -26,6 +26,14 @@ public override void Populate(TextWriter trapFile) returnType.TypeRef, (UserOperator)OriginalDefinition); + ContainingType.PopulateGenerics(); + Overrides(trapFile); + + if (Context.OnlyScaffold) + { + return; + } + if (Context.ExtractLocation(Symbol)) { WriteLocationsToTrap(trapFile.operator_location, this, Locations); @@ -39,9 +47,6 @@ public override void Populate(TextWriter trapFile) foreach (var declaration in declSyntaxReferences.OfType()) TypeMention.Create(Context, declaration.Type, this, returnType); } - - ContainingType.PopulateGenerics(); - Overrides(trapFile); } public override bool NeedsPopulation => Context.Defines(Symbol) || IsImplicitOperator(out _); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/UsingDirective.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/UsingDirective.cs index 04fe80dbcde7..f1de4a1d699c 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/UsingDirective.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/UsingDirective.cs @@ -20,6 +20,11 @@ public UsingDirective(Context cx, UsingDirectiveSyntax usingDirective, Namespace protected override void Populate(TextWriter trapFile) { + if (Context.OnlyScaffold) + { + return; + } + // This is guaranteed to be non-null as we only deal with "using namespace" not "using X = Y" var name = node.Name!; diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs index 4c8660c172ab..6701f993ac6e 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs @@ -41,16 +41,20 @@ public class Analyser : IDisposable public IPathCache PathCache { get; } + public IOverlayInfo OverlayInfo { get; } + protected Analyser( IProgressMonitor pm, ILogger logger, PathTransformer pathTransformer, IPathCache pathCache, + IOverlayInfo overlayInfo, bool addAssemblyTrapPrefix) { Logger = logger; PathTransformer = pathTransformer; PathCache = pathCache; + OverlayInfo = overlayInfo; this.addAssemblyTrapPrefix = addAssemblyTrapPrefix; this.progressMonitor = pm; @@ -158,7 +162,7 @@ private void DoAnalyseReferenceAssembly(PortableExecutableReference r) if (compilation.GetAssemblyOrModuleSymbol(r) is IAssemblySymbol assembly) { - var cx = new Context(ExtractionContext, compilation, trapWriter, new AssemblyScope(assembly, assemblyPath), addAssemblyTrapPrefix); + var cx = new Context(ExtractionContext, compilation, trapWriter, new AssemblyScope(assembly, assemblyPath), OverlayInfo, addAssemblyTrapPrefix); foreach (var module in assembly.Modules) { @@ -195,7 +199,7 @@ private void DoExtractTree(SyntaxTree tree) var currentTaskId = IncrementTaskCount(); ReportProgressTaskStarted(currentTaskId, sourcePath); - var cx = new Context(ExtractionContext, compilation, trapWriter, new SourceScope(tree), addAssemblyTrapPrefix); + var cx = new Context(ExtractionContext, compilation, trapWriter, new SourceScope(tree), OverlayInfo, addAssemblyTrapPrefix); // Ensure that the file itself is populated in case the source file is totally empty var root = tree.GetRoot(); Entities.File.Create(cx, root.SyntaxTree.FilePath); @@ -234,7 +238,7 @@ private void DoAnalyseCompilation() var assembly = compilation.Assembly; var trapWriter = transformedAssemblyPath.CreateTrapWriter(Logger, options.TrapCompression, discardDuplicates: false); compilationTrapFile = trapWriter; // Dispose later - var cx = new Context(ExtractionContext, compilation, trapWriter, new AssemblyScope(assembly, assemblyPath), addAssemblyTrapPrefix); + var cx = new Context(ExtractionContext, compilation, trapWriter, new AssemblyScope(assembly, assemblyPath), OverlayInfo, addAssemblyTrapPrefix); compilationEntity = Entities.Compilation.Create(cx); @@ -356,5 +360,22 @@ private static string Version return versionString.InformationalVersion; } } + + private static readonly HashSet errorsToIgnore = new HashSet + { + "CS7027", // Code signing failure + "CS1589", // XML referencing not supported + "CS1569" // Error writing XML documentation + }; + + /// + /// Retrieves the diagnostics from the compilation, filtering out those that should be ignored. + /// + protected List GetFilteredDiagnostics() => + compilation is not null + ? compilation.GetDiagnostics() + .Where(e => e.Severity >= DiagnosticSeverity.Error && !errorsToIgnore.Contains(e.Id)) + .ToList() + : []; } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/BinaryLogAnalyser.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/BinaryLogAnalyser.cs index 6026778f2f7e..7e457e248373 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/BinaryLogAnalyser.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/BinaryLogAnalyser.cs @@ -8,7 +8,7 @@ namespace Semmle.Extraction.CSharp public class BinaryLogAnalyser : Analyser { public BinaryLogAnalyser(IProgressMonitor pm, ILogger logger, PathTransformer pathTransformer, IPathCache pathCache, bool addAssemblyTrapPrefix) - : base(pm, logger, pathTransformer, pathCache, addAssemblyTrapPrefix) + : base(pm, logger, pathTransformer, pathCache, new TrivialOverlayInfo(), addAssemblyTrapPrefix) { } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs index 74b3b186b517..c37521652046 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs @@ -29,6 +29,12 @@ public class Context /// public bool ShouldAddAssemblyTrapPrefix { get; } + /// + /// Holds if trap only should be created for types and member signatures (and not for expressions and statements). + /// This is the case for all unchanged files, when running in overlay mode. + /// + public bool OnlyScaffold { get; } + public IList TrapStackSuffix { get; } = new List(); private int GetNewId() => TrapWriter.IdCounter++; @@ -523,13 +529,16 @@ internal void CacheLambdaParameterSymbol(IParameterSymbol param, SyntaxNode synt internal CommentProcessor CommentGenerator { get; } = new CommentProcessor(); - public Context(ExtractionContext extractionContext, Compilation c, TrapWriter trapWriter, IExtractionScope scope, bool shouldAddAssemblyTrapPrefix = false) + public Context(ExtractionContext extractionContext, Compilation c, TrapWriter trapWriter, IExtractionScope scope, IOverlayInfo overlayInfo, bool shouldAddAssemblyTrapPrefix = false) { ExtractionContext = extractionContext; TrapWriter = trapWriter; ShouldAddAssemblyTrapPrefix = shouldAddAssemblyTrapPrefix; Compilation = c; this.scope = scope; + OnlyScaffold = overlayInfo.IsOverlayMode && ( + IsAssemblyScope + || (scope is SourceScope ss && overlayInfo.OnlyMakeScaffold(ss.SourceTree.FilePath))); } public bool FromSource => scope is SourceScope; @@ -552,7 +561,8 @@ public bool Defines(ISymbol symbol) => public bool ExtractLocation(ISymbol symbol) => SymbolEqualityComparer.Default.Equals(symbol, symbol.OriginalDefinition) && - scope.InScope(symbol); + scope.InScope(symbol) && + !OnlyScaffold; /// /// Gets the locations of the symbol that are either @@ -621,6 +631,10 @@ public Entities.Location CreateLocation(Microsoft.CodeAnalysis.Location? locatio /// Location of the entity. public void BindComments(Entity entity, Microsoft.CodeAnalysis.Location? l) { + if (OnlyScaffold) + { + return; + } var duplicationGuardKey = GetCurrentTagStackKey(); CommentGenerator.AddElement(entity.Label, duplicationGuardKey, l); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs index 3c01893dd89c..69aa7c479097 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs @@ -182,7 +182,7 @@ static bool filter(CompilerCall compilerCall) var compilerCall = compilationData.CompilerCall; var diagnosticName = compilerCall.GetDiagnosticName(); logger.LogInfo($" Processing compilation {diagnosticName} at {compilerCall.ProjectDirectory}"); - var compilerArgs = compilerCall.GetArguments(); + var compilerArgs = reader.ReadArguments(compilerCall); var compilationIdentifierPath = string.Empty; try diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/OverlayInfo.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/OverlayInfo.cs new file mode 100644 index 000000000000..9ff5d88b4393 --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/OverlayInfo.cs @@ -0,0 +1,124 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.Json; +using Semmle.Util; +using Semmle.Util.Logging; + +namespace Semmle.Extraction.CSharp +{ + public interface IOverlayInfo + { + /// + /// True, if the extractor is running in overlay mode. + /// + bool IsOverlayMode { get; } + + /// + /// Returns true, if the given file is not in the set of changed files. + /// + /// A source file path + bool OnlyMakeScaffold(string filePath); + } + + + /// + /// An instance of this class is used when overlay is not enabled. + /// + public class TrivialOverlayInfo : IOverlayInfo + { + public TrivialOverlayInfo() { } + + public bool IsOverlayMode { get; } = false; + + public bool OnlyMakeScaffold(string filePath) => false; + } + + /// + /// An instance of this class is used for detecting + /// (1) Whether overlay is enabled. + /// (2) Fetch the changed files that should be fully extracted as a part + /// of the overlay extraction. + /// + public class OverlayInfo : IOverlayInfo + { + private readonly ILogger logger; + private readonly HashSet changedFiles; + private readonly string srcDir; + + public OverlayInfo(ILogger logger, string srcDir, string json) + { + this.logger = logger; + this.srcDir = srcDir; + changedFiles = ParseJson(json); + } + + public bool IsOverlayMode { get; } = true; + + public bool OnlyMakeScaffold(string filePath) => !changedFiles.Contains(filePath); + + /// + /// Private type only used to parse overlay changes JSON files. + /// + /// The content of such a file has the format + /// { + /// "changes": [ + /// "app/controllers/about_controller.xyz", + /// "app/models/about.xyz" + /// ] + /// } + /// + private record ChangedFiles + { + public string[]? Changes { get; set; } + } + + private HashSet ParseJson(string json) + { + try + { + var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }; + var obj = JsonSerializer.Deserialize(json, options); + return obj?.Changes is string[] changes + ? changes.Select(change => Path.Join(srcDir, change)).ToHashSet() + : []; + } + catch (JsonException) + { + logger.LogError("Overlay: Unable to parse the JSON content from the overlay changes file."); + return []; + } + } + } + + public static class OverlayInfoFactory + { + /// + /// The returned object is used to decide, whether + /// (1) The extractor is running in overlay mode. + /// (2) Which files to only extract scaffolds for (unchanged files) + /// + /// A logger + /// The (overlay) source directory + /// An overlay information object. + public static IOverlayInfo Make(ILogger logger, string srcDir) + { + if (EnvironmentVariables.GetOverlayChangesFilePath() is string path) + { + logger.LogInfo($"Overlay: Reading overlay changes from file '{path}'."); + try + { + var json = File.ReadAllText(path); + return new OverlayInfo(logger, srcDir, json); + } + catch + { + logger.LogError("Overlay: Unexpected error while reading the overlay changes file."); + } + } + + logger.LogInfo("Overlay: Overlay mode not enabled."); + return new TrivialOverlayInfo(); + } + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/StandaloneAnalyser.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/StandaloneAnalyser.cs index 3ce315b372ff..b940b02cb5c1 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/StandaloneAnalyser.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/StandaloneAnalyser.cs @@ -8,11 +8,19 @@ namespace Semmle.Extraction.CSharp { public class StandaloneAnalyser : Analyser { - public StandaloneAnalyser(IProgressMonitor pm, ILogger logger, PathTransformer pathTransformer, IPathCache pathCache, bool addAssemblyTrapPrefix) - : base(pm, logger, pathTransformer, pathCache, addAssemblyTrapPrefix) + public StandaloneAnalyser(IProgressMonitor pm, ILogger logger, PathTransformer pathTransformer, IPathCache pathCache, IOverlayInfo overlayInfo, bool addAssemblyTrapPrefix) + : base(pm, logger, pathTransformer, pathCache, overlayInfo, addAssemblyTrapPrefix) { } + private void LogDiagnostics() + { + foreach (var error in GetFilteredDiagnostics()) + { + Logger.LogDebug($" Compilation error: {error}"); + } + } + public void Initialize(string outputPath, IEnumerable<(string, string)> compilationInfos, CSharpCompilation compilationIn, CommonOptions options) { compilation = compilationIn; @@ -20,6 +28,7 @@ public void Initialize(string outputPath, IEnumerable<(string, string)> compilat this.options = options; LogExtractorInfo(); SetReferencePaths(); + LogDiagnostics(); } } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TracingAnalyser.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TracingAnalyser.cs index 1139d7cdd9a6..9f2a1256f1a1 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TracingAnalyser.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TracingAnalyser.cs @@ -14,7 +14,7 @@ public class TracingAnalyser : Analyser private bool init; public TracingAnalyser(IProgressMonitor pm, ILogger logger, PathTransformer pathTransformer, IPathCache pathCache, bool addAssemblyTrapPrefix) - : base(pm, logger, pathTransformer, pathCache, addAssemblyTrapPrefix) + : base(pm, logger, pathTransformer, pathCache, new TrivialOverlayInfo(), addAssemblyTrapPrefix) { } @@ -136,11 +136,7 @@ internal static string GetOutputName(CSharpCompilation compilation, private int LogDiagnostics() { - var filteredDiagnostics = compilation! - .GetDiagnostics() - .Where(e => e.Severity >= DiagnosticSeverity.Error && !errorsToIgnore.Contains(e.Id)) - .ToList(); - + var filteredDiagnostics = GetFilteredDiagnostics(); foreach (var error in filteredDiagnostics) { Logger.LogError($" Compilation error: {error}"); @@ -148,7 +144,7 @@ private int LogDiagnostics() if (filteredDiagnostics.Count != 0) { - foreach (var reference in compilation.References) + foreach (var reference in compilation!.References) { Logger.LogInfo($" Resolved reference {reference.Display}"); } @@ -156,12 +152,5 @@ private int LogDiagnostics() return filteredDiagnostics.Count; } - - private static readonly HashSet errorsToIgnore = new HashSet - { - "CS7027", // Code signing failure - "CS1589", // XML referencing not supported - "CS1569" // Error writing XML documentation - }; } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Populators/CommentPopulator.cs b/csharp/extractor/Semmle.Extraction.CSharp/Populators/CommentPopulator.cs index 24e23ff4abf5..5f7b16bba432 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Populators/CommentPopulator.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Populators/CommentPopulator.cs @@ -12,6 +12,10 @@ internal static class CommentPopulator { public static void ExtractCommentBlocks(Context cx, CommentProcessor gen) { + if (cx.OnlyScaffold) + { + return; + } cx.Try(null, null, () => { gen.GenerateBindings((entity, duplicationGuardKey, block, binding) => @@ -34,6 +38,10 @@ public static void ExtractCommentBlocks(Context cx, CommentProcessor gen) public static void ExtractComment(Context cx, SyntaxTrivia trivia) { + if (cx.OnlyScaffold) + { + return; + } switch (trivia.Kind()) { case SyntaxKind.SingleLineDocumentationCommentTrivia: diff --git a/csharp/extractor/Semmle.Extraction.Tests/OverlayInfo.cs b/csharp/extractor/Semmle.Extraction.Tests/OverlayInfo.cs new file mode 100644 index 000000000000..6fde82541c15 --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.Tests/OverlayInfo.cs @@ -0,0 +1,31 @@ +using Xunit; +using Semmle.Extraction.CSharp; +using System.IO; + +namespace Semmle.Extraction.Tests +{ + public class OverlayTests + { + [Fact] + public void TestOverlay() + { + var logger = new LoggerStub(); + var json = + """ + { + "changes": [ + "app/controllers/about_controller.xyz", + "app/models/about.xyz" + ] + } + """; + + var overlay = new OverlayInfo(logger, "overlay/source/path", json); + + Assert.True(overlay.IsOverlayMode); + Assert.False(overlay.OnlyMakeScaffold("overlay/source/path" + Path.DirectorySeparatorChar + "app/controllers/about_controller.xyz")); + Assert.False(overlay.OnlyMakeScaffold("overlay/source/path" + Path.DirectorySeparatorChar + "app/models/about.xyz")); + Assert.True(overlay.OnlyMakeScaffold("overlay/source/path" + Path.DirectorySeparatorChar + "app/models/unchanged.xyz")); + } + } +} diff --git a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs index 1b0e40790ff1..1af05b9d4ad1 100644 --- a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs +++ b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs @@ -53,5 +53,37 @@ public static IEnumerable GetURLs(string name) { return Environment.GetEnvironmentVariable(name)?.Split(" ", StringSplitOptions.RemoveEmptyEntries) ?? []; } + + /// + /// Used to + /// (1) Detect whether the extractor should run in overlay mode. + /// (2) Returns the path to the file containing a list of changed files + /// in JSON format. + /// + /// The environment variable is only set in case the extraction is supposed to be + /// performed in overlay mode. Furthermore, this only applies to buildless extraction. + /// + public static string? GetOverlayChangesFilePath() + { + return Environment.GetEnvironmentVariable("CODEQL_EXTRACTOR_CSHARP_OVERLAY_CHANGES"); + } + + /// + /// If the environment variable is set, the extractor is being called to extract a base database. + /// Its value will be a path, and the extractor must create either a file or directory at that location. + /// + public static string? GetBaseMetaDataOutPath() + { + return Environment.GetEnvironmentVariable("CODEQL_EXTRACTOR_CSHARP_OVERLAY_BASE_METADATA_OUT"); + } + + /// + /// If set, returns the directory where buildless dependencies should be stored. + /// This can be used for caching dependencies. + /// + public static string? GetBuildlessDependencyDir() + { + return Environment.GetEnvironmentVariable("CODEQL_EXTRACTOR_CSHARP_OPTION_BUILDLESS_DEPENDENCY_DIR"); + } } } diff --git a/csharp/paket.dependencies b/csharp/paket.dependencies index 9413de7b1fe4..cd2ac36422bc 100644 --- a/csharp/paket.dependencies +++ b/csharp/paket.dependencies @@ -4,16 +4,16 @@ source https://api.nuget.org/v3/index.json # behave like nuget in choosing transitive dependency versions strategy: max -nuget Basic.CompilerLog.Util 0.9.8 +nuget Basic.CompilerLog.Util 0.9.21 nuget Mono.Posix.NETStandard nuget Newtonsoft.Json nuget xunit nuget xunit.runner.visualstudio nuget xunit.runner.utility nuget Microsoft.NET.Test.Sdk -nuget Microsoft.CodeAnalysis.CSharp 4.12.0 -nuget Microsoft.CodeAnalysis 4.12.0 -nuget Microsoft.Build 17.12.6 +nuget Microsoft.CodeAnalysis.CSharp 4.14.0 +nuget Microsoft.CodeAnalysis 4.14.0 +nuget Microsoft.Build 17.14.28 nuget Microsoft.Win32.Primitives nuget System.Net.Primitives nuget System.Security.Principal diff --git a/csharp/paket.lock b/csharp/paket.lock index 8120aadb5bd4..d503e19d87df 100644 --- a/csharp/paket.lock +++ b/csharp/paket.lock @@ -3,143 +3,148 @@ STRATEGY: MAX RESTRICTION: == net9.0 NUGET remote: https://api.nuget.org/v3/index.json - Basic.CompilerLog.Util (0.9.8) - MessagePack (>= 2.5.187) - Microsoft.CodeAnalysis (>= 4.12) - Microsoft.CodeAnalysis.CSharp (>= 4.12) - Microsoft.CodeAnalysis.VisualBasic (>= 4.12) - Microsoft.Extensions.ObjectPool (>= 9.0.2) - MSBuild.StructuredLogger (>= 2.2.243) - System.Buffers (>= 4.6) + Basic.CompilerLog.Util (0.9.21) + MessagePack (>= 3.1.4) + Microsoft.Bcl.Memory (>= 9.0.10) + Microsoft.CodeAnalysis (>= 4.8) + Microsoft.CodeAnalysis.CSharp (>= 4.8) + Microsoft.CodeAnalysis.VisualBasic (>= 4.8) + Microsoft.Extensions.ObjectPool (>= 9.0.10) + MSBuild.StructuredLogger (>= 2.3.71) + NaturalSort.Extension (>= 4.4) Humanizer.Core (2.14.1) - MessagePack (3.0.300) - MessagePack.Annotations (>= 3.0.300) - MessagePackAnalyzer (>= 3.0.300) + MessagePack (3.1.4) + MessagePack.Annotations (>= 3.1.4) + MessagePackAnalyzer (>= 3.1.4) Microsoft.NET.StringTools (>= 17.11.4) - MessagePack.Annotations (3.0.300) - MessagePackAnalyzer (3.0.300) - Microsoft.Bcl.AsyncInterfaces (9.0) - Microsoft.Build (17.12.6) - Microsoft.Build.Framework (>= 17.12.6) - Microsoft.NET.StringTools (>= 17.12.6) - System.Collections.Immutable (>= 8.0) - System.Configuration.ConfigurationManager (>= 8.0) - System.Reflection.Metadata (>= 8.0) - System.Reflection.MetadataLoadContext (>= 8.0) - Microsoft.Build.Framework (17.12.6) - Microsoft.Build.Utilities.Core (17.12.6) - Microsoft.Build.Framework (>= 17.12.6) - Microsoft.NET.StringTools (>= 17.12.6) - System.Collections.Immutable (>= 8.0) - System.Configuration.ConfigurationManager (>= 8.0) - Microsoft.CodeAnalysis (4.12) + MessagePack.Annotations (3.1.4) + MessagePackAnalyzer (3.1.4) + Microsoft.Bcl.AsyncInterfaces (9.0.10) + Microsoft.Bcl.Memory (9.0.10) + Microsoft.Build (17.14.28) + Microsoft.Build.Framework (>= 17.14.28) + Microsoft.NET.StringTools (>= 17.14.28) + System.Configuration.ConfigurationManager (>= 9.0) + System.Diagnostics.EventLog (>= 9.0) + System.Reflection.MetadataLoadContext (>= 9.0) + System.Security.Cryptography.ProtectedData (>= 9.0) + Microsoft.Build.Framework (17.14.28) + Microsoft.Build.Utilities.Core (17.14.28) + Microsoft.Build.Framework (>= 17.14.28) + Microsoft.NET.StringTools (>= 17.14.28) + System.Collections.Immutable (>= 9.0) + System.Configuration.ConfigurationManager (>= 9.0) + System.Diagnostics.EventLog (>= 9.0) + System.Security.Cryptography.ProtectedData (>= 9.0) + Microsoft.CodeAnalysis (4.14) Humanizer.Core (>= 2.14.1) - Microsoft.Bcl.AsyncInterfaces (>= 8.0) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.CSharp.Workspaces (4.12) - Microsoft.CodeAnalysis.VisualBasic.Workspaces (4.12) + Microsoft.Bcl.AsyncInterfaces (>= 9.0) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.CSharp.Workspaces (4.14) + Microsoft.CodeAnalysis.VisualBasic.Workspaces (4.14) System.Buffers (>= 4.5.1) - System.Collections.Immutable (>= 8.0) - System.Composition (>= 8.0) - System.IO.Pipelines (>= 8.0) + System.Collections.Immutable (>= 9.0) + System.Composition (>= 9.0) + System.IO.Pipelines (>= 9.0) System.Memory (>= 4.5.5) System.Numerics.Vectors (>= 4.5) - System.Reflection.Metadata (>= 8.0) + System.Reflection.Metadata (>= 9.0) System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Text.Encoding.CodePages (>= 7.0) System.Threading.Channels (>= 7.0) System.Threading.Tasks.Extensions (>= 4.5.4) Microsoft.CodeAnalysis.Analyzers (3.11) - Microsoft.CodeAnalysis.Common (4.12) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - System.Collections.Immutable (>= 8.0) - System.Reflection.Metadata (>= 8.0) - Microsoft.CodeAnalysis.CSharp (4.12) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.Common (4.12) - System.Collections.Immutable (>= 8.0) - System.Reflection.Metadata (>= 8.0) - Microsoft.CodeAnalysis.CSharp.Workspaces (4.12) + Microsoft.CodeAnalysis.Common (4.14) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + System.Collections.Immutable (>= 9.0) + System.Reflection.Metadata (>= 9.0) + Microsoft.CodeAnalysis.CSharp (4.14) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.Common (4.14) + System.Collections.Immutable (>= 9.0) + System.Reflection.Metadata (>= 9.0) + Microsoft.CodeAnalysis.CSharp.Workspaces (4.14) Humanizer.Core (>= 2.14.1) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.Common (4.12) - Microsoft.CodeAnalysis.CSharp (4.12) - Microsoft.CodeAnalysis.Workspaces.Common (4.12) - System.Collections.Immutable (>= 8.0) - System.Composition (>= 8.0) - System.IO.Pipelines (>= 8.0) - System.Reflection.Metadata (>= 8.0) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.Common (4.14) + Microsoft.CodeAnalysis.CSharp (4.14) + Microsoft.CodeAnalysis.Workspaces.Common (4.14) + System.Collections.Immutable (>= 9.0) + System.Composition (>= 9.0) + System.IO.Pipelines (>= 9.0) + System.Reflection.Metadata (>= 9.0) System.Threading.Channels (>= 7.0) - Microsoft.CodeAnalysis.VisualBasic (4.12) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.Common (4.12) - System.Collections.Immutable (>= 8.0) - System.Reflection.Metadata (>= 8.0) - Microsoft.CodeAnalysis.VisualBasic.Workspaces (4.12) + Microsoft.CodeAnalysis.VisualBasic (4.14) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.Common (4.14) + System.Collections.Immutable (>= 9.0) + System.Reflection.Metadata (>= 9.0) + Microsoft.CodeAnalysis.VisualBasic.Workspaces (4.14) Humanizer.Core (>= 2.14.1) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.Common (4.12) - Microsoft.CodeAnalysis.VisualBasic (4.12) - Microsoft.CodeAnalysis.Workspaces.Common (4.12) - System.Collections.Immutable (>= 8.0) - System.Composition (>= 8.0) - System.IO.Pipelines (>= 8.0) - System.Reflection.Metadata (>= 8.0) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.Common (4.14) + Microsoft.CodeAnalysis.VisualBasic (4.14) + Microsoft.CodeAnalysis.Workspaces.Common (4.14) + System.Collections.Immutable (>= 9.0) + System.Composition (>= 9.0) + System.IO.Pipelines (>= 9.0) + System.Reflection.Metadata (>= 9.0) System.Threading.Channels (>= 7.0) - Microsoft.CodeAnalysis.Workspaces.Common (4.12) + Microsoft.CodeAnalysis.Workspaces.Common (4.14) Humanizer.Core (>= 2.14.1) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.Common (4.12) - System.Collections.Immutable (>= 8.0) - System.Composition (>= 8.0) - System.IO.Pipelines (>= 8.0) - System.Reflection.Metadata (>= 8.0) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.Common (4.14) + System.Collections.Immutable (>= 9.0) + System.Composition (>= 9.0) + System.IO.Pipelines (>= 9.0) + System.Reflection.Metadata (>= 9.0) System.Threading.Channels (>= 7.0) - Microsoft.CodeCoverage (17.12) - Microsoft.Extensions.ObjectPool (9.0.3) - Microsoft.NET.StringTools (17.12.6) - Microsoft.NET.Test.Sdk (17.12) - Microsoft.CodeCoverage (>= 17.12) - Microsoft.TestPlatform.TestHost (>= 17.12) + Microsoft.CodeCoverage (18.0) + Microsoft.Extensions.ObjectPool (9.0.10) + Microsoft.NET.StringTools (17.14.28) + Microsoft.NET.Test.Sdk (18.0) + Microsoft.CodeCoverage (>= 18.0) + Microsoft.TestPlatform.TestHost (>= 18.0) Microsoft.NETCore.Platforms (7.0.4) Microsoft.NETCore.Targets (5.0) - Microsoft.TestPlatform.ObjectModel (17.12) - System.Reflection.Metadata (>= 1.6) - Microsoft.TestPlatform.TestHost (17.12) - Microsoft.TestPlatform.ObjectModel (>= 17.12) - Newtonsoft.Json (>= 13.0.1) + Microsoft.TestPlatform.ObjectModel (18.0) + System.Reflection.Metadata (>= 8.0) + Microsoft.TestPlatform.TestHost (18.0) + Microsoft.TestPlatform.ObjectModel (>= 18.0) + Newtonsoft.Json (>= 13.0.3) Microsoft.Win32.Primitives (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) Mono.Posix.NETStandard (1.0) - MSBuild.StructuredLogger (2.2.386) + MSBuild.StructuredLogger (2.3.71) Microsoft.Build.Framework (>= 17.5) Microsoft.Build.Utilities.Core (>= 17.5) System.Collections.Immutable (>= 8.0) - Newtonsoft.Json (13.0.3) - System.Buffers (4.6) - System.Collections.Immutable (9.0) - System.Composition (9.0) - System.Composition.AttributedModel (>= 9.0) - System.Composition.Convention (>= 9.0) - System.Composition.Hosting (>= 9.0) - System.Composition.Runtime (>= 9.0) - System.Composition.TypedParts (>= 9.0) - System.Composition.AttributedModel (9.0) - System.Composition.Convention (9.0) - System.Composition.AttributedModel (>= 9.0) - System.Composition.Hosting (9.0) - System.Composition.Runtime (>= 9.0) - System.Composition.Runtime (9.0) - System.Composition.TypedParts (9.0) - System.Composition.AttributedModel (>= 9.0) - System.Composition.Hosting (>= 9.0) - System.Composition.Runtime (>= 9.0) - System.Configuration.ConfigurationManager (9.0) - System.Diagnostics.EventLog (>= 9.0) - System.Security.Cryptography.ProtectedData (>= 9.0) - System.Diagnostics.EventLog (9.0) + NaturalSort.Extension (4.4) + Newtonsoft.Json (13.0.4) + System.Buffers (4.6.1) + System.Collections.Immutable (9.0.10) + System.Composition (9.0.10) + System.Composition.AttributedModel (>= 9.0.10) + System.Composition.Convention (>= 9.0.10) + System.Composition.Hosting (>= 9.0.10) + System.Composition.Runtime (>= 9.0.10) + System.Composition.TypedParts (>= 9.0.10) + System.Composition.AttributedModel (9.0.10) + System.Composition.Convention (9.0.10) + System.Composition.AttributedModel (>= 9.0.10) + System.Composition.Hosting (9.0.10) + System.Composition.Runtime (>= 9.0.10) + System.Composition.Runtime (9.0.10) + System.Composition.TypedParts (9.0.10) + System.Composition.AttributedModel (>= 9.0.10) + System.Composition.Hosting (>= 9.0.10) + System.Composition.Runtime (>= 9.0.10) + System.Configuration.ConfigurationManager (9.0.10) + System.Diagnostics.EventLog (>= 9.0.10) + System.Security.Cryptography.ProtectedData (>= 9.0.10) + System.Diagnostics.EventLog (9.0.10) System.IO (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) @@ -157,55 +162,55 @@ NUGET System.Threading.Tasks (>= 4.3) System.IO.FileSystem.Primitives (4.3) System.Runtime (>= 4.3) - System.IO.Pipelines (9.0) - System.Memory (4.6) + System.IO.Pipelines (9.0.10) + System.Memory (4.6.3) System.Net.Primitives (4.3.1) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) System.Runtime (>= 4.3.1) System.Runtime.Handles (>= 4.3) - System.Numerics.Vectors (4.6) - System.Reflection.Metadata (9.0) - System.Reflection.MetadataLoadContext (9.0) + System.Numerics.Vectors (4.6.1) + System.Reflection.Metadata (9.0.10) + System.Reflection.MetadataLoadContext (9.0.10) System.Runtime (4.3.1) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) - System.Runtime.CompilerServices.Unsafe (6.1) + System.Runtime.CompilerServices.Unsafe (6.1.2) System.Runtime.Handles (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Security.Cryptography.ProtectedData (9.0) + System.Security.Cryptography.ProtectedData (9.0.10) System.Security.Principal (4.3) System.Runtime (>= 4.3) System.Text.Encoding (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Text.Encoding.CodePages (9.0) - System.Threading.Channels (9.0) + System.Text.Encoding.CodePages (9.0.10) + System.Threading.Channels (9.0.10) System.Threading.Tasks (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Threading.Tasks.Extensions (4.6) + System.Threading.Tasks.Extensions (4.6.3) System.Threading.ThreadPool (4.3) System.Runtime (>= 4.3) System.Runtime.Handles (>= 4.3) - xunit (2.9.2) - xunit.analyzers (>= 1.16) - xunit.assert (>= 2.9.2) - xunit.core (2.9.2) + xunit (2.9.3) + xunit.analyzers (>= 1.18) + xunit.assert (>= 2.9.3) + xunit.core (2.9.3) xunit.abstractions (2.0.3) - xunit.analyzers (1.17) - xunit.assert (2.9.2) - xunit.core (2.9.2) - xunit.extensibility.core (2.9.2) - xunit.extensibility.execution (2.9.2) - xunit.extensibility.core (2.9.2) + xunit.analyzers (1.24) + xunit.assert (2.9.3) + xunit.core (2.9.3) + xunit.extensibility.core (2.9.3) + xunit.extensibility.execution (2.9.3) + xunit.extensibility.core (2.9.3) xunit.abstractions (>= 2.0.3) - xunit.extensibility.execution (2.9.2) - xunit.extensibility.core (2.9.2) - xunit.runner.utility (2.9.2) + xunit.extensibility.execution (2.9.3) + xunit.extensibility.core (2.9.3) + xunit.runner.utility (2.9.3) xunit.abstractions (>= 2.0.3) - xunit.runner.visualstudio (2.8.2) + xunit.runner.visualstudio (3.1.5) diff --git a/csharp/paket.main.bzl b/csharp/paket.main.bzl index 90d568ba3a83..1ef6f63df8f4 100644 --- a/csharp/paket.main.bzl +++ b/csharp/paket.main.bzl @@ -7,73 +7,75 @@ def main(): nuget_repo( name = "paket.main", packages = [ - {"name": "Basic.CompilerLog.Util", "id": "Basic.CompilerLog.Util", "version": "0.9.8", "sha512": "sha512-bBlxHTdPRrmaw4AqoNwtx3jyAP63RVp2kwCn+UegxrimDYVCmhdgCkFjzlAc2Bo1LbO7HrsFhfh6lFijugOX3A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net462": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net47": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net471": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net472": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net48": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net5.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net6.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net7.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net8.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net9.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netcoreapp2.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netcoreapp2.2": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netcoreapp3.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netcoreapp3.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netstandard2.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Basic.CompilerLog.Util", "id": "Basic.CompilerLog.Util", "version": "0.9.21", "sha512": "sha512-l+Qbzh3nVaLLwZYgv/v5zIEdprseLgxcprHBvbNBzOyer7m6XD/N5GJC+FPChnSP48kK1/p7Nj7mvQH8d5NOtA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net462": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net47": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net471": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net472": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net48": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net5.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net6.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net7.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net8.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension"], "net9.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netcoreapp2.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netcoreapp2.2": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netcoreapp3.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netcoreapp3.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netstandard2.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Humanizer.Core", "id": "Humanizer.Core", "version": "2.14.1", "sha512": "sha512-yzqGU/HKNLZ9Uvr6kvSc3wYV/S5O/IvklIUW5WF7MuivGLY8wS5IZnLPkt7D1KW8Et2Enl0I3Lzg2vGWM24Xsw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "MessagePack", "id": "MessagePack", "version": "3.0.300", "sha512": "sha512-5Mdl6CrQcxVVLawvqebPLALFdIMgWOnEGxxFvXWjJ/8KGyyhbfKMusj34Wv1AwE+uE9VAb+McVxtR9HDZIUwuA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net48": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net5.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net6.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net7.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net8.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools"], "net9.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "netcoreapp3.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "MessagePack.Annotations", "id": "MessagePack.Annotations", "version": "3.0.300", "sha512": "sha512-Jh9+7EsDtDSEciX8RfXHWxtRlC94wvCmmv+sFzGdzPF4fAp7OAGFktzViPBHMkCxrSh3hmM7jGUB7yMyUmzRCA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "MessagePackAnalyzer", "id": "MessagePackAnalyzer", "version": "3.0.300", "sha512": "sha512-Ad0UHGpotoXZYkBjJgO5Z1aTJz5YIsFGVrxc75OiHO/fNKSRKFiM1X2E1WTB5h7pk3uDzqXfh0M5fEEQVZ8FiQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Bcl.AsyncInterfaces", "id": "Microsoft.Bcl.AsyncInterfaces", "version": "9.0.0", "sha512": "sha512-bYp2ksSR5uB6xqOa4NyD2gBOeFrc2n8FAWoh781MNMDcPjk1ysD7DNpv7r7sQOXfdFJT6F/syX7fN4lmUsn+RQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Threading.Tasks.Extensions"], "net462": ["System.Threading.Tasks.Extensions"], "net47": ["System.Threading.Tasks.Extensions"], "net471": ["System.Threading.Tasks.Extensions"], "net472": ["System.Threading.Tasks.Extensions"], "net48": ["System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["System.Threading.Tasks.Extensions"], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Threading.Tasks.Extensions"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Build", "id": "Microsoft.Build", "version": "17.12.6", "sha512": "sha512-YEiL5xKowbwnr52YroALNHg8YurjLyFTlhv3USrswhubuxN2ldY1TmQpBKQ4K28UgWJV9BxTVXY9/CecMNDeOA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Reflection.MetadataLoadContext", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe"], "net48": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Reflection.MetadataLoadContext", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Configuration.ConfigurationManager", "System.Reflection.MetadataLoadContext", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Build.Framework", "id": "Microsoft.Build.Framework", "version": "17.12.6", "sha512": "sha512-UjfxnrQN9BPVtO0Kvv2FB5dpN2CX5snc7coq5vVQdbCV6kdSpI/r+GZTLvU/5BTT8y8bvIUqoocxRR674N6bWg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Build.Utilities.Core", "id": "Microsoft.Build.Utilities.Core", "version": "17.12.6", "sha512": "sha512-YPtNsiLEPn3g3EcO+Kyr7fIdufg6wdzibzufclQYZjIDS80krFsYi2rTpeTmHtlCK0PhyLvxJAQZ3NecgJHTkg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net9.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis", "id": "Microsoft.CodeAnalysis", "version": "4.12.0", "sha512": "sha512-saGSG86irNb5MX0/7j0Lx2T0jSGQuqa6QlohBHBcTzObPyMunQZIuIWVXlEiKwcrcEQm4rtUg/5FW43s0dqH7Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net9.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "MessagePack", "id": "MessagePack", "version": "3.1.4", "sha512": "sha512-O0JoklM97ru+Rqr1hGnlCbSAxi8MOk48pwoaT458RzboCHuAkQWTh+Of9MUoN3LE0Cb2tapku0FRPt2hnk+o0g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net48": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net5.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net6.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net7.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net8.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools"], "net9.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "netcoreapp3.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "MessagePack.Annotations", "id": "MessagePack.Annotations", "version": "3.1.4", "sha512": "sha512-kIgD3A0OHs8+VUabMhIJT9ZF4oGHqjCocaRDmERI/Ds2hzJ5q3kcvzn5zI7V3CJ2NlQ4HDI80uh6zCqglwgQCQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "MessagePackAnalyzer", "id": "MessagePackAnalyzer", "version": "3.1.4", "sha512": "sha512-DFlhiA5fia4iK6i0S+L7sYMYmo5XRgWydKxiaxwz7tfcbvIhU7nmG4JzN1D9Y2XCEmLNExvNwTzXVEgURu4GnA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Bcl.AsyncInterfaces", "id": "Microsoft.Bcl.AsyncInterfaces", "version": "9.0.10", "sha512": "sha512-Di823U3L+0A2YQGU1HqJC7Gh8o/nuSXle5u6QDgho9s920QbVk6BS5fKJ0s+pzW+WbqM9+aPUQ2DJsfP6tLdKg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Threading.Tasks.Extensions"], "net462": ["System.Threading.Tasks.Extensions"], "net47": ["System.Threading.Tasks.Extensions"], "net471": ["System.Threading.Tasks.Extensions"], "net472": ["System.Threading.Tasks.Extensions"], "net48": ["System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["System.Threading.Tasks.Extensions"], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Threading.Tasks.Extensions"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Bcl.Memory", "id": "Microsoft.Bcl.Memory", "version": "9.0.10", "sha512": "sha512-BZV+TVnrDf9O+Ak5gN47uOkECCtpiVq6MpEYX5lQcG1WFD6/Bnx5eyfueX9giDQPEk6azzhSPTGmJcWNXRBc+Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Runtime.CompilerServices.Unsafe"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Build", "id": "Microsoft.Build", "version": "17.14.28", "sha512": "sha512-/J3DY36eYjSi/NYf/m4fS4HlxN8Zy+bCsopJUN0j4NNnrws4NR9ueWd0HKyhWEYYUa29Q1kjG1uKSGN1jBWg4g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Reflection.MetadataLoadContext", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Reflection.MetadataLoadContext", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Configuration.ConfigurationManager", "System.Reflection.MetadataLoadContext", "System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Build.Framework", "id": "Microsoft.Build.Framework", "version": "17.14.28", "sha512": "sha512-Gj4C8LNilfH6u6xu7QI/y0tkJCp3yQQpde/3qeK8E2FOfrZ4ENOoG/r2eKZws15bN6HPj09PhaJoqBhdbJdLpA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Runtime.CompilerServices.Unsafe", "System.Memory", "System.Threading.Tasks.Extensions"], "net48": ["System.Runtime.CompilerServices.Unsafe", "System.Memory", "System.Threading.Tasks.Extensions"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Build.Utilities.Core", "id": "Microsoft.Build.Utilities.Core", "version": "17.14.28", "sha512": "sha512-A5uyO5HysGJRFR3IjjVKJ0Y69USn3E5Vlt/h51yID5Ynts4zHdh5ZELeU1gCoeF8i3tE21gO2u+QQLqQlb/iUg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net462": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net47": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net471": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net472": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net6.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net7.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net8.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net9.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netcoreapp2.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netcoreapp2.2": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netcoreapp3.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netcoreapp3.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netstandard2.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis", "id": "Microsoft.CodeAnalysis", "version": "4.14.0", "sha512": "sha512-eNBbL927Lc1Nh24ElWJmlGA928O9tu4mgWGOqmMFe6sskqQWCdnronCrrzwUdhBsBIjfx898MOCMOXuZQMtqOg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net9.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Microsoft.CodeAnalysis.Analyzers", "id": "Microsoft.CodeAnalysis.Analyzers", "version": "3.11.0", "sha512": "sha512-tP9SLzLK72XCExlh8KXfrKbU6ycmZL3ExGl/a3Ml7LNy2Uaam7gFjjUmdzyTYkMXTyckCHHpzx7bD6BMumh8Bg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.Common", "id": "Microsoft.CodeAnalysis.Common", "version": "4.12.0", "sha512": "sha512-83sYPF0SekVhecApCFXsLCsQL9qFzAl5ieCEqVb8Uo08nV34YD3cfq7FLv6EkhnAwPbP7ky19sAEEqYLDUrxWA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net462": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net47": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net471": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net472": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net48": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net5.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net6.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net7.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net8.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netstandard2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.CSharp", "id": "Microsoft.CodeAnalysis.CSharp", "version": "4.12.0", "sha512": "sha512-Dbb/taxFill9/+2HRJufXW3udAtJaQw3+LzbWTDyYx7Z02HVdU5ydMXXTqg5lFgSmLDNBe+B8jRuI2eYw8OBOA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.CSharp.Workspaces", "id": "Microsoft.CodeAnalysis.CSharp.Workspaces", "version": "4.12.0", "sha512": "sha512-YwFqDAYHJrf02FyGU8nQnaWNryZXuDV0r8pVgWjRtxAFDWfaU5CZxvU/4NsS6GSnEsWp6W/e49QMHsDXTJW/KA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.VisualBasic", "id": "Microsoft.CodeAnalysis.VisualBasic", "version": "4.12.0", "sha512": "sha512-le1vRWFDjf9mYrVwhxw+rNZpRg/AvBi9aK+4zfn47qN2S7XPXtDwdz/dvxVg8bKJMfkwK1WPi2Bvlc7naPdaYg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "id": "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "version": "4.12.0", "sha512": "sha512-j/XDFfNu38FSTJOIhkB8pvLWNVNqNhaZTRtLuH/WsHUsnYfIztaDW9seR7OsUBF5LuZIKQ9uaCrj7p+0/BgPkw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.Workspaces.Common", "id": "Microsoft.CodeAnalysis.Workspaces.Common", "version": "4.12.0", "sha512": "sha512-bzZOMF3kAtQhc5kcUILy0GyhgePksk/j9DJtlvFex1UYNgXJUoEkA6IUGootH1Z6GH4Z5BuLNXiFzsz9oJwbcQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeCoverage", "id": "Microsoft.CodeCoverage", "version": "17.12.0", "sha512": "sha512-POBqg788rrLApvncy8rvtyJ3ynsBdU0/SGUXD+vPqyRDM/aUJbPZWx01qalGJRK1GcArSku8QDd9AVMa0TkCkA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Extensions.ObjectPool", "id": "Microsoft.Extensions.ObjectPool", "version": "9.0.3", "sha512": "sha512-0s2vnkWqUSPhhe+Llybuli0LMon5Mf7Mx9NSO9ErGFGU+dSZqwz1Ixa7mXJo2W+Y74BXYE+yfU0HIsPUMOkwZQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.NET.StringTools", "id": "Microsoft.NET.StringTools", "version": "17.12.6", "sha512": "sha512-uCT/G0W1wUteqfrriWHfLfFmArka8ISo6nUkC5gQzYZYm2PSTuqfS14DEsY0gqDuQpcLLLaYTDcEM0SA2Za5vA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.NET.Test.Sdk", "id": "Microsoft.NET.Test.Sdk", "version": "17.12.0", "sha512": "sha512-hGf8I8+yo15etavoMd+7OXcOG6/G7HYPDEJg5aQnhMzsxaUpq+udNZzSxmEN9rGTWMZOAVFcyNXNL7YBsN6chw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": ["Microsoft.CodeCoverage"], "net47": ["Microsoft.CodeCoverage"], "net471": ["Microsoft.CodeCoverage"], "net472": ["Microsoft.CodeCoverage"], "net48": ["Microsoft.CodeCoverage"], "net5.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "net6.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "net7.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "net8.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "net9.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.Common", "id": "Microsoft.CodeAnalysis.Common", "version": "4.14.0", "sha512": "sha512-k9AIzOrtcZVqr9+lmcEW0vY80emyXx5JB/757K0HUF96GeUeiTD+djOlFF2y7k4XPZo20Lru4tDgQos+VKBr0w==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net462": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net47": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net471": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net472": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net48": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net5.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net6.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net7.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net8.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netstandard2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.CSharp", "id": "Microsoft.CodeAnalysis.CSharp", "version": "4.14.0", "sha512": "sha512-kqS2NihVvNQHxzLePtyYiiJmFzoYO9Wm46O9DhfUgIIf5NwTbvSy66kV9EM+qAHmGpi7zQy4w8JU6DFnPlAyTA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.CSharp.Workspaces", "id": "Microsoft.CodeAnalysis.CSharp.Workspaces", "version": "4.14.0", "sha512": "sha512-q9VD/wqMEGW0S5WIKuTZ4Wr9EpsZJQrQxqCodxjlsfW0bWl7mOQ4zA7k0Nf80ZrEe7Edaz6+3SBvrALiUcaHzA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.VisualBasic", "id": "Microsoft.CodeAnalysis.VisualBasic", "version": "4.14.0", "sha512": "sha512-vXhNyQk07THoSHzsu/fM48tFFHYAZQumfT7uDJuL/5ZO4CRgJK9Zr6UOJOwX1Df8N//lRMeymYyT+qiAmnWiYA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "id": "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "version": "4.14.0", "sha512": "sha512-LZMVjjbRTcKOtgVDz/sZn+AXBNGL4iKYnWwu5eOvvRcdXaLNlOA7bYtTZOnSMlqig7b/3gMzkoaLqcJ+7hgddg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.Workspaces.Common", "id": "Microsoft.CodeAnalysis.Workspaces.Common", "version": "4.14.0", "sha512": "sha512-m/c+FWBNr/JgCYRJ/jh14U9oAtPxHTgDiujb+19QG1AA3KMNZed+UQ51PRSaOt9CbIoMubZp2AkUMSeioz4EHQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeCoverage", "id": "Microsoft.CodeCoverage", "version": "18.0.0", "sha512": "sha512-HT0zpIWW9Q0Csllqo7lefZ27HE6dl5gfh7NA4FPZjEURenH2GsvpRSZ63b1d3klDphxiX8bpxKwVSzyURhhgkQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Extensions.ObjectPool", "id": "Microsoft.Extensions.ObjectPool", "version": "9.0.10", "sha512": "sha512-mx7sdMdkCBJuJQkSEaV9wQaB39+ciVUX0VCB7YrqAGvxyBkLRR0mgl9v7j4c6lVMeRZH79FgKOy1WaQbSyhVKA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.NET.StringTools", "id": "Microsoft.NET.StringTools", "version": "17.14.28", "sha512": "sha512-oJDGPNoVuWOmKTPpFK0lJnVwbLMRsm2oxgxBFOMKBYzSZtmiS0kcoednhArAeAicV2aSUFiuor1pw7JK/p2LwQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.NET.Test.Sdk", "id": "Microsoft.NET.Test.Sdk", "version": "18.0.0", "sha512": "sha512-+0iHCuP77nxZLLfEhCNDMOcy8+qC7IFtsLrSwSzp0qc7pUs2J28Stu2c+m9AEKkKdvhsMKB/AhlFOSyeOpdKVg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": ["Microsoft.CodeCoverage"], "net47": ["Microsoft.CodeCoverage"], "net471": ["Microsoft.CodeCoverage"], "net472": ["Microsoft.CodeCoverage"], "net48": ["Microsoft.CodeCoverage"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "net9.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Microsoft.NETCore.Platforms", "id": "Microsoft.NETCore.Platforms", "version": "7.0.4", "sha512": "sha512-mcQWjuDBh4WHGG4WcBI0k025WAdA2afMm6fs42sm1f+3gRyNQUiuMVT5gAWNUGSHmlu6qn/TCnAQpfl4Gm6cBw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Microsoft.NETCore.Targets", "id": "Microsoft.NETCore.Targets", "version": "5.0.0", "sha512": "sha512-hYHm3JAjQO/nySxcl1EpZhYEW+2P3H1eLZNr+QxgO5TnLS6hqtfi5WchjQzjid45MYmhy2X7IOmcWtDP4fpMGw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.TestPlatform.ObjectModel", "id": "Microsoft.TestPlatform.ObjectModel", "version": "17.12.0", "sha512": "sha512-klsXMgAPNWYo3ceakLkod4wYrk4lAV2Ehi676zUKgiVpQ5Yj6q3vsMhk/3pm97Ltk/hdcSW0rJKJvcQvTzPgYA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Reflection.Metadata"], "net462": ["System.Reflection.Metadata"], "net47": ["System.Reflection.Metadata"], "net471": ["System.Reflection.Metadata"], "net472": ["System.Reflection.Metadata"], "net48": ["System.Reflection.Metadata"], "net5.0": ["System.Reflection.Metadata"], "net6.0": ["System.Reflection.Metadata"], "net7.0": ["System.Reflection.Metadata"], "net8.0": ["System.Reflection.Metadata"], "net9.0": ["System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Reflection.Metadata"], "netcoreapp2.1": ["System.Reflection.Metadata"], "netcoreapp2.2": ["System.Reflection.Metadata"], "netcoreapp3.0": ["System.Reflection.Metadata"], "netcoreapp3.1": ["System.Reflection.Metadata"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Reflection.Metadata"], "netstandard2.1": ["System.Reflection.Metadata"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.TestPlatform.TestHost", "id": "Microsoft.TestPlatform.TestHost", "version": "17.12.0", "sha512": "sha512-gYM2BOGQvFEP2fZt61f3f5Gu+imL1G1bvGUrbJjpYcl66R6uzs5yESg0XMn8IgUgldz8RldOOaYmjk2KcSeG1Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "net6.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "net7.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "net8.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "net9.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.TestPlatform.ObjectModel", "id": "Microsoft.TestPlatform.ObjectModel", "version": "18.0.0", "sha512": "sha512-/ShCZQuIxaxzGjRQqCYTLD/KnG1yQKsNZXDUtjO2d55IOB8FEyhXleLw2hw8QlK/1gkblyJsp4BfQ8BQFaEAlg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Reflection.Metadata"], "net462": ["System.Reflection.Metadata"], "net47": ["System.Reflection.Metadata"], "net471": ["System.Reflection.Metadata"], "net472": ["System.Reflection.Metadata"], "net48": ["System.Reflection.Metadata"], "net5.0": ["System.Reflection.Metadata"], "net6.0": ["System.Reflection.Metadata"], "net7.0": ["System.Reflection.Metadata"], "net8.0": ["System.Reflection.Metadata"], "net9.0": ["System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Reflection.Metadata"], "netcoreapp2.1": ["System.Reflection.Metadata"], "netcoreapp2.2": ["System.Reflection.Metadata"], "netcoreapp3.0": ["System.Reflection.Metadata"], "netcoreapp3.1": ["System.Reflection.Metadata"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Reflection.Metadata"], "netstandard2.1": ["System.Reflection.Metadata"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.TestPlatform.TestHost", "id": "Microsoft.TestPlatform.TestHost", "version": "18.0.0", "sha512": "sha512-9IZUooXUUnh+z04QtWCu5iku4D4FAfJajP1su+I6741AxXa0bnXPo2125vqjvK0Khfsk16zskgDpG6vf2Mjubg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "net9.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Microsoft.Win32.Primitives", "id": "Microsoft.Win32.Primitives", "version": "4.3.0", "sha512": "sha512-Nm8Hp51y9tYcK3xD6qk43Wjftrg1mdH24CCJsTb6gr7HS21U1uA+CKPGEtUcVZbjU1y8Kynzm5eoJ7Pnx5gm8A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Mono.Posix.NETStandard", "id": "Mono.Posix.NETStandard", "version": "1.0.0", "sha512": "sha512-RtGiutQZJAmajvQ0QvBvh73VJye85iW9f9tjZlzF88idLxNMo4lAktP/4Y9ilCpais0LDO0tpoICt9Hdv6wooA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "MSBuild.StructuredLogger", "id": "MSBuild.StructuredLogger", "version": "2.2.386", "sha512": "sha512-m8ErawcbeDJ+nWtN62vh2OPHARvLpSqhOBCedtYniPGB059wSs2vuGPxfBcVGqVcjpZgntEY4vDOzGyAVB7atA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable"], "net9.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Newtonsoft.Json", "id": "Newtonsoft.Json", "version": "13.0.3", "sha512": "sha512-mbJSvHfRxfX3tR/U6n1WU+mWHXswYc+SB/hkOpx8yZZe68hNZGfymJu0cjsaJEkVzCMqePiU6LdIyogqfIn7kg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Buffers", "id": "System.Buffers", "version": "4.6.0", "sha512": "sha512-iRbJyTSX9bJVpURLGLiW8Fgk5Vfm5iGCztw4IG4IJYcxJy+BXTCEgEWFeJtO6c+kPnUmQu87KK5m188+qbErcQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Collections.Immutable", "id": "System.Collections.Immutable", "version": "9.0.0", "sha512": "sha512-z/Oo7nxWmZ0Y578vj8EUVrFJZ3DX6OMuUGlgeYgeeUZOFGT89XfaM8fDFMvJy6+mOIqW6ux5NdNzEnlTnQGJ7A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition", "id": "System.Composition", "version": "9.0.0", "sha512": "sha512-aWcyK90nIChHyxq7rpQ83Bbvt/t9l1X6yQtkvODaZ+rJlYHUMVpSji0YXIZTX5VlcWRCVRFdeEY767BCOzueaw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net462": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net47": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net471": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net472": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net48": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net5.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net6.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net7.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net8.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net9.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp2.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp2.2": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp3.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp3.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netstandard2.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition.AttributedModel", "id": "System.Composition.AttributedModel", "version": "9.0.0", "sha512": "sha512-oYuQzlIvO31GxSlTo6NCU+RnK9dVb1m154BNE7VGm9PUyJM+RrOQss8cNbMj+iIWVcp6VRnyJlBJ3MfzYo14AA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition.Convention", "id": "System.Composition.Convention", "version": "9.0.0", "sha512": "sha512-3efhxn/7hQI9kNy6M6UUwWrMJCzdBZZ4hkYS3MUxqXyGdQ2sLCWToX1nLnnrRYafcdRSMOY2naMPNlRAEKDAGA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel"], "net462": ["System.Composition.AttributedModel"], "net47": ["System.Composition.AttributedModel"], "net471": ["System.Composition.AttributedModel"], "net472": ["System.Composition.AttributedModel"], "net48": ["System.Composition.AttributedModel"], "net5.0": ["System.Composition.AttributedModel"], "net6.0": ["System.Composition.AttributedModel"], "net7.0": ["System.Composition.AttributedModel"], "net8.0": ["System.Composition.AttributedModel"], "net9.0": ["System.Composition.AttributedModel"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel"], "netcoreapp2.1": ["System.Composition.AttributedModel"], "netcoreapp2.2": ["System.Composition.AttributedModel"], "netcoreapp3.0": ["System.Composition.AttributedModel"], "netcoreapp3.1": ["System.Composition.AttributedModel"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel"], "netstandard2.1": ["System.Composition.AttributedModel"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition.Hosting", "id": "System.Composition.Hosting", "version": "9.0.0", "sha512": "sha512-zLPGbMYw6y2GoNBjcoPnvXt7wSJM/qIG1fU2Do8kDObDTYWHG6fFOhulSViX0Ip2j+qGeuCESqEswCRG+xDvwA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.Runtime"], "net462": ["System.Composition.Runtime"], "net47": ["System.Composition.Runtime"], "net471": ["System.Composition.Runtime"], "net472": ["System.Composition.Runtime"], "net48": ["System.Composition.Runtime"], "net5.0": ["System.Composition.Runtime"], "net6.0": ["System.Composition.Runtime"], "net7.0": ["System.Composition.Runtime"], "net8.0": ["System.Composition.Runtime"], "net9.0": ["System.Composition.Runtime"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.Runtime"], "netcoreapp2.1": ["System.Composition.Runtime"], "netcoreapp2.2": ["System.Composition.Runtime"], "netcoreapp3.0": ["System.Composition.Runtime"], "netcoreapp3.1": ["System.Composition.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.Runtime"], "netstandard2.1": ["System.Composition.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition.Runtime", "id": "System.Composition.Runtime", "version": "9.0.0", "sha512": "sha512-P777aBPIwmLvL0Q8mPA7RiiomfjqLTbpX/xzKpk7YTJLcvPDMTvRIfNFognEpfJYRLadBymaBIU81vW3MzZYnA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition.TypedParts", "id": "System.Composition.TypedParts", "version": "9.0.0", "sha512": "sha512-7b7mkn4H0149jNKD1tZRUG2gmkszNzO6YAGV+xEsxdfIU+5SLhxWRYJpqm1zKzKNdzpKUW93oyEFGcTuoNvqGg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net462": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net47": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net471": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net472": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net48": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net5.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net6.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net7.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net8.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net9.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp2.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp2.2": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp3.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp3.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netstandard2.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Configuration.ConfigurationManager", "id": "System.Configuration.ConfigurationManager", "version": "9.0.0", "sha512": "sha512-RMASWXcds+sKAl/W6itFM8hvq9aha8CRqSv2nrjb8TUTSMLjjn80h1Lrob7km+v/1UfpUU/Nr67egAjZjsCgIw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Security.Cryptography.ProtectedData"], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Security.Cryptography.ProtectedData"], "net6.0": ["System.Security.Cryptography.ProtectedData"], "net7.0": ["System.Security.Cryptography.ProtectedData"], "net8.0": ["System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "net9.0": ["System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Security.Cryptography.ProtectedData"], "netcoreapp2.1": ["System.Security.Cryptography.ProtectedData"], "netcoreapp2.2": ["System.Security.Cryptography.ProtectedData"], "netcoreapp3.0": ["System.Security.Cryptography.ProtectedData"], "netcoreapp3.1": ["System.Security.Cryptography.ProtectedData"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Security.Cryptography.ProtectedData"], "netstandard2.1": ["System.Security.Cryptography.ProtectedData"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Diagnostics.EventLog", "id": "System.Diagnostics.EventLog", "version": "9.0.0", "sha512": "sha512-ouyDUtZFOgkAPYmYUzioIjMxmgdI/E3j1sIuAbkXv4cTFOisf5FvQrbwi0KC84GUJMjkImXbaZqlTH9M5dJz2Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "MSBuild.StructuredLogger", "id": "MSBuild.StructuredLogger", "version": "2.3.71", "sha512": "sha512-u2Tw1WLYy+2VdccrQWyN3AY8zcFj4evfwqWMd7aBiicX3eGfkWkME7lsh9K2XS/+S8KVkjGNPI/g78E2A7Zx0g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable"], "net9.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "NaturalSort.Extension", "id": "NaturalSort.Extension", "version": "4.4.0", "sha512": "sha512-lcwYGJO2xZylcLW6B64tp6wE9UAt6fSn6el8MSAly5+6QG1vc/9uXQz+dsi69q1DxFv2TOaWrrheHNzg4yvy3Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Newtonsoft.Json", "id": "Newtonsoft.Json", "version": "13.0.4", "sha512": "sha512-bR+v+E/yJ6g7GV2uXw2OrUSjYYfjLkOLC8JD4kCS23msLapnKtdJPBJA75fwHH++ErIffeIqzYITLxAur4KAXA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Buffers", "id": "System.Buffers", "version": "4.6.1", "sha512": "sha512-qve/dFwECwehSWlZmpkrrlIeATCvo/Hw2koyMrUVcDBy5gXAQrnwX8pHEoqgj8DgkrWuWW1DrQbFqoMbo+Fvrg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Collections.Immutable", "id": "System.Collections.Immutable", "version": "9.0.10", "sha512": "sha512-00LI4a7blU063Z0lCdRVLlh0Mzl1yYLZaxlOZe0MiNH+TELklX0Mne/XKU7UuCZQQh6FHrcEUPDjxIsy2jZUxg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition", "id": "System.Composition", "version": "9.0.10", "sha512": "sha512-PyUH0f6tdjlQBntP/73cqaR53fjAZkaqGRatIi1BgZIfQH/Z0k1rPHaklBZqFV5+wKUkL74+49TrFPnB/zw+2Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net462": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net47": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net471": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net472": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net48": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net5.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net6.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net7.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net8.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net9.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp2.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp2.2": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp3.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp3.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netstandard2.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition.AttributedModel", "id": "System.Composition.AttributedModel", "version": "9.0.10", "sha512": "sha512-9Gx8SRD1DJcQLca7ZaeMjU+qUd4EdxDj6urKR4TizWx+NM7L+beoAn07XCKkdJsweqF6gUK7el93DhUbpssSqA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition.Convention", "id": "System.Composition.Convention", "version": "9.0.10", "sha512": "sha512-hzvwytBYpKoDX+OJpHXKoupR+BYy+QCUY5vSWOTvJLagAm3zYJKxAUR3l8OyPy46tnQ+3lK/6f5DeLHiTfbIIw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel"], "net462": ["System.Composition.AttributedModel"], "net47": ["System.Composition.AttributedModel"], "net471": ["System.Composition.AttributedModel"], "net472": ["System.Composition.AttributedModel"], "net48": ["System.Composition.AttributedModel"], "net5.0": ["System.Composition.AttributedModel"], "net6.0": ["System.Composition.AttributedModel"], "net7.0": ["System.Composition.AttributedModel"], "net8.0": ["System.Composition.AttributedModel"], "net9.0": ["System.Composition.AttributedModel"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel"], "netcoreapp2.1": ["System.Composition.AttributedModel"], "netcoreapp2.2": ["System.Composition.AttributedModel"], "netcoreapp3.0": ["System.Composition.AttributedModel"], "netcoreapp3.1": ["System.Composition.AttributedModel"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel"], "netstandard2.1": ["System.Composition.AttributedModel"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition.Hosting", "id": "System.Composition.Hosting", "version": "9.0.10", "sha512": "sha512-fPTM06IdvHrFIRJyYEpVKl5W7UTT4U3E+iiAVg3DFfuQ4Abe4XVhkoHn3DB4pUTOU2RpVc2+PxQ6y9hULPta1A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.Runtime"], "net462": ["System.Composition.Runtime"], "net47": ["System.Composition.Runtime"], "net471": ["System.Composition.Runtime"], "net472": ["System.Composition.Runtime"], "net48": ["System.Composition.Runtime"], "net5.0": ["System.Composition.Runtime"], "net6.0": ["System.Composition.Runtime"], "net7.0": ["System.Composition.Runtime"], "net8.0": ["System.Composition.Runtime"], "net9.0": ["System.Composition.Runtime"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.Runtime"], "netcoreapp2.1": ["System.Composition.Runtime"], "netcoreapp2.2": ["System.Composition.Runtime"], "netcoreapp3.0": ["System.Composition.Runtime"], "netcoreapp3.1": ["System.Composition.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.Runtime"], "netstandard2.1": ["System.Composition.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition.Runtime", "id": "System.Composition.Runtime", "version": "9.0.10", "sha512": "sha512-8iDtNLXkjiFwir6Ocrm4XCC19Jzj06OHTvDeL6BZ4guWhCCGRCl6nWJVPonq6G2kZmNiDfraOwC8RgV5qPAAjg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition.TypedParts", "id": "System.Composition.TypedParts", "version": "9.0.10", "sha512": "sha512-7OUDlDYszrhjJ8/r5na3N07XzBWl8e6/87dyGoDraDHlkl+APL4dbZ8TfniaXLJxZabDHVaaMLpViiIf+Fb9Ng==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net462": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net47": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net471": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net472": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net48": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net5.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net6.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net7.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net8.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net9.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp2.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp2.2": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp3.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp3.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netstandard2.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Configuration.ConfigurationManager", "id": "System.Configuration.ConfigurationManager", "version": "9.0.10", "sha512": "sha512-/LM2cc6vZulHDcDsd+9vntVD9j953k8WCCzB4Fea6YxOoIexpGP8iJhC7v13hKN5V66MDprjCJRjHHhDaDuOXw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Security.Cryptography.ProtectedData"], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Security.Cryptography.ProtectedData"], "net6.0": ["System.Security.Cryptography.ProtectedData"], "net7.0": ["System.Security.Cryptography.ProtectedData"], "net8.0": ["System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "net9.0": ["System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Security.Cryptography.ProtectedData"], "netcoreapp2.1": ["System.Security.Cryptography.ProtectedData"], "netcoreapp2.2": ["System.Security.Cryptography.ProtectedData"], "netcoreapp3.0": ["System.Security.Cryptography.ProtectedData"], "netcoreapp3.1": ["System.Security.Cryptography.ProtectedData"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Security.Cryptography.ProtectedData"], "netstandard2.1": ["System.Security.Cryptography.ProtectedData"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Diagnostics.EventLog", "id": "System.Diagnostics.EventLog", "version": "9.0.10", "sha512": "sha512-3rC2TD7/ikgwu5Z7BzViMVDDp7RGyaej8pvVDzhy6rI7QZ9+x6DPiOPD5y4FjePxTLh/rFjMNcP7nG9IHWsB2Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.IO", "id": "System.IO", "version": "4.3.0", "sha512": "sha512-v8paIePhmGuXZbE9xvvNb4uJ5ME4OFXR1+8la/G/L1GIl2nbU2WFnddgb79kVK3U2us7q1aZT/uY/R0D/ovB5g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.IO.FileSystem", "id": "System.IO.FileSystem", "version": "4.3.0", "sha512": "sha512-T7WB1vhblSmgkaDpdGM3Uqo55Qsr5sip5eyowrwiXOoHBkzOx3ePd9+Zh97r9NzOwFCxqX7awO6RBxQuao7n7g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": ["System.IO.FileSystem.Primitives"], "net461": ["System.IO.FileSystem.Primitives"], "net462": ["System.IO.FileSystem.Primitives"], "net47": ["System.IO.FileSystem.Primitives"], "net471": ["System.IO.FileSystem.Primitives"], "net472": ["System.IO.FileSystem.Primitives"], "net48": ["System.IO.FileSystem.Primitives"], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.IO.FileSystem.Primitives", "id": "System.IO.FileSystem.Primitives", "version": "4.3.0", "sha512": "sha512-WIWVPQlYLP/Zc9I6IakpBk1y8ryVGK83MtZx//zGKKi2hvHQWKAB7moRQCOz5Is/wNDksiYpocf3FeA3le6e5Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Runtime"], "net6.0": ["System.Runtime"], "net7.0": ["System.Runtime"], "net8.0": ["System.Runtime"], "net9.0": ["System.Runtime"], "netcoreapp1.0": ["System.Runtime"], "netcoreapp1.1": ["System.Runtime"], "netcoreapp2.0": ["System.Runtime"], "netcoreapp2.1": ["System.Runtime"], "netcoreapp2.2": ["System.Runtime"], "netcoreapp3.0": ["System.Runtime"], "netcoreapp3.1": ["System.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": ["System.Runtime"], "netstandard1.4": ["System.Runtime"], "netstandard1.5": ["System.Runtime"], "netstandard1.6": ["System.Runtime"], "netstandard2.0": ["System.Runtime"], "netstandard2.1": ["System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.IO.Pipelines", "id": "System.IO.Pipelines", "version": "9.0.0", "sha512": "sha512-XIeVKR80wuDl05DI4Hufye7TT4D1Ca1Bm4zJPc7mgnodrCy0OfcQ1C00A7se56dMvg48cI64TMD+YKcZl+qOaA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net462": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net47": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net471": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net472": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net48": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net5.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net6.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net7.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Memory", "id": "System.Memory", "version": "4.6.0", "sha512": "sha512-TY7NpV4Vv0vwanZ6J8vrLGfybbPKhAvL3oTx7EndsZ/J/71sm01JPCHImtvYtwh1vmFat/GPS/id9htqIPK+6g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.IO.Pipelines", "id": "System.IO.Pipelines", "version": "9.0.10", "sha512": "sha512-kQg8x+mbt8Xi1mwm32DVEz6DtfqKn9XUGziGQvdNJ2QEGWvufcZfRWtxAf9nB+/B1FT1x7W4Wh2Fr9lcKlVWPA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net462": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net47": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net471": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net472": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net48": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net5.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net6.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net7.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Memory", "id": "System.Memory", "version": "4.6.3", "sha512": "sha512-NXcNYlWoXe5cz9sb8Huo6x2dCZVYkhwKtgE00n/MoI8V4ZI/7/t+EI5bOhQFlZfFjjqM8+U6prjU/aARt7H/tA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Net.Primitives", "id": "System.Net.Primitives", "version": "4.3.1", "sha512": "sha512-BgdlyYCI7rrdh36p3lMTqbkvaafPETpB1bk9iQlFdQxYE692kiXvmseXs8ghL+gEgQF2xgDc8GH4QLkSgUUs+Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Numerics.Vectors", "id": "System.Numerics.Vectors", "version": "4.6.0", "sha512": "sha512-dxZWbnnb21+5QuKAiUEntJirh5KiU1nqlLWtBu4v9/Fx1RnsgNn8T4XbmQhvCq/T94201P6EsGG2z2Y5ded1yA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Reflection.Metadata", "id": "System.Reflection.Metadata", "version": "9.0.0", "sha512": "sha512-jz+Y2m/CpdPvdjCNRigiWJYKFusdkfJlxDx4V5cWX2TubAMaz5CZpODBD/P2+20SpWvmZG6J3UYjl+R2Yg7yFw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Collections.Immutable", "System.Memory"], "net462": ["System.Collections.Immutable", "System.Memory"], "net47": ["System.Collections.Immutable", "System.Memory"], "net471": ["System.Collections.Immutable", "System.Memory"], "net472": ["System.Collections.Immutable", "System.Memory"], "net48": ["System.Collections.Immutable", "System.Memory"], "net5.0": ["System.Collections.Immutable", "System.Memory"], "net6.0": ["System.Collections.Immutable", "System.Memory"], "net7.0": ["System.Collections.Immutable", "System.Memory"], "net8.0": ["System.Collections.Immutable"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.1": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.2": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.1": ["System.Collections.Immutable", "System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Collections.Immutable", "System.Memory"], "netstandard2.1": ["System.Collections.Immutable", "System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Reflection.MetadataLoadContext", "id": "System.Reflection.MetadataLoadContext", "version": "9.0.0", "sha512": "sha512-or1DAn2dl2SjxPA4tuDG9RxTxeERdHIU7gUJjNf8WhT6D08ZsHbmSZpP2rKpgGOXHMhmXf3CTDNmfa4cSD2DtA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net462": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net47": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net471": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net472": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net48": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net5.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net6.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net7.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net8.0": ["System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp2.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp2.2": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp3.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp3.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netstandard2.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Numerics.Vectors", "id": "System.Numerics.Vectors", "version": "4.6.1", "sha512": "sha512-/rkvpUeUPlCY/2qYVQKiUsj5IKaXZcy2+SQAGAfemAdyEF5AgIgYOFNSTMWDXo09JWFX9HB+wV1yCyi2Mwi3TA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Reflection.Metadata", "id": "System.Reflection.Metadata", "version": "9.0.10", "sha512": "sha512-3ZztNrfQJww1qZ9UgdB5aTAYlAIWd5dMyyBagAC8jth6iG5vxawtaGbZJMh4xkL9A5v6Ng48YL+hAjt08GBWKQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Collections.Immutable", "System.Memory"], "net462": ["System.Collections.Immutable", "System.Memory"], "net47": ["System.Collections.Immutable", "System.Memory"], "net471": ["System.Collections.Immutable", "System.Memory"], "net472": ["System.Collections.Immutable", "System.Memory"], "net48": ["System.Collections.Immutable", "System.Memory"], "net5.0": ["System.Collections.Immutable", "System.Memory"], "net6.0": ["System.Collections.Immutable", "System.Memory"], "net7.0": ["System.Collections.Immutable", "System.Memory"], "net8.0": ["System.Collections.Immutable"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.1": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.2": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.1": ["System.Collections.Immutable", "System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Collections.Immutable", "System.Memory"], "netstandard2.1": ["System.Collections.Immutable", "System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Reflection.MetadataLoadContext", "id": "System.Reflection.MetadataLoadContext", "version": "9.0.10", "sha512": "sha512-qf9IjoUO2XfK4BTPhCIFDYAsiWtFCTpyiklmxoNK2Ys1wZdoVe5C3j5BH2ajSDWy2mAQcN1n+Eh/3uhd3oUcEA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net462": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net47": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net471": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net472": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net48": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net5.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net6.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net7.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net8.0": ["System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp2.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp2.2": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp3.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp3.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netstandard2.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Runtime", "id": "System.Runtime", "version": "4.3.1", "sha512": "sha512-Al69mPDfzdD+bKGK2HAfB+lNFOHFqnkqzNnUJmmvUe1/qEPK9M7EiTT4zuycKDPy7ev11xz8XVgJWKP0hm7NIA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Runtime.CompilerServices.Unsafe", "id": "System.Runtime.CompilerServices.Unsafe", "version": "6.1.0", "sha512": "sha512-iY0upfdQeiaCfoxT+m4XJyb0IJNk4B9TLQFanOCOrU9X5x1x2TjKx0OFbLmg1VG2dOyL5nHMn198SBQ91Yy1kQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Runtime.CompilerServices.Unsafe", "id": "System.Runtime.CompilerServices.Unsafe", "version": "6.1.2", "sha512": "sha512-t2aXWJZBkAkRrTOnw31OBELKEVSDD5YvC3O5dXaHFsR66/nRTKm1y3Iq6NwFI5u5IlKrWYfdan66V+GKKkY8hQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Runtime.Handles", "id": "System.Runtime.Handles", "version": "4.3.0", "sha512": "sha512-CluvHdVUv54BvLTOCCyybugreDNk/rR8unMPruzXDtxSjvrQOU3M4R831/lQf4YI8VYp668FGQa/01E+Rq8PEQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Security.Cryptography.ProtectedData", "id": "System.Security.Cryptography.ProtectedData", "version": "9.0.0", "sha512": "sha512-Mbc5s1XBLje0N1idqILQUqWnG8RVj9p7uK110yxZXTzZq3CN7jaCFEySK52kA+dPYtByzcRtA/FUnK4o/sinSw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory"], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Memory"], "net6.0": ["System.Memory"], "net7.0": ["System.Memory"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory"], "netcoreapp2.1": ["System.Memory"], "netcoreapp2.2": ["System.Memory"], "netcoreapp3.0": ["System.Memory"], "netcoreapp3.1": ["System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory"], "netstandard2.1": ["System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Security.Cryptography.ProtectedData", "id": "System.Security.Cryptography.ProtectedData", "version": "9.0.10", "sha512": "sha512-yR8dvnme5ndA3L6Q6F/2N+4QBCi8sdfGWg9lmRVNBZO+evqIt323UdXMu8b8MnMYoyxXaml+vTEl74t5Nu7ABQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory"], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Memory"], "net6.0": ["System.Memory"], "net7.0": ["System.Memory"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory"], "netcoreapp2.1": ["System.Memory"], "netcoreapp2.2": ["System.Memory"], "netcoreapp3.0": ["System.Memory"], "netcoreapp3.1": ["System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory"], "netstandard2.1": ["System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Security.Principal", "id": "System.Security.Principal", "version": "4.3.0", "sha512": "sha512-24oe0NGJY32e+DFHVQzl2okM9uwYmn0Aa6nehqtVZ55/Al4Yva7S3BN934Kn5qATH7TVTUJkgxhisdfF7mKDfg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Runtime"], "net6.0": ["System.Runtime"], "net7.0": ["System.Runtime"], "net8.0": ["System.Runtime"], "net9.0": ["System.Runtime"], "netcoreapp1.0": ["System.Runtime"], "netcoreapp1.1": ["System.Runtime"], "netcoreapp2.0": ["System.Runtime"], "netcoreapp2.1": ["System.Runtime"], "netcoreapp2.2": ["System.Runtime"], "netcoreapp3.0": ["System.Runtime"], "netcoreapp3.1": ["System.Runtime"], "netstandard": [], "netstandard1.0": ["System.Runtime"], "netstandard1.1": ["System.Runtime"], "netstandard1.2": ["System.Runtime"], "netstandard1.3": ["System.Runtime"], "netstandard1.4": ["System.Runtime"], "netstandard1.5": ["System.Runtime"], "netstandard1.6": ["System.Runtime"], "netstandard2.0": ["System.Runtime"], "netstandard2.1": ["System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Text.Encoding", "id": "System.Text.Encoding", "version": "4.3.0", "sha512": "sha512-b/f+7HMTpxIfeV7H03bkuHKMFylCGfr9/U6gePnfFFW0aF8LOWLDgQCY6V1oWUqDksC3mdNuyChM1vy9TP4sZw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Text.Encoding.CodePages", "id": "System.Text.Encoding.CodePages", "version": "9.0.0", "sha512": "sha512-rMAcE2cpS8RvPR5iK6WkYdZKJLsUw5BRqG3d/LR0dl8x17ezOj43AWRhp4LRIFgydWjOOn/Z4w//l8wcowngvQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Threading.Channels", "id": "System.Threading.Channels", "version": "9.0.0", "sha512": "sha512-6q+SC/qL5eeX9t3zUjmtsccStVusUvYXdJFYGf3ihM/8TionV+iZxi3mxDPPFXOiepRe7WgrIOuoaCi4+bwZ0g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Text.Encoding.CodePages", "id": "System.Text.Encoding.CodePages", "version": "9.0.10", "sha512": "sha512-LPoLnlvwb3D12yjwva2nvfzDqm4XNUBrAf/zQ5ad2IOqhTWqRm4GIXxlH4lSr3W/ET31aLtM4C4vHbr8sGEzWA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Threading.Channels", "id": "System.Threading.Channels", "version": "9.0.10", "sha512": "sha512-wMh3VX2qbwFg8rZllC1QsiXl4NjLkamNVT+O6bJG5V3sN6cwRZRza2v7f2ohFNGdGlViwUAO/PKSZgJfuJNXTg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Threading.Tasks", "id": "System.Threading.Tasks", "version": "4.3.0", "sha512": "sha512-fUiP+CyyCjs872OA8trl6p97qma/da1xGq3h4zAbJZk8zyaU4zyEfqW5vbkP80xG/Nimun1vlWBboMEk7XxdEw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Threading.Tasks.Extensions", "id": "System.Threading.Tasks.Extensions", "version": "4.6.0", "sha512": "sha512-ph8eP2gKhA6mNhj/teYwn9xCrHMc7+nBMlSMKX7BUXcZn33RVLe45TWABkcgyS6TJWYx1v1WwtylHmF3Fvg0qQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Threading.Tasks.Extensions", "id": "System.Threading.Tasks.Extensions", "version": "4.6.3", "sha512": "sha512-zWRHXIBnbfzQE1SamNoW9X5NjEcW/JNAtvVxGKd3bcg71wQVmoI3pDq+WUa2A+temXSNCm7707hmAFwwcYlK0A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Threading.ThreadPool", "id": "System.Threading.ThreadPool", "version": "4.3.0", "sha512": "sha512-RQpA+UpI6Tlpeedk5JStYk2DM/M3i5HqabI/yDbfj1xDu9bIz9kdoquVpHbh/wQjOJaOCbcgRH8iQcAUv8dRWQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Runtime", "System.Runtime.Handles"], "net6.0": ["System.Runtime", "System.Runtime.Handles"], "net7.0": ["System.Runtime", "System.Runtime.Handles"], "net8.0": ["System.Runtime", "System.Runtime.Handles"], "net9.0": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp1.0": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp1.1": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp2.0": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp2.1": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp2.2": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp3.0": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp3.1": ["System.Runtime", "System.Runtime.Handles"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": ["System.Runtime", "System.Runtime.Handles"], "netstandard1.4": ["System.Runtime", "System.Runtime.Handles"], "netstandard1.5": ["System.Runtime", "System.Runtime.Handles"], "netstandard1.6": ["System.Runtime", "System.Runtime.Handles"], "netstandard2.0": ["System.Runtime", "System.Runtime.Handles"], "netstandard2.1": ["System.Runtime", "System.Runtime.Handles"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit", "id": "xunit", "version": "2.9.2", "sha512": "sha512-bs4ccplaqCT7+jdAJhtt75uKq9qA3Jeld1ugiOgGEGSnzq8gkoa0VUqNEKkMPkBwV5COlAllNJGtGBfgxoZDrA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net20": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net30": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net35": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net40": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net403": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net45": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net451": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net452": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net46": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net461": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net462": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net47": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net471": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net472": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net48": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net5.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net6.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net7.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net8.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net9.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp1.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp1.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.2": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp3.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp3.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.2": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.3": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.4": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.5": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.6": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard2.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard2.1": ["xunit.core", "xunit.assert", "xunit.analyzers"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit", "id": "xunit", "version": "2.9.3", "sha512": "sha512-3/ayVPC7NQWQENR5REbOgXYsbhoJsmpnxQa5pO4lxbjGbckOs62nsm4kLErzc8ng7V5Xz08uwVjMqaZGJiXCrg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net20": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net30": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net35": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net40": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net403": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net45": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net451": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net452": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net46": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net461": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net462": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net47": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net471": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net472": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net48": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net5.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net6.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net7.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net8.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net9.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp1.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp1.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.2": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp3.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp3.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.2": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.3": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.4": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.5": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.6": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard2.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard2.1": ["xunit.core", "xunit.assert", "xunit.analyzers"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "xunit.abstractions", "id": "xunit.abstractions", "version": "2.0.3", "sha512": "sha512-PKJri5f0qEQPFvgY6CZR9XG8JROlWSdC/ZYLkkDQuID++Egn+yWjB+Yf57AZ8U6GRlP7z33uDQ4/r5BZPer2JA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.analyzers", "id": "xunit.analyzers", "version": "1.17.0", "sha512": "sha512-36BC2a5gEL5TDXjkzhD8dK4toNcPGdwFb4tbIODwTp4eXhRS6BURiTclfZD2vFNTq4obCzPOdwnayhppP4qtUg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.assert", "id": "xunit.assert", "version": "2.9.2", "sha512": "sha512-huNfINLH5HnyiPImimKv7liIJJ2MgRdJYT7ky3464zR62SH7o9JjsgMiSZRXha46kgTCNjKSNN1VvctC+USp7w==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.core", "id": "xunit.core", "version": "2.9.2", "sha512": "sha512-kW48d7YL7ryT4zuWTjJN491cJwY8aYiIAxDaXJRebgMIw40PmlREiiaIz33QUFmglcfLlaoRyZcI4sl70kARiw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net20": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net30": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net35": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net40": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net403": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net45": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net451": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net452": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net46": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net461": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net462": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net47": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net471": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net472": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net48": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net5.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net6.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net7.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net8.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net9.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp1.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp1.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.2": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp3.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp3.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.2": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.3": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.4": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.5": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.6": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard2.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard2.1": ["xunit.extensibility.core", "xunit.extensibility.execution"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.extensibility.core", "id": "xunit.extensibility.core", "version": "2.9.2", "sha512": "sha512-sosk+dg5Cn4N9MKOjQ1wFTvfgduqiX1DLRZHEYXIaLOuTJbCJeXfn7XhAVDGY+zeB8aX3jCKL8BcDp4EJCdZXw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["xunit.abstractions"], "net451": ["xunit.abstractions"], "net452": ["xunit.abstractions"], "net46": ["xunit.abstractions"], "net461": ["xunit.abstractions"], "net462": ["xunit.abstractions"], "net47": ["xunit.abstractions"], "net471": ["xunit.abstractions"], "net472": ["xunit.abstractions"], "net48": ["xunit.abstractions"], "net5.0": ["xunit.abstractions"], "net6.0": ["xunit.abstractions"], "net7.0": ["xunit.abstractions"], "net8.0": ["xunit.abstractions"], "net9.0": ["xunit.abstractions"], "netcoreapp1.0": ["xunit.abstractions"], "netcoreapp1.1": ["xunit.abstractions"], "netcoreapp2.0": ["xunit.abstractions"], "netcoreapp2.1": ["xunit.abstractions"], "netcoreapp2.2": ["xunit.abstractions"], "netcoreapp3.0": ["xunit.abstractions"], "netcoreapp3.1": ["xunit.abstractions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.abstractions"], "netstandard1.2": ["xunit.abstractions"], "netstandard1.3": ["xunit.abstractions"], "netstandard1.4": ["xunit.abstractions"], "netstandard1.5": ["xunit.abstractions"], "netstandard1.6": ["xunit.abstractions"], "netstandard2.0": ["xunit.abstractions"], "netstandard2.1": ["xunit.abstractions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.extensibility.execution", "id": "xunit.extensibility.execution", "version": "2.9.2", "sha512": "sha512-oOnG3GsmntYZqZleKMHFlAxxCxn+ZQrcY7GEKDFP0Zpjx/sTE61cEblJk4Dkl4He0t02DN4gmJ4hsQDoLTdo7g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["xunit.extensibility.core"], "net451": ["xunit.extensibility.core"], "net452": ["xunit.extensibility.core"], "net46": ["xunit.extensibility.core"], "net461": ["xunit.extensibility.core"], "net462": ["xunit.extensibility.core"], "net47": ["xunit.extensibility.core"], "net471": ["xunit.extensibility.core"], "net472": ["xunit.extensibility.core"], "net48": ["xunit.extensibility.core"], "net5.0": ["xunit.extensibility.core"], "net6.0": ["xunit.extensibility.core"], "net7.0": ["xunit.extensibility.core"], "net8.0": ["xunit.extensibility.core"], "net9.0": ["xunit.extensibility.core"], "netcoreapp1.0": ["xunit.extensibility.core"], "netcoreapp1.1": ["xunit.extensibility.core"], "netcoreapp2.0": ["xunit.extensibility.core"], "netcoreapp2.1": ["xunit.extensibility.core"], "netcoreapp2.2": ["xunit.extensibility.core"], "netcoreapp3.0": ["xunit.extensibility.core"], "netcoreapp3.1": ["xunit.extensibility.core"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.extensibility.core"], "netstandard1.2": ["xunit.extensibility.core"], "netstandard1.3": ["xunit.extensibility.core"], "netstandard1.4": ["xunit.extensibility.core"], "netstandard1.5": ["xunit.extensibility.core"], "netstandard1.6": ["xunit.extensibility.core"], "netstandard2.0": ["xunit.extensibility.core"], "netstandard2.1": ["xunit.extensibility.core"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.runner.utility", "id": "xunit.runner.utility", "version": "2.9.2", "sha512": "sha512-uXH4JqD2cHxrS6L/NXbaKPa+i0/RarJp68Fu+9NMVKJuDjVXDQFtnzgaP9gB+77GbjsJ14SWdJEDkh+D+UX7jw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": ["xunit.abstractions"], "net40": ["xunit.abstractions"], "net403": ["xunit.abstractions"], "net45": ["xunit.abstractions"], "net451": ["xunit.abstractions"], "net452": ["xunit.abstractions"], "net46": ["xunit.abstractions"], "net461": ["xunit.abstractions"], "net462": ["xunit.abstractions"], "net47": ["xunit.abstractions"], "net471": ["xunit.abstractions"], "net472": ["xunit.abstractions"], "net48": ["xunit.abstractions"], "net5.0": ["xunit.abstractions"], "net6.0": ["xunit.abstractions"], "net7.0": ["xunit.abstractions"], "net8.0": ["xunit.abstractions"], "net9.0": ["xunit.abstractions"], "netcoreapp1.0": ["xunit.abstractions"], "netcoreapp1.1": ["xunit.abstractions"], "netcoreapp2.0": ["xunit.abstractions"], "netcoreapp2.1": ["xunit.abstractions"], "netcoreapp2.2": ["xunit.abstractions"], "netcoreapp3.0": ["xunit.abstractions"], "netcoreapp3.1": ["xunit.abstractions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.abstractions"], "netstandard1.2": ["xunit.abstractions"], "netstandard1.3": ["xunit.abstractions"], "netstandard1.4": ["xunit.abstractions"], "netstandard1.5": ["xunit.abstractions"], "netstandard1.6": ["xunit.abstractions"], "netstandard2.0": ["xunit.abstractions"], "netstandard2.1": ["xunit.abstractions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.runner.visualstudio", "id": "xunit.runner.visualstudio", "version": "2.8.2", "sha512": "sha512-z+EzhXxLlgn/n7FQ5J0DJxbGns/1vx1kPJh4Uq+OPChRpdSy3x/MCqQ/jtkboc7BRMthz14k7pL0D3iq/e4d0A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": ["Microsoft.TestPlatform.ObjectModel"], "net47": ["Microsoft.TestPlatform.ObjectModel"], "net471": ["Microsoft.TestPlatform.ObjectModel"], "net472": ["Microsoft.TestPlatform.ObjectModel"], "net48": ["Microsoft.TestPlatform.ObjectModel"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.analyzers", "id": "xunit.analyzers", "version": "1.24.0", "sha512": "sha512-LiogS9RX6I4MHFN8V3dNgEQ4QJrtvtKq49h9k5NAOvmwcrbR1IeNMZvyuez3YITKAeF+ka9yVG3+OH6vApPB/A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.assert", "id": "xunit.assert", "version": "2.9.3", "sha512": "sha512-wfqwCKAhSWGy9P/dPqDGSIBnPW3sUJ49MEfcTqNF+5BgJwjwtHb9SE7ajYZuR8ymTd8dwxoEGnlJHiejbgDv9w==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.core", "id": "xunit.core", "version": "2.9.3", "sha512": "sha512-cv2sO37qJkIbBL3fXDIn3EPQ2zK8LQ6FkMJNnn1xc9n8mo3ik0URA4MfUNCmwDDCx83ZiJeRrJ0y1ykasojNJg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net20": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net30": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net35": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net40": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net403": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net45": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net451": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net452": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net46": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net461": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net462": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net47": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net471": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net472": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net48": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net5.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net6.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net7.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net8.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net9.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp1.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp1.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.2": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp3.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp3.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.2": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.3": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.4": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.5": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.6": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard2.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard2.1": ["xunit.extensibility.core", "xunit.extensibility.execution"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.extensibility.core", "id": "xunit.extensibility.core", "version": "2.9.3", "sha512": "sha512-S0a+jmIF/DraKuJ+FfWbqXMwvpcKxjP3GdrQzz5pr3GYtgII2XfDdAhkU/5VIWqWon2R6Q31X/9sTGaU+koDaQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["xunit.abstractions"], "net451": ["xunit.abstractions"], "net452": ["xunit.abstractions"], "net46": ["xunit.abstractions"], "net461": ["xunit.abstractions"], "net462": ["xunit.abstractions"], "net47": ["xunit.abstractions"], "net471": ["xunit.abstractions"], "net472": ["xunit.abstractions"], "net48": ["xunit.abstractions"], "net5.0": ["xunit.abstractions"], "net6.0": ["xunit.abstractions"], "net7.0": ["xunit.abstractions"], "net8.0": ["xunit.abstractions"], "net9.0": ["xunit.abstractions"], "netcoreapp1.0": ["xunit.abstractions"], "netcoreapp1.1": ["xunit.abstractions"], "netcoreapp2.0": ["xunit.abstractions"], "netcoreapp2.1": ["xunit.abstractions"], "netcoreapp2.2": ["xunit.abstractions"], "netcoreapp3.0": ["xunit.abstractions"], "netcoreapp3.1": ["xunit.abstractions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.abstractions"], "netstandard1.2": ["xunit.abstractions"], "netstandard1.3": ["xunit.abstractions"], "netstandard1.4": ["xunit.abstractions"], "netstandard1.5": ["xunit.abstractions"], "netstandard1.6": ["xunit.abstractions"], "netstandard2.0": ["xunit.abstractions"], "netstandard2.1": ["xunit.abstractions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.extensibility.execution", "id": "xunit.extensibility.execution", "version": "2.9.3", "sha512": "sha512-IidoBSrGw/KhWzZsKXIcStohj/oRFZizbWeUv+0hOFLeMJMegSW5QoGNzmjQuF8BuRtCyPQQukWSYdNnnfPAkA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["xunit.extensibility.core"], "net451": ["xunit.extensibility.core"], "net452": ["xunit.extensibility.core"], "net46": ["xunit.extensibility.core"], "net461": ["xunit.extensibility.core"], "net462": ["xunit.extensibility.core"], "net47": ["xunit.extensibility.core"], "net471": ["xunit.extensibility.core"], "net472": ["xunit.extensibility.core"], "net48": ["xunit.extensibility.core"], "net5.0": ["xunit.extensibility.core"], "net6.0": ["xunit.extensibility.core"], "net7.0": ["xunit.extensibility.core"], "net8.0": ["xunit.extensibility.core"], "net9.0": ["xunit.extensibility.core"], "netcoreapp1.0": ["xunit.extensibility.core"], "netcoreapp1.1": ["xunit.extensibility.core"], "netcoreapp2.0": ["xunit.extensibility.core"], "netcoreapp2.1": ["xunit.extensibility.core"], "netcoreapp2.2": ["xunit.extensibility.core"], "netcoreapp3.0": ["xunit.extensibility.core"], "netcoreapp3.1": ["xunit.extensibility.core"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.extensibility.core"], "netstandard1.2": ["xunit.extensibility.core"], "netstandard1.3": ["xunit.extensibility.core"], "netstandard1.4": ["xunit.extensibility.core"], "netstandard1.5": ["xunit.extensibility.core"], "netstandard1.6": ["xunit.extensibility.core"], "netstandard2.0": ["xunit.extensibility.core"], "netstandard2.1": ["xunit.extensibility.core"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.runner.utility", "id": "xunit.runner.utility", "version": "2.9.3", "sha512": "sha512-L2zlPa7Ci/Awf5LdeTOvKOanev1bB6xV2Gxbrc+EDDN1hO/j0AIbu5PM8lXgkX69/8xaaex7zrxHZd8gcz2ilQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": ["xunit.abstractions"], "net40": ["xunit.abstractions"], "net403": ["xunit.abstractions"], "net45": ["xunit.abstractions"], "net451": ["xunit.abstractions"], "net452": ["xunit.abstractions"], "net46": ["xunit.abstractions"], "net461": ["xunit.abstractions"], "net462": ["xunit.abstractions"], "net47": ["xunit.abstractions"], "net471": ["xunit.abstractions"], "net472": ["xunit.abstractions"], "net48": ["xunit.abstractions"], "net5.0": ["xunit.abstractions"], "net6.0": ["xunit.abstractions"], "net7.0": ["xunit.abstractions"], "net8.0": ["xunit.abstractions"], "net9.0": ["xunit.abstractions"], "netcoreapp1.0": ["xunit.abstractions"], "netcoreapp1.1": ["xunit.abstractions"], "netcoreapp2.0": ["xunit.abstractions"], "netcoreapp2.1": ["xunit.abstractions"], "netcoreapp2.2": ["xunit.abstractions"], "netcoreapp3.0": ["xunit.abstractions"], "netcoreapp3.1": ["xunit.abstractions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.abstractions"], "netstandard1.2": ["xunit.abstractions"], "netstandard1.3": ["xunit.abstractions"], "netstandard1.4": ["xunit.abstractions"], "netstandard1.5": ["xunit.abstractions"], "netstandard1.6": ["xunit.abstractions"], "netstandard2.0": ["xunit.abstractions"], "netstandard2.1": ["xunit.abstractions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.runner.visualstudio", "id": "xunit.runner.visualstudio", "version": "3.1.5", "sha512": "sha512-b/tvN9kXtUd3wSSYbC80Ic6y/dYlYbNSvatYiv71iozPhXqM4EaOuHujkIJh85b+wY6dgf25k9ENSy8jN6mlvQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": ["Microsoft.TestPlatform.ObjectModel"], "net48": ["Microsoft.TestPlatform.ObjectModel"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, ], ) diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index a25c349e35ee..73990a2c6fde 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.7.55 + +No user-facing changes. + +## 1.7.54 + +No user-facing changes. + +## 1.7.53 + +No user-facing changes. + +## 1.7.52 + +No user-facing changes. + ## 1.7.51 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.52.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.52.md new file mode 100644 index 000000000000..07bec2a826a4 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.52.md @@ -0,0 +1,3 @@ +## 1.7.52 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.53.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.53.md new file mode 100644 index 000000000000..b50e2ef9d7c5 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.53.md @@ -0,0 +1,3 @@ +## 1.7.53 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.54.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.54.md new file mode 100644 index 000000000000..4a8290159145 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.54.md @@ -0,0 +1,3 @@ +## 1.7.54 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.55.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.55.md new file mode 100644 index 000000000000..8c13e6f51912 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.55.md @@ -0,0 +1,3 @@ +## 1.7.55 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index 26376c0cebb2..26e02fb41f41 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.51 +lastReleaseVersion: 1.7.55 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 649b7e60de7d..ea173a6b5152 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.51 +version: 1.7.55 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index a25c349e35ee..73990a2c6fde 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.7.55 + +No user-facing changes. + +## 1.7.54 + +No user-facing changes. + +## 1.7.53 + +No user-facing changes. + +## 1.7.52 + +No user-facing changes. + ## 1.7.51 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.52.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.52.md new file mode 100644 index 000000000000..07bec2a826a4 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.52.md @@ -0,0 +1,3 @@ +## 1.7.52 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.53.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.53.md new file mode 100644 index 000000000000..b50e2ef9d7c5 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.53.md @@ -0,0 +1,3 @@ +## 1.7.53 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.54.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.54.md new file mode 100644 index 000000000000..4a8290159145 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.54.md @@ -0,0 +1,3 @@ +## 1.7.54 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.55.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.55.md new file mode 100644 index 000000000000..8c13e6f51912 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.55.md @@ -0,0 +1,3 @@ +## 1.7.55 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index 26376c0cebb2..26e02fb41f41 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.51 +lastReleaseVersion: 1.7.55 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index b3977a0ef72d..a3a470ea6945 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.51 +version: 1.7.55 groups: - csharp - solorigate diff --git a/csharp/ql/integration-tests/all-platforms/blazor/global.json b/csharp/ql/integration-tests/all-platforms/blazor/global.json new file mode 100644 index 000000000000..d488208a2a75 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/blazor/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "9.0.304" + } +} diff --git a/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/global.json b/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/global.json new file mode 100644 index 000000000000..d488208a2a75 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/blazor_build_mode_none/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "9.0.304" + } +} diff --git a/csharp/ql/integration-tests/all-platforms/blazor_net_8/global.json b/csharp/ql/integration-tests/all-platforms/blazor_net_8/global.json new file mode 100644 index 000000000000..402fd8496913 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/blazor_net_8/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "8.0.401" + } +} \ No newline at end of file diff --git a/csharp/ql/integration-tests/linux/dotnet_10_rc2/Program.cs b/csharp/ql/integration-tests/all-platforms/dotnet_10/Program.cs similarity index 100% rename from csharp/ql/integration-tests/linux/dotnet_10_rc2/Program.cs rename to csharp/ql/integration-tests/all-platforms/dotnet_10/Program.cs diff --git a/csharp/ql/integration-tests/linux/dotnet_10_rc2/dotnet_build.csproj b/csharp/ql/integration-tests/all-platforms/dotnet_10/dotnet_build.csproj similarity index 100% rename from csharp/ql/integration-tests/linux/dotnet_10_rc2/dotnet_build.csproj rename to csharp/ql/integration-tests/all-platforms/dotnet_10/dotnet_build.csproj diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_10/global.json b/csharp/ql/integration-tests/all-platforms/dotnet_10/global.json new file mode 100644 index 000000000000..481e95ec7be1 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/dotnet_10/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "10.0.100" + } +} diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_10/test.py b/csharp/ql/integration-tests/all-platforms/dotnet_10/test.py new file mode 100644 index 000000000000..d34be2b8b506 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/dotnet_10/test.py @@ -0,0 +1,9 @@ +import pytest + +@pytest.mark.skip(reason=".NET 10 info command crashes") +def test1(codeql, csharp): + codeql.database.create() + +@pytest.mark.skip(reason=".NET 10 info command crashes") +def test2(codeql, csharp): + codeql.database.create(build_mode="none") diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/Assemblies.expected b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/Assemblies.expected new file mode 100644 index 000000000000..b98f10a366ca --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/Assemblies.expected @@ -0,0 +1 @@ +| dependencies/packages/newtonsoft.json/13.0.1/lib/netstandard2.0/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/Assemblies.ql b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/Assemblies.ql new file mode 100644 index 000000000000..625fc299761e --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/Assemblies.ql @@ -0,0 +1,7 @@ +import csharp + +from Assembly a +where + not a.getCompilation().getOutputAssembly() = a and + a.getName().matches("%Newtonsoft%") +select a diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/Program.cs b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/Program.cs new file mode 100644 index 000000000000..39a9e95bb6e3 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/Program.cs @@ -0,0 +1,6 @@ +class Program +{ + static void Main(string[] args) + { + } +} \ No newline at end of file diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/global.json b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/global.json new file mode 100644 index 000000000000..4c6e2601f69c --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "9.0.304" + } +} diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/standalone.csproj b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/standalone.csproj new file mode 100644 index 000000000000..29604e2cbd87 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/standalone.csproj @@ -0,0 +1,16 @@ + + + + Exe + net9.0 + + + + + + + + + + + diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/test.py b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/test.py new file mode 100644 index 000000000000..3629693ad29e --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/test.py @@ -0,0 +1,14 @@ +import os +import shutil + +def test(codeql, csharp, cwd): + path = os.path.join(cwd, "dependencies") + os.environ["CODEQL_EXTRACTOR_CSHARP_OPTION_BUILDLESS_DEPENDENCY_DIR"] = path + # The Assemblies.ql query shows that the Newtonsoft assembly is found in the + # dependency directory set above. + codeql.database.create(source_root="proj", build_mode="none") + + # Check that the packages directory has been created in the dependencies folder. + packages_dir = os.path.join(path, "packages") + assert os.path.isdir(packages_dir), "The packages directory was not created in the specified dependency directory." + shutil.rmtree(path) diff --git a/csharp/ql/integration-tests/all-platforms/standalone_failed/global.json b/csharp/ql/integration-tests/all-platforms/standalone_failed/global.json new file mode 100644 index 000000000000..4c6e2601f69c --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_failed/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "9.0.304" + } +} diff --git a/csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.expected b/csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.expected index cb1f6163d71c..ee3063b3c2b8 100644 --- a/csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.expected +++ b/csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.expected @@ -7,196 +7,197 @@ | 6 | /errorreport:prompt | | 7 | /warn:9 | | 8 | /define:TRACE;DEBUG;NET;NET9_0;NETCOREAPP;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NET7_0_OR_GREATER;NET8_0_OR_GREATER;NET9_0_OR_GREATER;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER | -| 9 | /highentropyva+ | -| 10 | /nullable:enable | -| 11 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.CSharp.dll | -| 12 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.VisualBasic.Core.dll | -| 13 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.VisualBasic.dll | -| 14 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.Win32.Primitives.dll | -| 15 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.Win32.Registry.dll | -| 16 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/mscorlib.dll | -| 17 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/netstandard.dll | -| 18 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.AppContext.dll | -| 19 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Buffers.dll | -| 20 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.Concurrent.dll | -| 21 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.dll | -| 22 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.Immutable.dll | -| 23 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.NonGeneric.dll | -| 24 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.Specialized.dll | -| 25 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.Annotations.dll | -| 26 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.DataAnnotations.dll | -| 27 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.dll | -| 28 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.EventBasedAsync.dll | -| 29 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.Primitives.dll | -| 30 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.TypeConverter.dll | -| 31 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Configuration.dll | -| 32 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Console.dll | -| 33 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Core.dll | -| 34 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Data.Common.dll | -| 35 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Data.DataSetExtensions.dll | -| 36 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Data.dll | -| 37 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Contracts.dll | -| 38 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Debug.dll | -| 39 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.DiagnosticSource.dll | -| 40 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.FileVersionInfo.dll | -| 41 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Process.dll | -| 42 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.StackTrace.dll | -| 43 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.TextWriterTraceListener.dll | -| 44 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Tools.dll | -| 45 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.TraceSource.dll | -| 46 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Tracing.dll | -| 47 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.dll | -| 48 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Drawing.dll | -| 49 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Drawing.Primitives.dll | -| 50 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Dynamic.Runtime.dll | -| 51 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Formats.Asn1.dll | -| 52 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Formats.Tar.dll | -| 53 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Globalization.Calendars.dll | -| 54 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Globalization.dll | -| 55 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Globalization.Extensions.dll | -| 56 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.Brotli.dll | -| 57 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.dll | -| 58 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.FileSystem.dll | -| 59 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.ZipFile.dll | -| 60 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.dll | -| 61 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.AccessControl.dll | -| 62 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.dll | -| 63 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.DriveInfo.dll | -| 64 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.Primitives.dll | -| 65 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.Watcher.dll | -| 66 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.IsolatedStorage.dll | -| 67 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.MemoryMappedFiles.dll | -| 68 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Pipelines.dll | -| 69 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Pipes.AccessControl.dll | -| 70 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Pipes.dll | -| 71 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.UnmanagedMemoryStream.dll | -| 72 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.dll | -| 73 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.Expressions.dll | -| 74 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.Parallel.dll | -| 75 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.Queryable.dll | -| 76 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Memory.dll | -| 77 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.dll | -| 78 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Http.dll | -| 79 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Http.Json.dll | -| 80 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.HttpListener.dll | -| 81 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Mail.dll | -| 82 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.NameResolution.dll | -| 83 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.NetworkInformation.dll | -| 84 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Ping.dll | -| 85 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Primitives.dll | -| 86 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Quic.dll | -| 87 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Requests.dll | -| 88 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Security.dll | -| 89 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.ServicePoint.dll | -| 90 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Sockets.dll | -| 91 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebClient.dll | -| 92 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebHeaderCollection.dll | -| 93 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebProxy.dll | -| 94 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebSockets.Client.dll | -| 95 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebSockets.dll | -| 96 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Numerics.dll | -| 97 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Numerics.Vectors.dll | -| 98 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ObjectModel.dll | -| 99 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.DispatchProxy.dll | -| 100 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.dll | -| 101 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Emit.dll | -| 102 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Emit.ILGeneration.dll | -| 103 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Emit.Lightweight.dll | -| 104 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Extensions.dll | -| 105 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Metadata.dll | -| 106 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Primitives.dll | -| 107 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.TypeExtensions.dll | -| 108 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Resources.Reader.dll | -| 109 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Resources.ResourceManager.dll | -| 110 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Resources.Writer.dll | -| 111 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.CompilerServices.Unsafe.dll | -| 112 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.CompilerServices.VisualC.dll | -| 113 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.dll | -| 114 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Extensions.dll | -| 115 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Handles.dll | -| 116 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.InteropServices.dll | -| 117 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.InteropServices.JavaScript.dll | -| 118 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.InteropServices.RuntimeInformation.dll | -| 119 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Intrinsics.dll | -| 120 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Loader.dll | -| 121 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Numerics.dll | -| 122 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.dll | -| 123 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Formatters.dll | -| 124 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Json.dll | -| 125 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Primitives.dll | -| 126 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Xml.dll | -| 127 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.AccessControl.dll | -| 128 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Claims.dll | -| 129 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Algorithms.dll | -| 130 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Cng.dll | -| 131 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Csp.dll | -| 132 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.dll | -| 133 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Encoding.dll | -| 134 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.OpenSsl.dll | -| 135 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Primitives.dll | -| 136 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.X509Certificates.dll | -| 137 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.dll | -| 138 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Principal.dll | -| 139 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Principal.Windows.dll | -| 140 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.SecureString.dll | -| 141 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ServiceModel.Web.dll | -| 142 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ServiceProcess.dll | -| 143 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encoding.CodePages.dll | -| 144 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encoding.dll | -| 145 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encoding.Extensions.dll | -| 146 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encodings.Web.dll | -| 147 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Json.dll | -| 148 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.RegularExpressions.dll | -| 149 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Channels.dll | -| 150 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.dll | -| 151 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Overlapped.dll | -| 152 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.Dataflow.dll | -| 153 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.dll | -| 154 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.Extensions.dll | -| 155 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.Parallel.dll | -| 156 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Thread.dll | -| 157 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.ThreadPool.dll | -| 158 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Timer.dll | -| 159 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Transactions.dll | -| 160 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Transactions.Local.dll | -| 161 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ValueTuple.dll | -| 162 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Web.dll | -| 163 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Web.HttpUtility.dll | -| 164 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Windows.dll | -| 165 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.dll | -| 166 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.Linq.dll | -| 167 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.ReaderWriter.dll | -| 168 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.Serialization.dll | -| 169 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XDocument.dll | -| 170 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XmlDocument.dll | -| 171 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XmlSerializer.dll | -| 172 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XPath.dll | -| 173 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XPath.XDocument.dll | -| 174 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/WindowsBase.dll | -| 175 | /debug+ | -| 176 | /debug:portable | -| 177 | /filealign:512 | -| 178 | /generatedfilesout:obj/Debug/net9.0//generated | -| 179 | /optimize- | -| 180 | /out:obj/Debug/net9.0/test.dll | -| 181 | /refout:obj/Debug/net9.0/refint/test.dll | -| 182 | /target:exe | -| 183 | /warnaserror- | -| 184 | /utf8output | -| 185 | /deterministic+ | -| 186 | /langversion:13.0 | -| 187 | /analyzerconfig:obj/Debug/net9.0/test.GeneratedMSBuildEditorConfig.editorconfig | -| 188 | /analyzerconfig:/usr/share/dotnet/sdk/9.0.304/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_9_default.globalconfig | -| 189 | /analyzer:/usr/share/dotnet/sdk/9.0.304/Sdks/Microsoft.NET.Sdk/targets/../analyzers/Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll | -| 190 | /analyzer:/usr/share/dotnet/sdk/9.0.304/Sdks/Microsoft.NET.Sdk/targets/../analyzers/Microsoft.CodeAnalysis.NetAnalyzers.dll | -| 191 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.ComInterfaceGenerator.dll | -| 192 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.JavaScript.JSImportGenerator.dll | -| 193 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.LibraryImportGenerator.dll | -| 194 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.SourceGeneration.dll | -| 195 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/System.Text.Json.SourceGeneration.dll | -| 196 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/System.Text.RegularExpressions.Generator.dll | -| 197 | Program.cs | -| 198 | obj/Debug/net9.0/test.GlobalUsings.g.cs | -| 199 | obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs | -| 200 | obj/Debug/net9.0/test.AssemblyInfo.cs | -| 201 | /warnaserror+:NU1605,SYSLIB0011 | +| 9 | /preferreduilang:en | +| 10 | /highentropyva+ | +| 11 | /nullable:enable | +| 12 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.CSharp.dll | +| 13 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.VisualBasic.Core.dll | +| 14 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.VisualBasic.dll | +| 15 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.Win32.Primitives.dll | +| 16 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.Win32.Registry.dll | +| 17 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/mscorlib.dll | +| 18 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/netstandard.dll | +| 19 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.AppContext.dll | +| 20 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Buffers.dll | +| 21 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.Concurrent.dll | +| 22 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.dll | +| 23 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.Immutable.dll | +| 24 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.NonGeneric.dll | +| 25 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.Specialized.dll | +| 26 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.Annotations.dll | +| 27 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.DataAnnotations.dll | +| 28 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.dll | +| 29 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.EventBasedAsync.dll | +| 30 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.Primitives.dll | +| 31 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.TypeConverter.dll | +| 32 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Configuration.dll | +| 33 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Console.dll | +| 34 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Core.dll | +| 35 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Data.Common.dll | +| 36 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Data.DataSetExtensions.dll | +| 37 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Data.dll | +| 38 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Contracts.dll | +| 39 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Debug.dll | +| 40 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.DiagnosticSource.dll | +| 41 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.FileVersionInfo.dll | +| 42 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Process.dll | +| 43 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.StackTrace.dll | +| 44 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.TextWriterTraceListener.dll | +| 45 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Tools.dll | +| 46 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.TraceSource.dll | +| 47 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Tracing.dll | +| 48 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.dll | +| 49 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Drawing.dll | +| 50 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Drawing.Primitives.dll | +| 51 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Dynamic.Runtime.dll | +| 52 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Formats.Asn1.dll | +| 53 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Formats.Tar.dll | +| 54 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Globalization.Calendars.dll | +| 55 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Globalization.dll | +| 56 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Globalization.Extensions.dll | +| 57 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.Brotli.dll | +| 58 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.dll | +| 59 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.FileSystem.dll | +| 60 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.ZipFile.dll | +| 61 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.dll | +| 62 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.AccessControl.dll | +| 63 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.dll | +| 64 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.DriveInfo.dll | +| 65 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.Primitives.dll | +| 66 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.Watcher.dll | +| 67 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.IsolatedStorage.dll | +| 68 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.MemoryMappedFiles.dll | +| 69 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Pipelines.dll | +| 70 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Pipes.AccessControl.dll | +| 71 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Pipes.dll | +| 72 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.UnmanagedMemoryStream.dll | +| 73 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.dll | +| 74 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.Expressions.dll | +| 75 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.Parallel.dll | +| 76 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.Queryable.dll | +| 77 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Memory.dll | +| 78 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.dll | +| 79 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Http.dll | +| 80 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Http.Json.dll | +| 81 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.HttpListener.dll | +| 82 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Mail.dll | +| 83 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.NameResolution.dll | +| 84 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.NetworkInformation.dll | +| 85 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Ping.dll | +| 86 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Primitives.dll | +| 87 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Quic.dll | +| 88 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Requests.dll | +| 89 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Security.dll | +| 90 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.ServicePoint.dll | +| 91 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Sockets.dll | +| 92 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebClient.dll | +| 93 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebHeaderCollection.dll | +| 94 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebProxy.dll | +| 95 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebSockets.Client.dll | +| 96 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebSockets.dll | +| 97 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Numerics.dll | +| 98 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Numerics.Vectors.dll | +| 99 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ObjectModel.dll | +| 100 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.DispatchProxy.dll | +| 101 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.dll | +| 102 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Emit.dll | +| 103 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Emit.ILGeneration.dll | +| 104 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Emit.Lightweight.dll | +| 105 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Extensions.dll | +| 106 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Metadata.dll | +| 107 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Primitives.dll | +| 108 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.TypeExtensions.dll | +| 109 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Resources.Reader.dll | +| 110 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Resources.ResourceManager.dll | +| 111 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Resources.Writer.dll | +| 112 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.CompilerServices.Unsafe.dll | +| 113 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.CompilerServices.VisualC.dll | +| 114 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.dll | +| 115 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Extensions.dll | +| 116 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Handles.dll | +| 117 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.InteropServices.dll | +| 118 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.InteropServices.JavaScript.dll | +| 119 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.InteropServices.RuntimeInformation.dll | +| 120 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Intrinsics.dll | +| 121 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Loader.dll | +| 122 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Numerics.dll | +| 123 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.dll | +| 124 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Formatters.dll | +| 125 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Json.dll | +| 126 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Primitives.dll | +| 127 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Xml.dll | +| 128 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.AccessControl.dll | +| 129 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Claims.dll | +| 130 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Algorithms.dll | +| 131 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Cng.dll | +| 132 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Csp.dll | +| 133 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.dll | +| 134 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Encoding.dll | +| 135 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.OpenSsl.dll | +| 136 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Primitives.dll | +| 137 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.X509Certificates.dll | +| 138 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.dll | +| 139 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Principal.dll | +| 140 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Principal.Windows.dll | +| 141 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.SecureString.dll | +| 142 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ServiceModel.Web.dll | +| 143 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ServiceProcess.dll | +| 144 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encoding.CodePages.dll | +| 145 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encoding.dll | +| 146 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encoding.Extensions.dll | +| 147 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encodings.Web.dll | +| 148 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Json.dll | +| 149 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.RegularExpressions.dll | +| 150 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Channels.dll | +| 151 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.dll | +| 152 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Overlapped.dll | +| 153 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.Dataflow.dll | +| 154 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.dll | +| 155 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.Extensions.dll | +| 156 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.Parallel.dll | +| 157 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Thread.dll | +| 158 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.ThreadPool.dll | +| 159 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Timer.dll | +| 160 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Transactions.dll | +| 161 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Transactions.Local.dll | +| 162 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ValueTuple.dll | +| 163 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Web.dll | +| 164 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Web.HttpUtility.dll | +| 165 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Windows.dll | +| 166 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.dll | +| 167 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.Linq.dll | +| 168 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.ReaderWriter.dll | +| 169 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.Serialization.dll | +| 170 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XDocument.dll | +| 171 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XmlDocument.dll | +| 172 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XmlSerializer.dll | +| 173 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XPath.dll | +| 174 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XPath.XDocument.dll | +| 175 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/WindowsBase.dll | +| 176 | /debug+ | +| 177 | /debug:portable | +| 178 | /filealign:512 | +| 179 | /generatedfilesout:obj/Debug/net9.0//generated | +| 180 | /optimize- | +| 181 | /out:obj/Debug/net9.0/test.dll | +| 182 | /refout:obj/Debug/net9.0/refint/test.dll | +| 183 | /target:exe | +| 184 | /warnaserror- | +| 185 | /utf8output | +| 186 | /deterministic+ | +| 187 | /langversion:13.0 | +| 188 | /analyzerconfig:obj/Debug/net9.0/test.GeneratedMSBuildEditorConfig.editorconfig | +| 189 | /analyzerconfig:/usr/share/dotnet/sdk/9.0.304/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_9_default.globalconfig | +| 190 | /analyzer:/usr/share/dotnet/sdk/9.0.304/Sdks/Microsoft.NET.Sdk/targets/../analyzers/Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll | +| 191 | /analyzer:/usr/share/dotnet/sdk/9.0.304/Sdks/Microsoft.NET.Sdk/targets/../analyzers/Microsoft.CodeAnalysis.NetAnalyzers.dll | +| 192 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.ComInterfaceGenerator.dll | +| 193 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.JavaScript.JSImportGenerator.dll | +| 194 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.LibraryImportGenerator.dll | +| 195 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.SourceGeneration.dll | +| 196 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/System.Text.Json.SourceGeneration.dll | +| 197 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/System.Text.RegularExpressions.Generator.dll | +| 198 | Program.cs | +| 199 | obj/Debug/net9.0/test.GlobalUsings.g.cs | +| 200 | obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs | +| 201 | obj/Debug/net9.0/test.AssemblyInfo.cs | +| 202 | /warnaserror+:NU1605,SYSLIB0011 | diff --git a/csharp/ql/integration-tests/linux/dotnet_10_rc2/global.json b/csharp/ql/integration-tests/linux/dotnet_10_rc2/global.json deleted file mode 100644 index e870e2cf7bdd..000000000000 --- a/csharp/ql/integration-tests/linux/dotnet_10_rc2/global.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "sdk": { - "version": "10.0.100-rc.2.25502.107" - } -} diff --git a/csharp/ql/integration-tests/linux/dotnet_10_rc2/test.py b/csharp/ql/integration-tests/linux/dotnet_10_rc2/test.py deleted file mode 100644 index 148626b1cb86..000000000000 --- a/csharp/ql/integration-tests/linux/dotnet_10_rc2/test.py +++ /dev/null @@ -1,6 +0,0 @@ -import os -import runs_on - -@runs_on.linux -def test(codeql, csharp): - codeql.database.create() diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-code-scanning.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-code-scanning.qls.expected index c0ff79af1c16..4ffd875fda3b 100644 --- a/csharp/ql/integration-tests/posix/query-suite/csharp-code-scanning.qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-code-scanning.qls.expected @@ -16,6 +16,7 @@ ql/csharp/ql/src/Security Features/CWE-090/LDAPInjection.ql ql/csharp/ql/src/Security Features/CWE-091/XMLInjection.ql ql/csharp/ql/src/Security Features/CWE-094/CodeInjection.ql ql/csharp/ql/src/Security Features/CWE-099/ResourceInjection.ql +ql/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql ql/csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql ql/csharp/ql/src/Security Features/CWE-117/LogForging.ql ql/csharp/ql/src/Security Features/CWE-119/LocalUnvalidatedArithmetic.ql @@ -33,6 +34,7 @@ ql/csharp/ql/src/Security Features/CWE-502/UnsafeDeserializationUntrustedInput.q ql/csharp/ql/src/Security Features/CWE-548/ASPNetDirectoryListing.ql ql/csharp/ql/src/Security Features/CWE-601/UrlRedirect.ql ql/csharp/ql/src/Security Features/CWE-611/UntrustedDataInsecureXml.ql +ql/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql ql/csharp/ql/src/Security Features/CWE-614/RequireSSL.ql ql/csharp/ql/src/Security Features/CWE-643/XPathInjection.ql ql/csharp/ql/src/Security Features/CWE-730/ReDoS.ql diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-security-and-quality.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-security-and-quality.qls.expected index d4d145986c1b..b520a571fc8c 100644 --- a/csharp/ql/integration-tests/posix/query-suite/csharp-security-and-quality.qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-security-and-quality.qls.expected @@ -120,6 +120,7 @@ ql/csharp/ql/src/Security Features/CWE-090/LDAPInjection.ql ql/csharp/ql/src/Security Features/CWE-091/XMLInjection.ql ql/csharp/ql/src/Security Features/CWE-094/CodeInjection.ql ql/csharp/ql/src/Security Features/CWE-099/ResourceInjection.ql +ql/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql ql/csharp/ql/src/Security Features/CWE-112/MissingXMLValidation.ql ql/csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql ql/csharp/ql/src/Security Features/CWE-117/LogForging.ql @@ -140,6 +141,7 @@ ql/csharp/ql/src/Security Features/CWE-502/UnsafeDeserializationUntrustedInput.q ql/csharp/ql/src/Security Features/CWE-548/ASPNetDirectoryListing.ql ql/csharp/ql/src/Security Features/CWE-601/UrlRedirect.ql ql/csharp/ql/src/Security Features/CWE-611/UntrustedDataInsecureXml.ql +ql/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql ql/csharp/ql/src/Security Features/CWE-614/RequireSSL.ql ql/csharp/ql/src/Security Features/CWE-639/InsecureDirectObjectReference.ql ql/csharp/ql/src/Security Features/CWE-643/XPathInjection.ql diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-security-extended.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-security-extended.qls.expected index 48f7ad304a01..13b578d7b525 100644 --- a/csharp/ql/integration-tests/posix/query-suite/csharp-security-extended.qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-security-extended.qls.expected @@ -23,6 +23,7 @@ ql/csharp/ql/src/Security Features/CWE-090/LDAPInjection.ql ql/csharp/ql/src/Security Features/CWE-091/XMLInjection.ql ql/csharp/ql/src/Security Features/CWE-094/CodeInjection.ql ql/csharp/ql/src/Security Features/CWE-099/ResourceInjection.ql +ql/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql ql/csharp/ql/src/Security Features/CWE-112/MissingXMLValidation.ql ql/csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql ql/csharp/ql/src/Security Features/CWE-117/LogForging.ql @@ -43,6 +44,7 @@ ql/csharp/ql/src/Security Features/CWE-502/UnsafeDeserializationUntrustedInput.q ql/csharp/ql/src/Security Features/CWE-548/ASPNetDirectoryListing.ql ql/csharp/ql/src/Security Features/CWE-601/UrlRedirect.ql ql/csharp/ql/src/Security Features/CWE-611/UntrustedDataInsecureXml.ql +ql/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql ql/csharp/ql/src/Security Features/CWE-614/RequireSSL.ql ql/csharp/ql/src/Security Features/CWE-639/InsecureDirectObjectReference.ql ql/csharp/ql/src/Security Features/CWE-643/XPathInjection.ql diff --git a/csharp/ql/integration-tests/posix/query-suite/not_included_in_qls.expected b/csharp/ql/integration-tests/posix/query-suite/not_included_in_qls.expected index 4c8d4d42e98a..4776a36a6a90 100644 --- a/csharp/ql/integration-tests/posix/query-suite/not_included_in_qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/not_included_in_qls.expected @@ -84,9 +84,7 @@ ql/csharp/ql/src/Security Features/CWE-838/InappropriateEncoding.ql ql/csharp/ql/src/definitions.ql ql/csharp/ql/src/experimental/CWE-099/TaintedWebClient.ql ql/csharp/ql/src/experimental/CWE-918/RequestForgery.ql -ql/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql ql/csharp/ql/src/experimental/Security Features/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql -ql/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql ql/csharp/ql/src/experimental/Security Features/CWE-759/HashWithoutSalt.ql ql/csharp/ql/src/experimental/Security Features/JsonWebTokenHandler/delegated-security-validations-always-return-true.ql ql/csharp/ql/src/experimental/Security Features/JsonWebTokenHandler/security-validation-disabled.ql diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected index a706f914cd9f..bbfd3417df37 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected @@ -3,6 +3,7 @@ | [...]/csharp/tools/[...]/MessagePack.Annotations.dll | | [...]/csharp/tools/[...]/MessagePack.dll | | [...]/csharp/tools/[...]/Microsoft.Bcl.AsyncInterfaces.dll | +| [...]/csharp/tools/[...]/Microsoft.Bcl.Memory.dll | | [...]/csharp/tools/[...]/Microsoft.Build.Framework.dll | | [...]/csharp/tools/[...]/Microsoft.Build.Utilities.Core.dll | | [...]/csharp/tools/[...]/Microsoft.Build.dll | @@ -20,6 +21,7 @@ | [...]/csharp/tools/[...]/Microsoft.Win32.Primitives.dll | | [...]/csharp/tools/[...]/Microsoft.Win32.Registry.dll | | [...]/csharp/tools/[...]/Mono.Posix.NETStandard.dll | +| [...]/csharp/tools/[...]/NaturalSort.Extension.dll | | [...]/csharp/tools/[...]/Newtonsoft.Json.dll | | [...]/csharp/tools/[...]/StructuredLogger.dll | | [...]/csharp/tools/[...]/System.AppContext.dll | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/global.json new file mode 100644 index 000000000000..d488208a2a75 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "9.0.304" + } +} diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/global.json new file mode 100644 index 000000000000..d488208a2a75 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "9.0.304" + } +} diff --git a/csharp/ql/integration-tests/windows/dotnet_10_rc2/Program.cs b/csharp/ql/integration-tests/windows/dotnet_10_rc2/Program.cs deleted file mode 100644 index bd44629f7e23..000000000000 --- a/csharp/ql/integration-tests/windows/dotnet_10_rc2/Program.cs +++ /dev/null @@ -1 +0,0 @@ -Console.WriteLine($"{string.Join(",", args)}"); diff --git a/csharp/ql/integration-tests/windows/dotnet_10_rc2/dotnet_build.csproj b/csharp/ql/integration-tests/windows/dotnet_10_rc2/dotnet_build.csproj deleted file mode 100644 index dfb40caafcf9..000000000000 --- a/csharp/ql/integration-tests/windows/dotnet_10_rc2/dotnet_build.csproj +++ /dev/null @@ -1,10 +0,0 @@ - - - - Exe - net10.0 - enable - enable - - - diff --git a/csharp/ql/integration-tests/windows/dotnet_10_rc2/global.json b/csharp/ql/integration-tests/windows/dotnet_10_rc2/global.json deleted file mode 100644 index e870e2cf7bdd..000000000000 --- a/csharp/ql/integration-tests/windows/dotnet_10_rc2/global.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "sdk": { - "version": "10.0.100-rc.2.25502.107" - } -} diff --git a/csharp/ql/integration-tests/windows/dotnet_10_rc2/test.py b/csharp/ql/integration-tests/windows/dotnet_10_rc2/test.py deleted file mode 100644 index 00905b67cd49..000000000000 --- a/csharp/ql/integration-tests/windows/dotnet_10_rc2/test.py +++ /dev/null @@ -1,6 +0,0 @@ -import os -import runs_on - -@runs_on.windows -def test(codeql, csharp): - codeql.database.create() diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 20b1c03d7222..59eb2a98cf0a 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,33 @@ +## 5.4.3 + +No user-facing changes. + +## 5.4.2 + +No user-facing changes. + +## 5.4.1 + +### Minor Analysis Improvements + +* Improved stability when downloading .NET versions by setting appropriate environment variables for `dotnet` commands. The correct architecture-specific version of .NET is now downloaded on ARM runners. +* Compilation errors are now included in the debug log when using build-mode none. +* Added a new extractor option to specify a custom directory for dependency downloads in buildless mode. Use `-O buildless_dependency_dir=` to configure the target directory. + +## 5.4.0 + +### Deprecated APIs + +* `ControlFlowElement.controlsBlock` has been deprecated in favor of the Guards library. + +### New Features + +* Initial support for incremental C# databases via `codeql database create --overlay-base`/`--overlay-changes`. + +### Minor Analysis Improvements + +* Updated *roslyn* and *binlog* dependencies in the extractor, which may improve database and analysis quality. + ## 5.3.0 ### Deprecated APIs @@ -143,7 +173,7 @@ No user-facing changes. * Added `remote` flow source models for properties of Blazor components annotated with any of the following attributes from `Microsoft.AspNetCore.Components`: - `[SupplyParameterFromForm]` - `[SupplyParameterFromQuery]` -* Added the constructor and explicit cast operator of `Microsoft.AspNetCore.Components.MarkupString` as an `html-injection` sink. This will help catch cross-site scripting resulting from using `MarkupString`. +* Added the constructor and explicit cast operator of `Microsoft.AspNetCore.Components.MarkupString` as an `html-injection` sink. This will help catch cross-site scripting resulting from using `MarkupString`. * Added flow summaries for the `Microsoft.AspNetCore.Mvc.Controller::View` method. * The data flow library has been updated to track types in a slightly different way: The type of the tainted data (which may be stored into fields, etc.) is tracked more precisely, while the types of intermediate containers for nested contents is tracked less precisely. This may have a slight effect on false positives for complex flow paths. * The C# extractor now supports *basic* extraction of .NET 9 projects. There might be limited support for extraction of code using the new C# 13 language features. @@ -163,7 +193,7 @@ No user-facing changes. - `System.Web.HttpUtility::ParseQueryString` - `Microsoft.AspNetCore.WebUtilities.QueryHelpers::ParseQuery` - `Microsoft.AspNetCore.WebUtilities.QueryHelpers::ParseNullableQuery` -* Added `js-interop` sinks for the `InvokeAsync` and `InvokeVoidAsync` methods of `Microsoft.JSInterop.IJSRuntime`, which can run arbitrary JavaScript. +* Added `js-interop` sinks for the `InvokeAsync` and `InvokeVoidAsync` methods of `Microsoft.JSInterop.IJSRuntime`, which can run arbitrary JavaScript. ## 3.1.1 @@ -201,8 +231,8 @@ No user-facing changes. ### Breaking Changes -* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. -* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. * Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. ### Minor Analysis Improvements @@ -451,7 +481,7 @@ No user-facing changes. ### New Features -* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. +* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. Hence it is no longer needed to provide `none()` implementations of these predicates if they are not needed. ### Minor Analysis Improvements @@ -586,7 +616,7 @@ No user-facing changes. * Attributes on methods in CIL are now extracted (Bugfix). * Support for `static virtual` and `static abstract` interface members. -* Support for *operators* in interface definitions. +* Support for *operators* in interface definitions. * C# 11: Added support for the unsigned right shift `>>>` and unsigned right shift assignment `>>>=` operators. * Query id's have been aligned such that they are prefixed with `cs` instead of `csharp`. @@ -626,13 +656,13 @@ No user-facing changes. ### Minor Analysis Improvements * `DateTime` expressions are now considered simple type sanitizers. This affects a wide range of security queries. -* ASP.NET Core controller definition has been made more precise. The amount of introduced taint sources or eliminated false positives should be low though, since the most common pattern is to derive all user defined ASP.NET Core controllers from the standard Controller class, which is not affected. +* ASP.NET Core controller definition has been made more precise. The amount of introduced taint sources or eliminated false positives should be low though, since the most common pattern is to derive all user defined ASP.NET Core controllers from the standard Controller class, which is not affected. ## 0.4.0 ### Deprecated APIs -* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### Bug Fixes @@ -645,7 +675,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### Minor Analysis Improvements @@ -692,7 +722,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. +* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features diff --git a/csharp/ql/lib/change-notes/released/5.3.0.md b/csharp/ql/lib/change-notes/released/5.3.0.md index 144f8bf26332..fa3053625757 100644 --- a/csharp/ql/lib/change-notes/released/5.3.0.md +++ b/csharp/ql/lib/change-notes/released/5.3.0.md @@ -6,7 +6,7 @@ ### Major Analysis Improvements -* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. +* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions. For example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. ### Minor Analysis Improvements diff --git a/csharp/ql/lib/change-notes/released/5.4.0.md b/csharp/ql/lib/change-notes/released/5.4.0.md new file mode 100644 index 000000000000..478e6deb4141 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/5.4.0.md @@ -0,0 +1,13 @@ +## 5.4.0 + +### Deprecated APIs + +* `ControlFlowElement.controlsBlock` has been deprecated in favor of the Guards library. + +### New Features + +* Initial support for incremental C# databases via `codeql database create --overlay-base`/`--overlay-changes`. + +### Minor Analysis Improvements + +* Updated *roslyn* and *binlog* dependencies in the extractor, which may improve database and analysis quality. diff --git a/csharp/ql/lib/change-notes/released/5.4.1.md b/csharp/ql/lib/change-notes/released/5.4.1.md new file mode 100644 index 000000000000..2b0961ec9250 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/5.4.1.md @@ -0,0 +1,7 @@ +## 5.4.1 + +### Minor Analysis Improvements + +* Improved stability when downloading .NET versions by setting appropriate environment variables for `dotnet` commands. The correct architecture-specific version of .NET is now downloaded on ARM runners. +* Compilation errors are now included in the debug log when using build-mode none. +* Added a new extractor option to specify a custom directory for dependency downloads in buildless mode. Use `-O buildless_dependency_dir=` to configure the target directory. diff --git a/csharp/ql/lib/change-notes/released/5.4.2.md b/csharp/ql/lib/change-notes/released/5.4.2.md new file mode 100644 index 000000000000..ae5501672ad8 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/5.4.2.md @@ -0,0 +1,3 @@ +## 5.4.2 + +No user-facing changes. diff --git a/csharp/ql/lib/change-notes/released/5.4.3.md b/csharp/ql/lib/change-notes/released/5.4.3.md new file mode 100644 index 000000000000..61270c2fe02d --- /dev/null +++ b/csharp/ql/lib/change-notes/released/5.4.3.md @@ -0,0 +1,3 @@ +## 5.4.3 + +No user-facing changes. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index b0a1c83e5bc9..dc2d3dec96cc 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.3.0 +lastReleaseVersion: 5.4.3 diff --git a/csharp/ql/lib/csharp.qll b/csharp/ql/lib/csharp.qll index dc187fc8d923..cab24d12dcd3 100644 --- a/csharp/ql/lib/csharp.qll +++ b/csharp/ql/lib/csharp.qll @@ -36,6 +36,7 @@ import semmle.code.csharp.controlflow.ControlFlowGraph import semmle.code.csharp.dataflow.DataFlow import semmle.code.csharp.dataflow.TaintTracking import semmle.code.csharp.dataflow.SSA +private import semmle.code.csharp.internal.Overlay /** Whether the source was extracted without a build command. */ predicate extractionIsStandalone() { exists(SourceFile f | f.extractedStandalone()) } diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 825db3642f90..6b08ef4fb8ee 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.3.0 +version: 5.4.3 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp @@ -20,3 +20,4 @@ dataExtensions: - ext/*.model.yml - ext/generated/*.model.yml warnOnImplicitThis: true +compileForOverlayEval: true diff --git a/csharp/ql/lib/semmle/code/csharp/Caching.qll b/csharp/ql/lib/semmle/code/csharp/Caching.qll index 50a789f79897..bbe310fe69e5 100644 --- a/csharp/ql/lib/semmle/code/csharp/Caching.qll +++ b/csharp/ql/lib/semmle/code/csharp/Caching.qll @@ -33,8 +33,6 @@ module Stages { cached private predicate forceCachingInSameStageRev() { - any(ControlFlowElement cfe).controlsBlock(_, _, _) - or exists(GuardedExpr ge) or forceCachingInSameStageRev() diff --git a/csharp/ql/lib/semmle/code/csharp/Conversion.qll b/csharp/ql/lib/semmle/code/csharp/Conversion.qll index 7a1314abe163..99c58ee51c68 100644 --- a/csharp/ql/lib/semmle/code/csharp/Conversion.qll +++ b/csharp/ql/lib/semmle/code/csharp/Conversion.qll @@ -719,6 +719,15 @@ private Type convTypeParameterBase(TypeParameter tp) { result = getATypeParameterFromConstraints+(tp) } +pragma[noinline] +private Class typeConstraintToBaseType(TypeParameterConstraints tpc) { + tpc.hasValueTypeConstraint() and result instanceof SystemValueTypeClass + or + result = tpc.getATypeConstraint() + or + tpc.hasRefTypeConstraint() and result instanceof ObjectType +} + /** * 10.1.5: Candidates for the effective base class of type parameter `tp`. * @@ -731,13 +740,9 @@ private Class effectiveBaseClassCandidate(TypeParameter tp) { not hasPrimaryConstraints(tp) and result instanceof ObjectType or exists(TypeParameterConstraints tpc | tpc = tp.getConstraints() | - tpc.hasValueTypeConstraint() and result instanceof SystemValueTypeClass - or - result = tpc.getATypeConstraint() + result = typeConstraintToBaseType(tpc) or result = effectiveBaseClassCandidate(tpc.getATypeConstraint()) - or - tpc.hasRefTypeConstraint() and result instanceof ObjectType ) } diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll index 784dab415f3e..0d0ed6819698 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll @@ -87,148 +87,20 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element { result.getAControlFlowNode() } - pragma[noinline] - private predicate immediatelyControlsBlockSplit0( - ConditionBlock cb, BasicBlock succ, ConditionalSuccessor s - ) { - // Only calculate dominance by explicit recursion for split nodes; - // all other nodes can use regular CFG dominance - this instanceof Impl::SplitAstNode and - cb.getLastNode() = this.getAControlFlowNode() and - succ = cb.getASuccessor(s) - } - - pragma[noinline] - private predicate immediatelyControlsBlockSplit1( - ConditionBlock cb, BasicBlock succ, ConditionalSuccessor s, BasicBlock pred, SuccessorType t - ) { - this.immediatelyControlsBlockSplit0(cb, succ, s) and - pred = succ.getAPredecessorByType(t) and - pred != cb - } - - pragma[noinline] - private predicate immediatelyControlsBlockSplit2( - ConditionBlock cb, BasicBlock succ, ConditionalSuccessor s, BasicBlock pred, SuccessorType t - ) { - this.immediatelyControlsBlockSplit1(cb, succ, s, pred, t) and - ( - succ.dominates(pred) - or - // `pred` might be another split of this element - pred.getLastNode().getAstNode() = this and - t = s - ) - } - /** - * Holds if basic block `succ` is immediately controlled by this control flow - * element with conditional value `s`. That is, `succ` can only be reached from - * the callable entry point by going via the `s` edge out of *some* basic block - * `pred` ending with this element, and `pred` is an immediate predecessor - * of `succ`. - * - * Moreover, this control flow element corresponds to multiple control flow nodes, - * which is why - * - * ```ql - * exists(ConditionBlock cb | - * cb.getLastNode() = this.getAControlFlowNode() | - * cb.immediatelyControls(succ, s) - * ) - * ``` + * DEPRECATED: Use `Guard` class instead. * - * does not work. - * - * `cb` records all of the possible condition blocks for this control flow element - * that a path from the callable entry point to `succ` may go through. - */ - pragma[nomagic] - private predicate immediatelyControlsBlockSplit( - BasicBlock succ, ConditionalSuccessor s, ConditionBlock cb - ) { - this.immediatelyControlsBlockSplit0(cb, succ, s) and - forall(BasicBlock pred, SuccessorType t | - this.immediatelyControlsBlockSplit1(cb, succ, s, pred, t) - | - this.immediatelyControlsBlockSplit2(cb, succ, s, pred, t) - ) - } - - pragma[noinline] - private predicate controlsJoinBlockPredecessor( - JoinBlock controlled, ConditionalSuccessor s, int i, ConditionBlock cb - ) { - this.controlsBlockSplit(controlled.getJoinBlockPredecessor(i), s, cb) - } - - private predicate controlsJoinBlockSplit(JoinBlock controlled, ConditionalSuccessor s, int i) { - i = -1 and - this.controlsJoinBlockPredecessor(controlled, s, _, _) - or - this.controlsJoinBlockSplit(controlled, s, i - 1) and - ( - this.controlsJoinBlockPredecessor(controlled, s, i, _) - or - controlled.dominates(controlled.getJoinBlockPredecessor(i)) - ) - } - - cached - private predicate controlsBlockSplit( - BasicBlock controlled, ConditionalSuccessor s, ConditionBlock cb - ) { - Stages::GuardsStage::forceCachingInSameStage() and - this.immediatelyControlsBlockSplit(controlled, s, cb) - or - // Equivalent with - // - // ```ql - // exists(JoinBlockPredecessor pred | pred = controlled.getAPredecessor() | - // this.controlsBlockSplit(pred, s) - // ) and - // forall(JoinBlockPredecessor pred | pred = controlled.getAPredecessor() | - // this.controlsBlockSplit(pred, s) - // or - // controlled.dominates(pred) - // ) - // ``` - // - // but uses no universal recursion for better performance. - exists(int last | - last = max(int i | exists(controlled.(JoinBlock).getJoinBlockPredecessor(i))) - | - this.controlsJoinBlockSplit(controlled, s, last) - ) and - this.controlsJoinBlockPredecessor(controlled, s, _, cb) - or - not controlled instanceof JoinBlock and - this.controlsBlockSplit(controlled.getAPredecessor(), s, cb) - } - - /** * Holds if basic block `controlled` is controlled by this control flow element * with conditional value `s`. That is, `controlled` can only be reached from * the callable entry point by going via the `s` edge out of *some* basic block * ending with this element. * - * This predicate is different from - * - * ```ql - * exists(ConditionBlock cb | - * cb.getLastNode() = this.getAControlFlowNode() | - * cb.controls(controlled, s) - * ) - * ``` - * - * as control flow splitting is taken into account. - * * `cb` records all of the possible condition blocks for this control flow element * that a path from the callable entry point to `controlled` may go through. */ - predicate controlsBlock(BasicBlock controlled, ConditionalSuccessor s, ConditionBlock cb) { - this.controlsBlockSplit(controlled, s, cb) - or + deprecated predicate controlsBlock( + BasicBlock controlled, ConditionalSuccessor s, ConditionBlock cb + ) { cb.getLastNode() = this.getAControlFlowNode() and cb.edgeDominates(controlled, s) } diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index 32519ba2348a..f61d7f9c3a78 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -49,8 +49,15 @@ private module GuardsInput implements override predicate isNull() { any() } } - private class BooleanConstant extends ConstantExpr instanceof BoolLiteral { - override boolean asBooleanValue() { result = super.getBoolValue() } + private predicate boolConst(Expr e, boolean b) { + e.getType() instanceof BoolType and + e.getValue() = b.toString() + } + + private class BooleanConstant extends ConstantExpr { + BooleanConstant() { boolConst(this, _) } + + override boolean asBooleanValue() { boolConst(this, result) } } private predicate intConst(Expr e, int i) { diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index 39557018a8ca..a3f876e7de6a 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -2592,10 +2592,10 @@ class NodeRegion instanceof ControlFlow::BasicBlock { * Holds if the nodes in `nr` are unreachable when the call context is `call`. */ predicate isUnreachableInCall(NodeRegion nr, DataFlowCall call) { - exists(ExplicitParameterNode paramNode, Guard guard, ControlFlow::BooleanSuccessor bs | - viableConstantBooleanParamArg(paramNode, bs.getValue().booleanNot(), call) and + exists(ExplicitParameterNode paramNode, Guard guard, GuardValue val | + viableConstantParamArg(paramNode, val.getDualValue(), call) and paramNode.getSsaDefinition().getARead() = guard and - guard.controlsBlock(nr, bs, _) + guard.valueControls(nr, val) ) } @@ -2913,33 +2913,19 @@ class CastNode extends Node { class DataFlowExpr = Expr; -/** Holds if `e` is an expression that always has the same Boolean value `val`. */ -private predicate constantBooleanExpr(Expr e, boolean val) { - e.getType() instanceof BoolType and - e.getValue() = val.toString() - or - exists(Ssa::ExplicitDefinition def, Expr src | - e = def.getARead() and - src = def.getADefinition().getSource() and - constantBooleanExpr(src, val) - ) -} +/** An argument that always has the same value. */ +private class ConstantArgumentNode extends ExprNode { + ConstantArgumentNode() { Guards::InternalUtil::exprHasValue(this.(ArgumentNode).asExpr(), _) } -/** An argument that always has the same Boolean value. */ -private class ConstantBooleanArgumentNode extends ExprNode { - ConstantBooleanArgumentNode() { constantBooleanExpr(this.(ArgumentNode).asExpr(), _) } - - /** Gets the Boolean value of this expression. */ - boolean getBooleanValue() { constantBooleanExpr(this.getExpr(), result) } + /** Gets the value of this expression. */ + GuardValue getValue() { Guards::InternalUtil::exprHasValue(this.getExpr(), result) } } pragma[noinline] -private predicate viableConstantBooleanParamArg( - ParameterNode paramNode, boolean b, DataFlowCall call -) { - exists(ConstantBooleanArgumentNode arg | +private predicate viableConstantParamArg(ParameterNode paramNode, GuardValue val, DataFlowCall call) { + exists(ConstantArgumentNode arg | viableParamArg(call, paramNode, arg) and - b = arg.getBooleanValue() + val = arg.getValue() ) } diff --git a/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll b/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll new file mode 100644 index 000000000000..a2939a5df031 --- /dev/null +++ b/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll @@ -0,0 +1,138 @@ +/** + * Defines entity discard predicates for C# overlay analysis. + */ + +private import OverlayXml + +/** + * Holds always for the overlay variant and never for the base variant. + * This local predicate is used to define local predicates that behave + * differently for the base and overlay variant. + */ +overlay[local] +predicate isOverlay() { databaseMetadata("isOverlay", "true") } + +overlay[local] +private string getLocationFilePath(@location_default loc) { + exists(@file file | locations_default(loc, file, _, _, _, _) | files(file, result)) +} + +overlay[local] +private class DiscardableEntityBase extends @locatable { + /** Gets the path to the file in which this element occurs. */ + abstract string getFilePath(); + + /** Holds if this element exists in the base variant. */ + predicate existsInBase() { not isOverlay() } + + /** Holds if this element exists in the overlay variant. */ + predicate existsInOverlay() { isOverlay() } + + /** Gets a textual representation of this discardable element. */ + string toString() { none() } +} + +/** + * A class of elements that can be discarded from the base. + */ +overlay[local] +private class DiscardableEntity extends DiscardableEntityBase { + /** Gets the path to the file in which this element occurs. */ + override string getFilePath() { + exists(@location_default loc | result = getLocationFilePath(loc) | + expr_location(this, loc) or + stmt_location(this, loc) or + using_directive_location(this, loc) or + namespace_declaration_location(this, loc) or + preprocessor_directive_location(this, loc) or + type_location(this, loc) or + attribute_location(this, loc) or + type_parameter_constraints_location(this, loc) or + property_location(this, loc) or + indexer_location(this, loc) or + accessor_location(this, loc) or + event_location(this, loc) or + event_accessor_location(this, loc) or + operator_location(this, loc) or + method_location(this, loc) or + constructor_location(this, loc) or + destructor_location(this, loc) or + field_location(this, loc) or + localvar_location(this, loc) or + param_location(this, loc) or + type_mention_location(this, loc) or + commentline_location(this, loc) or + commentblock_location(this, loc) or + diagnostics(this, _, _, _, _, loc) or + extractor_messages(this, _, _, _, _, loc, _) + ) + } +} + +/** + * A class of C# database entities that use `*` IDs. + * The rest use named TRAP IDs. + */ +overlay[local] +private class StarEntity = + @expr or @stmt or @diagnostic or @extractor_message or @using_directive or @type_mention or + @local_variable; + +overlay[discard_entity] +private predicate discardStarEntity(@locatable e) { + e instanceof StarEntity and + // Entities with *-ids can exist either in base or overlay, but not both. + e = + any(DiscardableEntity de | + overlayChangedFiles(de.getFilePath()) and + de.existsInBase() + ) +} + +overlay[discard_entity] +private predicate discardNamedEntity(@locatable e) { + not e instanceof StarEntity and + // Entities with named IDs can exist both in base, overlay, or both. + e = + any(DiscardableEntity de | + overlayChangedFiles(de.getFilePath()) and + not de.existsInOverlay() + ) +} + +overlay[local] +private predicate discardableLocation(@location_default loc, string path) { + not isOverlay() and + path = getLocationFilePath(loc) +} + +// Discard locations that are in changed files from the base variant. +overlay[discard_entity] +private predicate discardLocation(@location_default loc) { + exists(string path | discardableLocation(loc, path) | overlayChangedFiles(path)) +} + +overlay[local] +private class DiscardableAspEntity extends DiscardableEntityBase instanceof @asp_element { + /** Gets the path to the file in which this element occurs. */ + override string getFilePath() { + exists(@location_default loc | result = getLocationFilePath(loc) | asp_elements(this, _, loc)) + } +} + +overlay[local] +private predicate overlayAspExtracted(string file) { + exists(DiscardableAspEntity dae | + dae.existsInOverlay() and + file = dae.getFilePath() + ) +} + +overlay[discard_entity] +private predicate discardAspEntity(@asp_element asp) { + overlayChangedFiles(asp.(DiscardableAspEntity).getFilePath()) + or + // The ASP extractor is not incremental and may extract more + // ASP files than those included in overlayChangedFiles. + overlayAspExtracted(asp.(DiscardableAspEntity).getFilePath()) +} diff --git a/csharp/ql/lib/semmle/code/csharp/internal/OverlayXml.qll b/csharp/ql/lib/semmle/code/csharp/internal/OverlayXml.qll new file mode 100644 index 000000000000..95d49f2d6110 --- /dev/null +++ b/csharp/ql/lib/semmle/code/csharp/internal/OverlayXml.qll @@ -0,0 +1,46 @@ +overlay[local] +module; + +/** + * A local predicate that always holds for the overlay variant and never holds for the base variant. + * This is used to define local predicates that behave differently for the base and overlay variant. + */ +private predicate isOverlay() { databaseMetadata("isOverlay", "true") } + +private string getXmlFile(@xmllocatable locatable) { + exists(@location_default location, @file file | xmllocations(locatable, location) | + locations_default(location, file, _, _, _, _) and + files(file, result) + ) +} + +private string getXmlFileInBase(@xmllocatable locatable) { + not isOverlay() and + result = getXmlFile(locatable) +} + +/** + * Holds if the given `file` was extracted as part of the overlay and was extracted by the HTML/XML + * extractor. + */ +private predicate overlayXmlExtracted(string file) { + isOverlay() and + exists(@xmllocatable locatable | + not files(locatable, _) and not xmlNs(locatable, _, _, _) and file = getXmlFile(locatable) + ) +} + +/** + * Holds if the given XML `locatable` should be discarded, because it is part of the overlay base + * and is in a file that was also extracted as part of the overlay database. + */ +overlay[discard_entity] +private predicate discardXmlLocatable(@xmllocatable locatable) { + exists(string file | file = getXmlFileInBase(locatable) | + overlayChangedFiles(file) + or + // The HTML/XML extractor is currently not incremental and may extract more files than those + // included in overlayChangedFiles. + overlayXmlExtracted(file) + ) +} diff --git a/csharp/ql/src/experimental/dataflow/flowsources/AuthCookie.qll b/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll similarity index 85% rename from csharp/ql/src/experimental/dataflow/flowsources/AuthCookie.qll rename to csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll index e91ae9de5385..56b6294949b8 100644 --- a/csharp/ql/src/experimental/dataflow/flowsources/AuthCookie.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll @@ -1,13 +1,13 @@ /** - * Provides classes and predicates for detecting insecure cookies. + * Definitions for detecting insecure and non-HttpOnly cookies. */ -deprecated module; import csharp -import semmle.code.csharp.frameworks.microsoft.AspNetCore +private import semmle.code.csharp.frameworks.system.Web +private import semmle.code.csharp.frameworks.microsoft.AspNetCore /** - * Holds if the expression is a variable with a sensitive name. + * Holds if the expression is a sensitive string literal or a variable with a sensitive name. */ predicate isCookieWithSensitiveName(Expr cookieExpr) { exists(DataFlow::Node sink | @@ -17,7 +17,7 @@ predicate isCookieWithSensitiveName(Expr cookieExpr) { } /** - * Configuration for tracking if a variable with a sensitive name is used as an argument. + * Configuration for tracking if a sensitive string literal or a variable with a sensitive name is used as an argument. */ private module AuthCookieNameConfig implements DataFlow::ConfigSig { private predicate isAuthVariable(Expr expr) { @@ -33,7 +33,15 @@ private module AuthCookieNameConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { isAuthVariable(source.asExpr()) } - predicate isSink(DataFlow::Node sink) { exists(Call c | sink.asExpr() = c.getAnArgument()) } + predicate isSink(DataFlow::Node sink) { + exists(Call c | + sink.asExpr() = c.getAnArgument() and + ( + c.getTarget() = any(MicrosoftAspNetCoreHttpResponseCookies cls).getAppendMethod() or + c.(ObjectCreation).getType() instanceof SystemWebHttpCookie + ) + ) + } } /** @@ -119,13 +127,13 @@ private signature string propertyName(); /** * Configuration for tracking if a callback used in `OnAppendCookie` sets a cookie property to `true`. + * + * ` getPropertyName` specifies the cookie property name to track. */ private module OnAppendCookieTrackingConfig implements DataFlow::ConfigSig { - /** - * Specifies the cookie property name to track. - */ + /** Source is the parameter of a callback passed to `OnAppendCookie` */ predicate isSource(DataFlow::Node source) { exists(PropertyWrite pw, Assignment delegateAssign, Callable c | pw.getProperty().getName() = "OnAppendCookie" and @@ -146,6 +154,7 @@ private module OnAppendCookieTrackingConfig impl ) } + /** Sink is a property write that sets the given property to `true`. */ predicate isSink(DataFlow::Node sink) { exists(PropertyWrite pw, Assignment a | pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieOptions and @@ -178,7 +187,7 @@ private module OnAppendCookieSecureTrackingConfig = OnAppendCookieTrackingConfig; /** - * Tracks if a callback used in `OnAppendCookie` sets `Secure` to `true`. + * Tracks if a callback used in `OnAppendCookie` sets `Secure` to `true`, and thus cookies appended to responses are secure by default. */ module OnAppendCookieSecureTracking = DataFlow::Global; @@ -191,6 +200,6 @@ private module OnAppendCookieHttpOnlyTrackingConfig = OnAppendCookieTrackingConfig; /** - * Tracks if a callback used in `OnAppendCookie` sets `HttpOnly` to `true`. + * Tracks if a callback used in `OnAppendCookie` sets `HttpOnly` to `true`, and thus cookies appended to responses are httponly by default. */ module OnAppendCookieHttpOnlyTracking = DataFlow::Global; diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll index f2b46e4ebac1..53b44f873a64 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll @@ -72,17 +72,10 @@ class ReverseDnsSource extends Source { } } -pragma[noinline] -private predicate conditionControlsCall0( - SensitiveExecutionMethodCall call, Expr e, ControlFlow::BooleanSuccessor s -) { - forex(BasicBlock bb | bb = call.getAControlFlowNode().getBasicBlock() | e.controlsBlock(bb, s, _)) -} - private predicate conditionControlsCall( SensitiveExecutionMethodCall call, SensitiveExecutionMethod def, Expr e, boolean cond ) { - exists(ControlFlow::BooleanSuccessor s | cond = s.getValue() | conditionControlsCall0(call, e, s)) and + e.(Guard).directlyControls(call.getBasicBlock(), cond) and def = call.getTarget().getUnboundDeclaration() } diff --git a/csharp/ql/lib/semmlecode.csharp.dbscheme b/csharp/ql/lib/semmlecode.csharp.dbscheme index 66044cfa5bbf..68b5aec54e50 100644 --- a/csharp/ql/lib/semmlecode.csharp.dbscheme +++ b/csharp/ql/lib/semmlecode.csharp.dbscheme @@ -194,6 +194,24 @@ externalData( sourceLocationPrefix( string prefix: string ref); +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + /* * C# dbscheme */ @@ -222,6 +240,12 @@ sourceLocationPrefix( @location = @location_default | @assembly; +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + locations_default( unique int id: @location_default, int file: @file ref, diff --git a/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/old.dbscheme b/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/old.dbscheme new file mode 100644 index 000000000000..605f85053409 --- /dev/null +++ b/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/old.dbscheme @@ -0,0 +1,1478 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_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( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : 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 ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string 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 +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string 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); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* 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; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/semmlecode.csharp.dbscheme b/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/semmlecode.csharp.dbscheme new file mode 100644 index 000000000000..68b5aec54e50 --- /dev/null +++ b/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/semmlecode.csharp.dbscheme @@ -0,0 +1,1484 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_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( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : 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 ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string 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 +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string 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); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* 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; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/upgrade.properties b/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/upgrade.properties new file mode 100644 index 000000000000..81395885eddb --- /dev/null +++ b/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/upgrade.properties @@ -0,0 +1,2 @@ +description: Add @locatable type +compatibility: full diff --git a/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/old.dbscheme b/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/old.dbscheme new file mode 100644 index 000000000000..66044cfa5bbf --- /dev/null +++ b/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/old.dbscheme @@ -0,0 +1,1460 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_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( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : 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 ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string 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 +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string 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); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* 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; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/semmlecode.csharp.dbscheme b/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/semmlecode.csharp.dbscheme new file mode 100644 index 000000000000..605f85053409 --- /dev/null +++ b/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/semmlecode.csharp.dbscheme @@ -0,0 +1,1478 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_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( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : 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 ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string 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 +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string 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); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* 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; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/upgrade.properties b/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/upgrade.properties new file mode 100644 index 000000000000..52b67d65af75 --- /dev/null +++ b/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/upgrade.properties @@ -0,0 +1,2 @@ +description: Add databaseMetadata and overlayChangedFiles relations +compatibility: full diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 8993b4535436..e91f882b9eda 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,25 @@ +## 1.5.3 + +No user-facing changes. + +## 1.5.2 + +No user-facing changes. + +## 1.5.1 + +No user-facing changes. + +## 1.5.0 + +### New Queries + +* The `cs/web/cookie-secure-not-set` and `cs/web/cookie-httponly-not-set` queries have been promoted from experimental to the main query pack. + +### Minor Analysis Improvements + +* An improvement to the Guards library for recognizing disjunctions means improved precision for `cs/constant-condition`, `cs/inefficient-containskey`, and `cs/dereferenced-value-may-be-null`. The two former can have additional findings, and the latter will have fewer false positives. + ## 1.4.3 ### Minor Analysis Improvements @@ -284,7 +306,7 @@ No user-facing changes. ### Minor Analysis Improvements -* Fixed a Log forging false positive when using `String.Replace` to sanitize the input. +* Fixed a Log forging false positive when using `String.Replace` to sanitize the input. * Fixed a URL redirection from remote source false positive when guarding a redirect with `HttpRequestBase.IsUrlLocalToHost()` ## 0.8.5 diff --git a/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql b/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql index 44ead3cfd97a..bd30e690a66e 100644 --- a/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql +++ b/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql @@ -1,5 +1,5 @@ /** - * @name Container size compared to zero. + * @name Container size compared to zero * @description Comparing the size of a container to zero with this operator will always return the same value. * @kind problem * @problem.severity warning diff --git a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp new file mode 100644 index 000000000000..01bcc8c81da0 --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp @@ -0,0 +1,60 @@ + + + + +

Cookies without the HttpOnly flag set are accessible to client-side scripts such as JavaScript running in the same origin. +In case of a Cross-Site Scripting (XSS) vulnerability, the cookie can be stolen by a malicious script. +If a sensitive cookie does not need to be accessed directly by client-side JS, the HttpOnly flag should be set.

+
+ + +

+Set the HttpOnly flag to true for authentication cookies to ensure they are not accessible to client-side scripts. +

+

+When using ASP.NET Core, CookiePolicyOptions can be used to set a default policy for cookies. + +When using ASP.NET Web Forms, a default may also be configured in the Web.config file, using the httpOnlyCookies attribute of the +the <httpCookies> element. +

+
+ + + +

+In the example below, Microsoft.AspNetCore.Http.CookieOptions.HttpOnly is set to true. +

+ + + +

+In the following example, CookiePolicyOptions are set programmatically to configure defaults. +

+ + + +

+In the example below, System.Web.HttpCookie.HttpOnly is set to true. +

+ + + +

+In the example below, the httpOnlyCookies attribute is set to true in the Web.config file. +

+ + +
+ + + +
  • ASP.Net Core docs: CookieOptions.HttpOnly Property.
  • +
  • MDN: Set-Cookie Header.
  • +
  • Web Forms docs: HttpCookie.HttpOnly Property.
  • +
  • Web Forms docs: httpCookies Element.
  • +
  • PortSwigger: Cookie without HttpOnly flag set
  • + +
    +
    diff --git a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql new file mode 100644 index 000000000000..dcc520540bb0 --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql @@ -0,0 +1,118 @@ +/** + * @name Cookie 'HttpOnly' attribute is not set to true + * @description Sensitive cookies without the `HttpOnly` property set are accessible by client-side scripts such as JavaScript. + * This makes them more vulnerable to being stolen by an XSS attack. + * @kind problem + * @problem.severity warning + * @security-severity 5.0 + * @precision high + * @id cs/web/cookie-httponly-not-set + * @tags security + * external/cwe/cwe-1004 + */ + +import csharp +import semmle.code.asp.WebConfig +import semmle.code.csharp.frameworks.system.Web +import semmle.code.csharp.frameworks.microsoft.AspNetCore +import semmle.code.csharp.security.auth.SecureCookies + +predicate cookieAppendHttpOnlyByDefault() { + // default is set to `Always` + getAValueForCookiePolicyProp("HttpOnly").getValue() = "1" + or + // there is an `OnAppendCookie` callback that sets `HttpOnly` to true + OnAppendCookieHttpOnlyTracking::flowTo(_) +} + +predicate httpOnlyFalse(ObjectCreation oc) { + exists(Assignment a | + getAValueForProp(oc, a, "HttpOnly") = a.getRValue() and + a.getRValue().getValue() = "false" + ) +} + +predicate httpOnlyFalseOrNotSet(ObjectCreation oc) { + httpOnlyFalse(oc) + or + not isPropertySet(oc, "HttpOnly") +} + +predicate nonHttpOnlyCookieOptionsCreation(ObjectCreation oc, MethodCall append) { + // `HttpOnly` property in `CookieOptions` passed to IResponseCookies.Append(...) wasn't set + oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and + httpOnlyFalseOrNotSet(oc) and + exists(DataFlow::Node creation, DataFlow::Node sink | + CookieOptionsTracking::flow(creation, sink) and + creation.asExpr() = oc and + sink.asExpr() = append.getArgument(2) + ) +} + +predicate nonHttpOnlySystemWebSensitiveCookieCreation(ObjectCreation oc) { + oc.getType() instanceof SystemWebHttpCookie and + isCookieWithSensitiveName(oc.getArgument(0)) and + ( + httpOnlyFalse(oc) + or + // the property wasn't explicitly set, so a default value from config is used + not isPropertySet(oc, "HttpOnly") and + // the default in config is not set to `true` + not exists(XmlElement element | + element instanceof HttpCookiesElement and + element.(HttpCookiesElement).isHttpOnlyCookies() + ) + ) +} + +predicate sensitiveCookieAppend(MethodCall mc) { + exists(MicrosoftAspNetCoreHttpResponseCookies iResponse | + iResponse.getAppendMethod() = mc.getTarget() and + isCookieWithSensitiveName(mc.getArgument(0)) + ) +} + +predicate nonHttpOnlyCookieCall(Call c) { + ( + not cookieAppendHttpOnlyByDefault() and + exists(MethodCall mc | + sensitiveCookieAppend(mc) and + ( + nonHttpOnlyCookieOptionsCreation(c, mc) + or + // IResponseCookies.Append(String, String) was called, `HttpOnly` is set to `false` by default + mc = c and + mc.getNumberOfArguments() < 3 and + mc.getTarget().getParameter(0).getType() instanceof StringType + ) + ) + or + nonHttpOnlySystemWebSensitiveCookieCreation(c) + ) +} + +predicate nonHttpOnlyCookieBuilderAssignment(Assignment a, Expr val) { + val.getValue() = "false" and + exists(PropertyWrite pw | + ( + pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieBuilder or + pw.getProperty().getDeclaringType() instanceof + MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions + ) and + pw.getProperty().getName() = "HttpOnly" and + a.getLValue() = pw and + DataFlow::localExprFlow(val, a.getRValue()) + ) +} + +from Expr httpOnlySink +where + ( + nonHttpOnlyCookieCall(httpOnlySink) + or + exists(Assignment a | + httpOnlySink = a.getRValue() and + nonHttpOnlyCookieBuilderAssignment(a, _) + ) + ) +select httpOnlySink, "Cookie attribute 'HttpOnly' is not set to true." diff --git a/csharp/ql/src/Security Features/CWE-1004/Web.config b/csharp/ql/src/Security Features/CWE-1004/Web.config new file mode 100644 index 000000000000..8f4cf5ba7777 --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-1004/Web.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/csharp/ql/src/experimental/Security Features/CWE-1004/cookiepolicyoptions.cs b/csharp/ql/src/Security Features/CWE-1004/cookiepolicyoptions.cs similarity index 100% rename from csharp/ql/src/experimental/Security Features/CWE-1004/cookiepolicyoptions.cs rename to csharp/ql/src/Security Features/CWE-1004/cookiepolicyoptions.cs diff --git a/csharp/ql/src/experimental/Security Features/CWE-1004/httponlyflag.cs b/csharp/ql/src/Security Features/CWE-1004/httponlyflag.cs similarity index 100% rename from csharp/ql/src/experimental/Security Features/CWE-1004/httponlyflag.cs rename to csharp/ql/src/Security Features/CWE-1004/httponlyflag.cs diff --git a/csharp/ql/src/experimental/Security Features/CWE-1004/httponlyflagcore.cs b/csharp/ql/src/Security Features/CWE-1004/httponlyflagcore.cs similarity index 100% rename from csharp/ql/src/experimental/Security Features/CWE-1004/httponlyflagcore.cs rename to csharp/ql/src/Security Features/CWE-1004/httponlyflagcore.cs diff --git a/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql b/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql index b48ddbf0f350..7a328052f866 100644 --- a/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql +++ b/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql @@ -1,5 +1,5 @@ /** - * @name Do not add certificates to the system root store. + * @name Do not add certificates to the system root store * @description Application- or user-specific certificates placed in the system root store could * weaken security for other processing running on the same system. * @kind path-problem diff --git a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.qhelp b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.qhelp new file mode 100644 index 000000000000..f122c4d881bc --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.qhelp @@ -0,0 +1,61 @@ + + + + +

    Cookies without the Secure flag set may be transmitted using HTTP instead of HTTPS. +This leaves them vulnerable to being read by a third party attacker. If a sensitive cookie such as a session +key is intercepted this way, it would allow the attacker to perform actions on a user's behalf.

    +
    + + +

    +When using ASP.NET Core, ensure cookies have the secure flag set by setting Microsoft.AspNetCore.Http.CookieOptions.Secure to true, or +using CookiePolicyOptions to set a default security policy. +

    +

    +When using ASP.NET Web Forms, cookies can be configured as secure by default in the Web.config file, setting the requireSSL attribute to true in the forms or httpCookies element. +Cookies may also be set to be secure programmatically by setting the System.Web.HttpCookie.Secure attribute to true. +

    +
    + + + +

    +In the example below, Microsoft.AspNetCore.Http.CookieOptions.Secure is set to true. +

    + + + +

    +In the following example, CookiePolicyOptions are set programmatically to configure defaults. +

    + + + +

    +In the example below System.Web.HttpCookie.Secure is set to true programmatically. +

    + + + +

    +In the example below, the requireSSL attribute is set to true in the forms element of the Web.config file. +

    + + +
    + + + +
  • ASP.NET Core docs: CookieOptions.Secure Property.
  • +
  • MDN: Set-Cookie Header.
  • +
  • Web Forms docs: FormsAuthentication.RequireSSL Property.
  • +
  • Web Forms docs: forms Element for authentication.
  • +
  • Web Forms docs: httpCookies Element.
  • +
  • Detectify: Cookie lack Secure flag.
  • +
  • PortSwigger: TLS cookie without secure flag set.
  • + +
    +
    diff --git a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql new file mode 100644 index 000000000000..2a90698ed275 --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql @@ -0,0 +1,116 @@ +/** + * @name Cookie 'Secure' attribute is not set to true + * @description Cookies without the `Secure` flag may be sent in cleartext. + * This makes them vulnerable to be intercepted by an attacker. + * @kind problem + * @problem.severity error + * @security-severity 5.0 + * @precision high + * @id cs/web/cookie-secure-not-set + * @tags security + * external/cwe/cwe-319 + * external/cwe/cwe-614 + */ + +import csharp +import semmle.code.asp.WebConfig +import semmle.code.csharp.frameworks.system.Web +import semmle.code.csharp.frameworks.microsoft.AspNetCore +import semmle.code.csharp.security.auth.SecureCookies + +predicate cookieAppendSecureByDefault() { + // default is set to `Always` or `SameAsRequest` + ( + getAValueForCookiePolicyProp("Secure").getValue() = "0" or + getAValueForCookiePolicyProp("Secure").getValue() = "1" + ) + or + //callback `OnAppendCookie` that sets `Secure` to true + OnAppendCookieSecureTracking::flowTo(_) +} + +predicate secureFalse(ObjectCreation oc) { + exists(Assignment a | + getAValueForProp(oc, a, "Secure") = a.getRValue() and + a.getRValue().getValue() = "false" + ) +} + +predicate secureFalseOrNotSet(ObjectCreation oc) { + secureFalse(oc) + or + not isPropertySet(oc, "Secure") +} + +predicate insecureCookieOptionsCreation(ObjectCreation oc) { + // `Secure` property in `CookieOptions` passed to IResponseCookies.Append(...) wasn't set + oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and + secureFalseOrNotSet(oc) and + exists(DataFlow::Node creation | + CookieOptionsTracking::flow(creation, _) and + creation.asExpr() = oc + ) +} + +predicate insecureCookieAppend(Expr sink) { + // IResponseCookies.Append(String, String) was called, `Secure` is set to `false` by default + exists(MethodCall mc, MicrosoftAspNetCoreHttpResponseCookies iResponse | + mc = sink and + iResponse.getAppendMethod() = mc.getTarget() and + mc.getNumberOfArguments() < 3 and + mc.getTarget().getParameter(0).getType() instanceof StringType + ) +} + +predicate insecureSystemWebCookieCreation(ObjectCreation oc) { + oc.getType() instanceof SystemWebHttpCookie and + ( + secureFalse(oc) + or + // `Secure` property in `System.Web.HttpCookie` wasn't set, so a default value from config is used + not isPropertySet(oc, "Secure") and + // the default in config is not set to `true` + not exists(XmlElement element | + element instanceof FormsElement and + element.(FormsElement).isRequireSsl() + or + element instanceof HttpCookiesElement and + element.(HttpCookiesElement).isRequireSsl() + ) + ) +} + +predicate insecureCookieCall(Call c) { + not cookieAppendSecureByDefault() and + ( + insecureCookieOptionsCreation(c) + or + insecureCookieAppend(c) + ) + or + insecureSystemWebCookieCreation(c) +} + +predicate insecureSecurePolicyAssignment(Assignment a, Expr val) { + exists(PropertyWrite pw | + ( + pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieBuilder or + pw.getProperty().getDeclaringType() instanceof + MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions + ) and + pw.getProperty().getName() = "SecurePolicy" and + a.getLValue() = pw and + DataFlow::localExprFlow(val, a.getRValue()) and + val.getValue() = "2" // None + ) +} + +from Expr secureSink +where + insecureCookieCall(secureSink) + or + exists(Assignment a | + secureSink = a.getRValue() and + insecureSecurePolicyAssignment(a, _) + ) +select secureSink, "Cookie attribute 'Secure' is not set to true." diff --git a/csharp/ql/src/experimental/Security Features/CWE-614/cookiepolicyoptions.cs b/csharp/ql/src/Security Features/CWE-614/cookiepolicyoptions.cs similarity index 100% rename from csharp/ql/src/experimental/Security Features/CWE-614/cookiepolicyoptions.cs rename to csharp/ql/src/Security Features/CWE-614/cookiepolicyoptions.cs diff --git a/csharp/ql/src/experimental/Security Features/CWE-614/secureflag.cs b/csharp/ql/src/Security Features/CWE-614/secureflag.cs similarity index 100% rename from csharp/ql/src/experimental/Security Features/CWE-614/secureflag.cs rename to csharp/ql/src/Security Features/CWE-614/secureflag.cs diff --git a/csharp/ql/src/experimental/Security Features/CWE-614/secureflagcore.cs b/csharp/ql/src/Security Features/CWE-614/secureflagcore.cs similarity index 100% rename from csharp/ql/src/experimental/Security Features/CWE-614/secureflagcore.cs rename to csharp/ql/src/Security Features/CWE-614/secureflagcore.cs diff --git a/csharp/ql/src/change-notes/released/1.0.11.md b/csharp/ql/src/change-notes/released/1.0.11.md index 9d2720380a06..d5c9f149c41d 100644 --- a/csharp/ql/src/change-notes/released/1.0.11.md +++ b/csharp/ql/src/change-notes/released/1.0.11.md @@ -2,4 +2,4 @@ ### Minor Analysis Improvements -* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. +* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. diff --git a/csharp/ql/src/change-notes/released/1.4.3.md b/csharp/ql/src/change-notes/released/1.4.3.md index 1a022f2462d4..b3427ec89067 100644 --- a/csharp/ql/src/change-notes/released/1.4.3.md +++ b/csharp/ql/src/change-notes/released/1.4.3.md @@ -2,4 +2,4 @@ ### Minor Analysis Improvements -* the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. +* The `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. diff --git a/csharp/ql/src/change-notes/released/1.5.0.md b/csharp/ql/src/change-notes/released/1.5.0.md new file mode 100644 index 000000000000..16106aaca11f --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.5.0.md @@ -0,0 +1,9 @@ +## 1.5.0 + +### New Queries + +* The `cs/web/cookie-secure-not-set` and `cs/web/cookie-httponly-not-set` queries have been promoted from experimental to the main query pack. + +### Minor Analysis Improvements + +* An improvement to the Guards library for recognizing disjunctions means improved precision for `cs/constant-condition`, `cs/inefficient-containskey`, and `cs/dereferenced-value-may-be-null`. The two former can have additional findings, and the latter will have fewer false positives. diff --git a/csharp/ql/src/change-notes/released/1.5.1.md b/csharp/ql/src/change-notes/released/1.5.1.md new file mode 100644 index 000000000000..7b24a64aca3a --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.5.1.md @@ -0,0 +1,3 @@ +## 1.5.1 + +No user-facing changes. diff --git a/csharp/ql/src/change-notes/released/1.5.2.md b/csharp/ql/src/change-notes/released/1.5.2.md new file mode 100644 index 000000000000..384c27833f18 --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.5.2.md @@ -0,0 +1,3 @@ +## 1.5.2 + +No user-facing changes. diff --git a/csharp/ql/src/change-notes/released/1.5.3.md b/csharp/ql/src/change-notes/released/1.5.3.md new file mode 100644 index 000000000000..2e9bcb5e6636 --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.5.3.md @@ -0,0 +1,3 @@ +## 1.5.3 + +No user-facing changes. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 08f88b689fb6..232224b0e267 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.3 +lastReleaseVersion: 1.5.3 diff --git a/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp b/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp deleted file mode 100644 index c7c10a3af9e5..000000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp +++ /dev/null @@ -1,51 +0,0 @@ - - - - -

    -Cookies without HttpOnly flag are accessible to JavaScript running in the same origin. In case of -Cross-Site Scripting (XSS) vulnerability the cookie can be stolen by malicious script. -

    -
    - - -

    -Protect sensitive cookies, such as related to authentication, by setting HttpOnly to true to make -them not accessible to JavaScript. In ASP.NET case it is also possible to set the attribute via <httpCookies> element -of web.config with the attribute httpOnlyCookies="true". -

    -
    - - - -

    -In the example below Microsoft.AspNetCore.Http.CookieOptions.HttpOnly is set to true. -

    - - - -

    -In the following example CookiePolicyOptions are set programmatically to configure defaults. -

    - - - -

    -In the example below System.Web.HttpCookie.HttpOnly is set to true. -

    - - - -
    - - - -
  • CookieOptions.HttpOnly Property,
  • -
  • Set-Cookie Header,
  • -
  • HttpCookie.HttpOnly Property,
  • -
  • httpCookies Element,
  • - -
    -
    diff --git a/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql b/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql deleted file mode 100644 index 359ffbcd2f30..000000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql +++ /dev/null @@ -1,107 +0,0 @@ -/** - * @name 'HttpOnly' attribute is not set to true - * @description Omitting the 'HttpOnly' attribute for security sensitive data allows - * malicious JavaScript to steal it in case of XSS vulnerability. Always set - * 'HttpOnly' to 'true' to authentication related cookie to make it - * not accessible by JavaScript. - * @kind problem - * @problem.severity warning - * @precision high - * @id cs/web/cookie-httponly-not-set - * @tags security - * experimental - * external/cwe/cwe-1004 - */ - -import csharp -import semmle.code.asp.WebConfig -import semmle.code.csharp.frameworks.system.Web -import semmle.code.csharp.frameworks.microsoft.AspNetCore -deprecated import experimental.dataflow.flowsources.AuthCookie - -deprecated query predicate problems(Expr httpOnlySink, string message) { - ( - exists(Assignment a, Expr val | - httpOnlySink = a.getRValue() and - val.getValue() = "false" and - ( - exists(ObjectCreation oc | - getAValueForProp(oc, a, "HttpOnly") = val and - ( - oc.getType() instanceof SystemWebHttpCookie and - isCookieWithSensitiveName(oc.getArgument(0)) - or - exists(MethodCall mc, MicrosoftAspNetCoreHttpResponseCookies iResponse | - oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and - iResponse.getAppendMethod() = mc.getTarget() and - isCookieWithSensitiveName(mc.getArgument(0)) and - // there is no callback `OnAppendCookie` that sets `HttpOnly` to true - not OnAppendCookieHttpOnlyTracking::flowTo(_) and - // Passed as third argument to `IResponseCookies.Append` - exists(DataFlow::Node creation, DataFlow::Node append | - CookieOptionsTracking::flow(creation, append) and - creation.asExpr() = oc and - append.asExpr() = mc.getArgument(2) - ) - ) - ) - ) - or - exists(PropertyWrite pw | - ( - pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieBuilder or - pw.getProperty().getDeclaringType() instanceof - MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions - ) and - pw.getProperty().getName() = "HttpOnly" and - a.getLValue() = pw and - DataFlow::localExprFlow(val, a.getRValue()) - ) - ) - ) - or - exists(Call c | - httpOnlySink = c and - ( - exists(MicrosoftAspNetCoreHttpResponseCookies iResponse, MethodCall mc | - // default is not configured or is not set to `Always` - not getAValueForCookiePolicyProp("HttpOnly").getValue() = "1" and - // there is no callback `OnAppendCookie` that sets `HttpOnly` to true - not OnAppendCookieHttpOnlyTracking::flowTo(_) and - iResponse.getAppendMethod() = mc.getTarget() and - isCookieWithSensitiveName(mc.getArgument(0)) and - ( - // `HttpOnly` property in `CookieOptions` passed to IResponseCookies.Append(...) wasn't set - exists(ObjectCreation oc | - oc = c and - oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and - not isPropertySet(oc, "HttpOnly") and - exists(DataFlow::Node creation | - CookieOptionsTracking::flow(creation, _) and - creation.asExpr() = oc - ) - ) - or - // IResponseCookies.Append(String, String) was called, `HttpOnly` is set to `false` by default - mc = c and - mc.getNumberOfArguments() < 3 - ) - ) - or - exists(ObjectCreation oc | - oc = c and - oc.getType() instanceof SystemWebHttpCookie and - isCookieWithSensitiveName(oc.getArgument(0)) and - // the property wasn't explicitly set, so a default value from config is used - not isPropertySet(oc, "HttpOnly") and - // the default in config is not set to `true` - not exists(XmlElement element | - element instanceof HttpCookiesElement and - element.(HttpCookiesElement).isHttpOnlyCookies() - ) - ) - ) - ) - ) and - message = "Cookie attribute 'HttpOnly' is not set to true." -} diff --git a/csharp/ql/src/experimental/Security Features/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql b/csharp/ql/src/experimental/Security Features/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql index d8bbbce70658..a2983f15d825 100644 --- a/csharp/ql/src/experimental/Security Features/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql +++ b/csharp/ql/src/experimental/Security Features/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql @@ -1,5 +1,5 @@ /** - * @name Unsafe usage of v1 version of Azure Storage client-side encryption (CVE-2022-30187). + * @name Unsafe usage of v1 version of Azure Storage client-side encryption (CVE-2022-30187) * @description Unsafe usage of v1 version of Azure Storage client-side encryption, please refer to http://aka.ms/azstorageclientencryptionblog * @kind problem * @tags security diff --git a/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.qhelp b/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.qhelp deleted file mode 100644 index ddf825aed26e..000000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.qhelp +++ /dev/null @@ -1,55 +0,0 @@ - - - - -

    -Sensitive data that is transmitted using HTTP is vulnerable to being read by a third party. By default, -cookies are sent via HTTP, not HTTPS. -

    -
    - - -

    -In ASP.NET case when using cookies ensure that HTTPS is used by setting the property Microsoft.AspNetCore.Http.CookieOptions.Secure to true. -

    -

    -In ASP.NET Core case when using cookies, ensure that HTTPS is used, either via the <forms> attribute above, or -the <httpCookies> element, with the attribute requireSSL="true". It is also possible to require cookies -to use HTTPS programmatically, by setting the property System.Web.HttpCookie.Secure to true. -

    -
    - - - -

    -In the example below Microsoft.AspNetCore.Http.CookieOptions.Secure is set to true programmatically. -

    - - - -

    -In the following example CookiePolicyOptions are set programmatically to configure defaults. -

    - - - -

    -In the example below System.Web.HttpCookie.Secure is set to true programmatically. -

    - - - -
    - - - -
  • CookieOptions.Secure Property,
  • -
  • Set-Cookie Header,
  • -
  • FormsAuthentication.RequireSSL Property,
  • -
  • forms Element for authentication,
  • -
  • httpCookies Element,
  • - -
    -
    diff --git a/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql b/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql deleted file mode 100644 index d7628f7b2c7b..000000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql +++ /dev/null @@ -1,107 +0,0 @@ -/** - * @name 'Secure' attribute is not set to true - * @description Omitting the 'Secure' attribute allows data to be transmitted insecurely - * using HTTP. Always set 'Secure' to 'true' to ensure that HTTPS - * is used at all times. - * @kind problem - * @problem.severity error - * @precision high - * @id cs/web/cookie-secure-not-set - * @tags security - * experimental - * external/cwe/cwe-319 - * external/cwe/cwe-614 - */ - -import csharp -import semmle.code.asp.WebConfig -import semmle.code.csharp.frameworks.system.Web -import semmle.code.csharp.frameworks.microsoft.AspNetCore -deprecated import experimental.dataflow.flowsources.AuthCookie - -deprecated query predicate problems(Expr secureSink, string message) { - ( - exists(Call c | - secureSink = c and - ( - // default is not configured or is not set to `Always` or `SameAsRequest` - not ( - getAValueForCookiePolicyProp("Secure").getValue() = "0" or - getAValueForCookiePolicyProp("Secure").getValue() = "1" - ) and - // there is no callback `OnAppendCookie` that sets `Secure` to true - not OnAppendCookieSecureTracking::flowTo(_) and - ( - // `Secure` property in `CookieOptions` passed to IResponseCookies.Append(...) wasn't set - exists(ObjectCreation oc | - oc = c and - oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and - not isPropertySet(oc, "Secure") and - exists(DataFlow::Node creation | - CookieOptionsTracking::flow(creation, _) and - creation.asExpr() = oc - ) - ) - or - // IResponseCookies.Append(String, String) was called, `Secure` is set to `false` by default - exists(MethodCall mc, MicrosoftAspNetCoreHttpResponseCookies iResponse | - mc = c and - iResponse.getAppendMethod() = mc.getTarget() and - mc.getNumberOfArguments() < 3 - ) - ) - or - exists(ObjectCreation oc | - oc = c and - oc.getType() instanceof SystemWebHttpCookie and - // the property wasn't explicitly set, so a default value from config is used - not isPropertySet(oc, "Secure") and - // the default in config is not set to `true` - // the `exists` below covers the `cs/web/requiressl-not-set` - not exists(XmlElement element | - element instanceof FormsElement and - element.(FormsElement).isRequireSsl() - or - element instanceof HttpCookiesElement and - element.(HttpCookiesElement).isRequireSsl() - ) - ) - ) - ) - or - exists(Assignment a, Expr val | - secureSink = a.getRValue() and - ( - exists(ObjectCreation oc | - getAValueForProp(oc, a, "Secure") = val and - val.getValue() = "false" and - ( - oc.getType() instanceof SystemWebHttpCookie - or - oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and - // there is no callback `OnAppendCookie` that sets `Secure` to true - not OnAppendCookieSecureTracking::flowTo(_) and - // the cookie option is passed to `Append` - exists(DataFlow::Node creation | - CookieOptionsTracking::flow(creation, _) and - creation.asExpr() = oc - ) - ) - ) - or - exists(PropertyWrite pw | - ( - pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieBuilder or - pw.getProperty().getDeclaringType() instanceof - MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions - ) and - pw.getProperty().getName() = "SecurePolicy" and - a.getLValue() = pw and - DataFlow::localExprFlow(val, a.getRValue()) and - val.getValue() = "2" // None - ) - ) - ) - ) and - message = "Cookie attribute 'Secure' is not set to true." -} diff --git a/csharp/ql/src/experimental/Security Features/CWE-614/Web.config b/csharp/ql/src/experimental/Security Features/CWE-614/Web.config deleted file mode 100644 index 89d4561cd625..000000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-614/Web.config +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 4305c1d899ef..27c4315f63ab 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.4.3 +version: 1.5.3 groups: - csharp - queries diff --git a/csharp/ql/src/utils/modelconverter/ExtractNeutrals.ql b/csharp/ql/src/utils/modelconverter/ExtractNeutrals.ql index 830365e161d1..b9d748fdf773 100644 --- a/csharp/ql/src/utils/modelconverter/ExtractNeutrals.ql +++ b/csharp/ql/src/utils/modelconverter/ExtractNeutrals.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD neutral model rows. + * @name Extract MaD neutral model rows * @description This extracts the Models as data neutral model rows. * @id cs/utils/modelconverter/generate-data-extensions-neutral */ diff --git a/csharp/ql/src/utils/modelconverter/ExtractSinks.ql b/csharp/ql/src/utils/modelconverter/ExtractSinks.ql index aef2e8fa10ef..d442e42b4b60 100644 --- a/csharp/ql/src/utils/modelconverter/ExtractSinks.ql +++ b/csharp/ql/src/utils/modelconverter/ExtractSinks.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD sink model rows. + * @name Extract MaD sink model rows * @description This extracts the Models as data sink model rows. * @id cs/utils/modelconverter/generate-data-extensions-sink */ diff --git a/csharp/ql/src/utils/modelconverter/ExtractSources.ql b/csharp/ql/src/utils/modelconverter/ExtractSources.ql index d940178ca05d..d28993462867 100644 --- a/csharp/ql/src/utils/modelconverter/ExtractSources.ql +++ b/csharp/ql/src/utils/modelconverter/ExtractSources.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD source model rows. + * @name Extract MaD source model rows * @description This extracts the Models as data source model rows. * @id cs/utils/modelconverter/generate-data-extensions-source */ diff --git a/csharp/ql/src/utils/modelconverter/ExtractSummaries.ql b/csharp/ql/src/utils/modelconverter/ExtractSummaries.ql index c6c5a257f749..e5ca42a97b5a 100644 --- a/csharp/ql/src/utils/modelconverter/ExtractSummaries.ql +++ b/csharp/ql/src/utils/modelconverter/ExtractSummaries.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD summary model rows. + * @name Extract MaD summary model rows * @description This extracts the Models as data summary model rows. * @id cs/utils/modelconverter/generate-data-extensions-summary */ diff --git a/csharp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql b/csharp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql index 6030960a1a78..59d917ebbdcb 100644 --- a/csharp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql +++ b/csharp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture content based summary models. + * @name Capture content based summary models * @description Finds applicable content based summary models to be used by other queries. * @kind diagnostic * @id cs/utils/modelgenerator/contentbased-summary-models diff --git a/csharp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql b/csharp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql index c74240bedea5..04f58e1b45e7 100644 --- a/csharp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql +++ b/csharp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture neutral models. + * @name Capture neutral models * @description Finds neutral models to be used by other queries. * @kind diagnostic * @id cs/utils/modelgenerator/neutral-models diff --git a/csharp/ql/src/utils/modelgenerator/CaptureSinkModels.ql b/csharp/ql/src/utils/modelgenerator/CaptureSinkModels.ql index f0d3294cd8ac..be69194d9c20 100644 --- a/csharp/ql/src/utils/modelgenerator/CaptureSinkModels.ql +++ b/csharp/ql/src/utils/modelgenerator/CaptureSinkModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture sink models. + * @name Capture sink models * @description Finds public methods that act as sinks as they flow into a known sink. * @kind diagnostic * @id cs/utils/modelgenerator/sink-models diff --git a/csharp/ql/src/utils/modelgenerator/CaptureSourceModels.ql b/csharp/ql/src/utils/modelgenerator/CaptureSourceModels.ql index 97688d6eb423..78268446c5e4 100644 --- a/csharp/ql/src/utils/modelgenerator/CaptureSourceModels.ql +++ b/csharp/ql/src/utils/modelgenerator/CaptureSourceModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture source models. + * @name Capture source models * @description Finds APIs that act as sources as they expose already known sources. * @kind diagnostic * @id cs/utils/modelgenerator/source-models diff --git a/csharp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql b/csharp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql index 61656c200adf..456cc0208700 100644 --- a/csharp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql +++ b/csharp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture summary models. + * @name Capture summary models * @description Finds applicable summary models to be used by other queries. * @kind diagnostic * @id cs/utils/modelgenerator/summary-models diff --git a/csharp/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql b/csharp/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql index 19bec058d403..bd7b923a14bf 100644 --- a/csharp/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql +++ b/csharp/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture typed based summary models. + * @name Capture typed based summary models * @description Finds applicable summary models to be used by other queries. * @kind diagnostic * @id cs/utils/modelgenerator/summary-models-typed-based diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/HttpOnly.qlref deleted file mode 100644 index 91ce226003c3..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/HttpOnly.expected deleted file mode 100644 index 968e28976a8a..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/HttpOnly.expected +++ /dev/null @@ -1,4 +0,0 @@ -| Program.cs:25:34:25:38 | false | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:38:88:38:92 | false | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:61:34:61:34 | access to local variable v | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:68:88:68:88 | access to local variable v | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/HttpOnly.qlref deleted file mode 100644 index 91ce226003c3..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/HttpOnly.qlref deleted file mode 100644 index 91ce226003c3..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/options b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/options deleted file mode 100644 index ce3f295ed117..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/HttpOnly.expected deleted file mode 100644 index 288445958592..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/HttpOnly.expected +++ /dev/null @@ -1,4 +0,0 @@ -| Program.cs:23:27:23:31 | false | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:28:74:28:78 | false | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:48:27:48:27 | access to local variable v | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:54:74:54:74 | access to local variable v | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/HttpOnly.qlref deleted file mode 100644 index 91ce226003c3..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/options b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/options deleted file mode 100644 index 9290f65d5b22..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/HttpOnly.expected deleted file mode 100644 index aac509883026..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/HttpOnly.expected +++ /dev/null @@ -1,2 +0,0 @@ -| Program.cs:5:9:5:49 | call to method Append | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:15:29:15:73 | object creation of type CookieOptions | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/HttpOnly.qlref deleted file mode 100644 index 91ce226003c3..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/Program.cs deleted file mode 100644 index 945c5be55dbc..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/Program.cs +++ /dev/null @@ -1,52 +0,0 @@ -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDefault() - { - Response.Cookies.Append("auth", "secret"); // BAD: HttpOnly is set to false by default - } - - public void CookieDefaultForgery() - { - Response.Cookies.Append("antiforgerytoken", "secret"); // GOOD: not an auth cookie - } - - public void CookieDefault2() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Append("auth", "secret", cookieOptions); // BAD: HttpOnly is set to false by default - } - - public void CookieDelete() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Delete("auth", cookieOptions); // GOOD: Delete call - } - - void CookieDirectTrue() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - cookieOptions.HttpOnly = true; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = true }; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD - } - - void CookieIntermediateTrue() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - bool v = true; - cookieOptions.HttpOnly = v; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = v }; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/HttpOnly.qlref deleted file mode 100644 index 91ce226003c3..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/HttpOnly.qlref deleted file mode 100644 index 91ce226003c3..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/Program.cs deleted file mode 100644 index 417b1f77277c..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/Program.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.AspNetCore.Http; - -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDefault() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: HttpOnly is set in callback - } -} - -public class Startup -{ - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseCookiePolicy(); - } - - public void ConfigureServices(IServiceCollection services) - { - services.Configure(options => - { - options.OnAppendCookie = cookieContext => SetCookies(cookieContext.CookieOptions); - }); - } - - private void SetCookies(CookieOptions options) - { - options.Secure = true; - options.HttpOnly = true; - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/HttpOnly.qlref deleted file mode 100644 index 91ce226003c3..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/options b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/options deleted file mode 100644 index ce3f295ed117..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/HttpOnly.expected deleted file mode 100644 index 85b07c94e9e2..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/HttpOnly.expected +++ /dev/null @@ -1 +0,0 @@ -| Program.cs:5:22:5:59 | object creation of type HttpCookie | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/HttpOnly.qlref deleted file mode 100644 index 91ce226003c3..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/Program.cs deleted file mode 100644 index bc66b526fa51..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/Program.cs +++ /dev/null @@ -1,36 +0,0 @@ -class Program -{ - void CookieDefault() - { - var cookie = new System.Web.HttpCookie("sessionID"); // BAD: httpOnlyCookies is set to false by default - } - - void CookieDefaultForgery() - { - var cookie = new System.Web.HttpCookie("anticsrftoken"); // GOOD: not an auth cookie - } - - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("sessionID"); - cookie.HttpOnly = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = true }; // GOOD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("sessionID"); - bool v = true; - cookie.HttpOnly = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = v }; // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/options b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/options deleted file mode 100644 index 9d05f9bf06d4..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/HttpOnly.expected deleted file mode 100644 index 85b07c94e9e2..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/HttpOnly.expected +++ /dev/null @@ -1 +0,0 @@ -| Program.cs:5:22:5:59 | object creation of type HttpCookie | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/HttpOnly.qlref deleted file mode 100644 index 91ce226003c3..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/Program.cs deleted file mode 100644 index 52ef13373f72..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/Program.cs +++ /dev/null @@ -1,36 +0,0 @@ -class Program -{ - void CookieDefault() - { - var cookie = new System.Web.HttpCookie("sessionID"); // BAD: httpOnlyCookies is set to false in config - } - - void CookieDefaultForgery() - { - var cookie = new System.Web.HttpCookie("anticsrftoken"); // GOOD: not an auth cookie - } - - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("sessionID"); - cookie.HttpOnly = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = true }; // GOOD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("sessionID"); - bool v = true; - cookie.HttpOnly = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = v }; // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/Web.config b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/Web.config deleted file mode 100644 index d6202a55188c..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/Web.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/options b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/options deleted file mode 100644 index 9d05f9bf06d4..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/HttpOnly.qlref deleted file mode 100644 index 91ce226003c3..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/Program.cs deleted file mode 100644 index 6eeb4f6d3343..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/Program.cs +++ /dev/null @@ -1,36 +0,0 @@ -class Program -{ - void CookieDefault() - { - var cookie = new System.Web.HttpCookie("sessionID"); // GOOD: httpOnlyCookies is set to true in config - } - - void CookieDefaultForgery() - { - var cookie = new System.Web.HttpCookie("anticsrftoken"); // GOOD: not an auth cookie - } - - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("sessionID"); - cookie.HttpOnly = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = true }; // GOOD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("sessionID"); - bool v = true; - cookie.HttpOnly = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = v }; // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/options b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/options deleted file mode 100644 index 9d05f9bf06d4..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/Program.cs deleted file mode 100644 index 9c21416940b2..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/Program.cs +++ /dev/null @@ -1,47 +0,0 @@ -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDefault() - { - Response.Cookies.Append("name", "value"); // BAD: requireSSL is set to false by default - } - - public void CookieDefault2() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Append("name", "value", cookieOptions); // BAD: requireSSL is set to false by default - } - - public void CookieDelete() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Delete("name", cookieOptions); // GOOD: Delete call - } - - void CookieDirectTrue() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - cookieOptions.Secure = true; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = true }; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD - } - - void CookieIntermediateTrue() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - bool v = true; - cookieOptions.Secure = v; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = v }; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/RequireSSL.expected deleted file mode 100644 index f96df31ad21a..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/RequireSSL.expected +++ /dev/null @@ -1,2 +0,0 @@ -| Program.cs:5:9:5:48 | call to method Append | Cookie attribute 'Secure' is not set to true. | -| Program.cs:10:29:10:73 | object creation of type CookieOptions | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/RequireSSL.qlref deleted file mode 100644 index f76146a862b9..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/RequireSSL.qlref deleted file mode 100644 index f76146a862b9..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/RequireSSL.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/RequireSSL.qlref deleted file mode 100644 index f76146a862b9..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/RequireSSL.qlref deleted file mode 100644 index f76146a862b9..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/options b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/options deleted file mode 100644 index ce3f295ed117..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/RequireSSL.qlref deleted file mode 100644 index f76146a862b9..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/RequireSSL.expected deleted file mode 100644 index 7b7bc3439420..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/RequireSSL.expected +++ /dev/null @@ -1,4 +0,0 @@ -| Program.cs:25:32:25:36 | false | Cookie attribute 'Secure' is not set to true. | -| Program.cs:31:86:31:90 | false | Cookie attribute 'Secure' is not set to true. | -| Program.cs:54:32:54:32 | access to local variable v | Cookie attribute 'Secure' is not set to true. | -| Program.cs:61:86:61:86 | access to local variable v | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/RequireSSL.qlref deleted file mode 100644 index f76146a862b9..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/Program.cs deleted file mode 100644 index 542b1a298fa7..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/Program.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.AspNetCore.Http; - -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDefault() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - cookieOptions.Secure = false; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: Secure is set in callback - } -} - -public class Startup -{ - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseCookiePolicy(); - } - - public void ConfigureServices(IServiceCollection services) - { - services.Configure(options => - { - options.OnAppendCookie = cookieContext => SetCookies(cookieContext.CookieOptions); - }); - } - - private void SetCookies(CookieOptions options) - { - options.Secure = true; - options.HttpOnly = true; - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/RequireSSL.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/RequireSSL.qlref deleted file mode 100644 index f76146a862b9..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/options b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/options deleted file mode 100644 index ce3f295ed117..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/RequireSSL.expected deleted file mode 100644 index fb6b5e842e29..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/RequireSSL.expected +++ /dev/null @@ -1,4 +0,0 @@ -| Program.cs:17:25:17:29 | false | Cookie attribute 'Secure' is not set to true. | -| Program.cs:22:73:22:77 | false | Cookie attribute 'Secure' is not set to true. | -| Program.cs:42:25:42:25 | access to local variable v | Cookie attribute 'Secure' is not set to true. | -| Program.cs:48:73:48:73 | access to local variable v | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/RequireSSL.qlref deleted file mode 100644 index f76146a862b9..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/options b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/options deleted file mode 100644 index 9290f65d5b22..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/Program.cs deleted file mode 100644 index 4011a7d1a63d..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/Program.cs +++ /dev/null @@ -1,31 +0,0 @@ -class Program -{ - void CookieDefault() - { - var cookie = new System.Web.HttpCookie("cookieName"); // BAD: requireSSL is set to false by default - } - - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - cookie.Secure = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("cookieName") { Secure = true }; // GOOD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - bool v = true; - cookie.Secure = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("cookieName") { Secure = v }; // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/RequireSSL.expected deleted file mode 100644 index 6c224aab89dc..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/RequireSSL.expected +++ /dev/null @@ -1 +0,0 @@ -| Program.cs:5:22:5:60 | object creation of type HttpCookie | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/RequireSSL.qlref deleted file mode 100644 index f76146a862b9..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/options b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/options deleted file mode 100644 index 9d05f9bf06d4..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/Program.cs deleted file mode 100644 index 392366a72d27..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/Program.cs +++ /dev/null @@ -1,31 +0,0 @@ -class Program -{ - void CookieDefault() - { - var cookie = new System.Web.HttpCookie("cookieName"); // BAD: requireSSL is set to false in config - } - - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - cookie.Secure = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("cookieName") { Secure = true }; // GOOD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - bool v = true; - cookie.Secure = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("cookieName") { Secure = v }; // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/RequireSSL.expected deleted file mode 100644 index 6c224aab89dc..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/RequireSSL.expected +++ /dev/null @@ -1 +0,0 @@ -| Program.cs:5:22:5:60 | object creation of type HttpCookie | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/RequireSSL.qlref deleted file mode 100644 index f76146a862b9..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/options b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/options deleted file mode 100644 index 9d05f9bf06d4..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Program.cs deleted file mode 100644 index be53a64ae6ed..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Program.cs +++ /dev/null @@ -1,31 +0,0 @@ -class Program -{ - void CookieDefault() - { - var cookie = new System.Web.HttpCookie("cookieName"); // GOOD: requireSSL is set to true in config - } - - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - cookie.Secure = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("cookieName") { Secure = true }; // GOOD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - bool v = true; - cookie.Secure = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("cookieName") { Secure = v }; // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/RequireSSL.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/RequireSSL.qlref deleted file mode 100644 index f76146a862b9..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/options b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/options deleted file mode 100644 index 9d05f9bf06d4..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/Program.cs deleted file mode 100644 index be53a64ae6ed..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/Program.cs +++ /dev/null @@ -1,31 +0,0 @@ -class Program -{ - void CookieDefault() - { - var cookie = new System.Web.HttpCookie("cookieName"); // GOOD: requireSSL is set to true in config - } - - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - cookie.Secure = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("cookieName") { Secure = true }; // GOOD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - bool v = true; - cookie.Secure = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("cookieName") { Secure = v }; // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/RequireSSL.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/RequireSSL.qlref deleted file mode 100644 index f76146a862b9..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/options b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/options deleted file mode 100644 index 9d05f9bf06d4..000000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected index 649e83623705..ac260924d10a 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected @@ -27,8 +27,12 @@ | Guards.cs:36:32:36:32 | access to parameter x | Guards.cs:35:13:35:21 | ... == ... | Guards.cs:35:13:35:13 | access to parameter x | false | | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:34 | ... == ... | Guards.cs:35:26:35:26 | access to parameter y | false | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | false | +| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | true | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | false | +| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | true | +| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | false | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | true | +| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | false | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | true | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:25 | ... != ... | Guards.cs:47:13:47:17 | access to field Field | true | | Guards.cs:55:27:55:27 | access to parameter g | Guards.cs:53:13:53:27 | ... == ... | Guards.cs:53:13:53:13 | access to parameter g | false | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected index b34cae88b800..d322431b1df8 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected @@ -64,12 +64,20 @@ | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | not null | | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:34 | ... == ... | Guards.cs:35:26:35:26 | access to parameter y | false | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | not null | +| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | null | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | false | +| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | true | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | not null | +| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | null | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | false | +| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | true | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | not null | +| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | null | +| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | false | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | true | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | not null | +| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | null | +| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | false | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | true | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | not null | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:25 | ... != ... | Guards.cs:47:13:47:17 | access to field Field | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected index b34cae88b800..d322431b1df8 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected @@ -64,12 +64,20 @@ | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | not null | | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:34 | ... == ... | Guards.cs:35:26:35:26 | access to parameter y | false | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | not null | +| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | null | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | false | +| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | true | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | not null | +| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | null | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | false | +| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | true | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | not null | +| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | null | +| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | false | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | true | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | not null | +| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | null | +| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | false | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | true | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | not null | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:25 | ... != ... | Guards.cs:47:13:47:17 | access to field Field | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/Guards.cs b/csharp/ql/test/library-tests/controlflow/guards/Guards.cs index 045967d6134f..8c4abb815e8b 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/Guards.cs +++ b/csharp/ql/test/library-tests/controlflow/guards/Guards.cs @@ -35,10 +35,10 @@ void M3(string? x, string? y) if (x == null || y == null) { } else Console.WriteLine(x + y); // null guarded - if (!(x == null || y == null)) + if (!(x == null || y == null)) // MISHANDLED, likely due to splitting Console.WriteLine(x + y); // null guarded - if (!!!(x != null && y != null)) { } + if (!!!(x != null && y != null)) { } // MISHANDLED, likely due to splitting else Console.WriteLine(x + y); // null guarded if (Field != null) diff --git a/csharp/ql/test/library-tests/csharp11/PrintAst.expected b/csharp/ql/test/library-tests/csharp11/PrintAst.expected index 3a3f44974231..1de7ff429284 100644 --- a/csharp/ql/test/library-tests/csharp11/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp11/PrintAst.expected @@ -1234,9 +1234,9 @@ StaticInterfaceMembers.cs: # 49| 1: [PropertyCall] access to property Real # 49| -1: [ParameterAccess] access to parameter n # 51| 14: [Method] Inc -# 51| -1: [TypeMention] Complex # 51| -1: [TypeMention] INumber # 51| 1: [TypeMention] Complex +# 51| -1: [TypeMention] Complex #-----| 2: (Parameters) # 51| 0: [Parameter] other # 51| -1: [TypeMention] Complex @@ -1254,9 +1254,9 @@ StaticInterfaceMembers.cs: # 52| 1: [PropertyCall] access to property Imaginary # 52| -1: [ParameterAccess] access to parameter other # 54| 15: [Method] Dec -# 54| -1: [TypeMention] Complex # 54| -1: [TypeMention] INumber # 54| 1: [TypeMention] Complex +# 54| -1: [TypeMention] Complex #-----| 2: (Parameters) # 54| 0: [Parameter] other # 54| -1: [TypeMention] Complex diff --git a/csharp/ql/test/library-tests/definitions/PrintAst.expected b/csharp/ql/test/library-tests/definitions/PrintAst.expected index 1ad3ad1a61d4..9b5606d30f59 100644 --- a/csharp/ql/test/library-tests/definitions/PrintAst.expected +++ b/csharp/ql/test/library-tests/definitions/PrintAst.expected @@ -272,8 +272,8 @@ definitions.cs: # 125| 0: [MethodCall] call to method M # 125| -1: [BaseAccess] base access # 128| 6: [Method] M2`1 -# 128| -1: [TypeMention] Void # 128| -1: [TypeMention] I1 +# 128| -1: [TypeMention] Void #-----| 1: (Type parameters) # 128| 0: [TypeParameter] T # 128| 4: [BlockStmt] {...} @@ -356,8 +356,8 @@ definitions.cs: # 153| 0: [Parameter] value # 153| 4: [BlockStmt] {...} # 154| 6: [Method] M -# 154| -1: [TypeMention] A # 154| -1: [TypeMention] I4 +# 154| -1: [TypeMention] A # 154| 4: [ThrowExpr] throw ... # 154| 0: [ObjectCreation] object creation of type Exception # 154| 0: [TypeMention] Exception diff --git a/csharp/ql/test/library-tests/methods/Methods5.ql b/csharp/ql/test/library-tests/methods/Methods5.ql index b7c74d24d133..eb2980a17daa 100644 --- a/csharp/ql/test/library-tests/methods/Methods5.ql +++ b/csharp/ql/test/library-tests/methods/Methods5.ql @@ -1,5 +1,5 @@ /** - * @name Tests call graph. + * @name Tests call graph */ import csharp diff --git a/csharp/ql/test/library-tests/overlay/base/A.cs b/csharp/ql/test/library-tests/overlay/base/A.cs new file mode 100644 index 000000000000..263824a575c3 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/base/A.cs @@ -0,0 +1,66 @@ +using System; + +namespace ConsoleApp1 +{ + public class A + { + private string name; + public A(string x) + { + name = x; + } + + // Destructor + ~A() + { + Console.WriteLine("Destructor called!"); + } + + public string Prop { get; set; } = "Hello"; + + public object this[int i] + { + get { return new object(); } + set { } + } + + /* + * An example event + */ + public event EventHandler Clicked + { + add + { + Console.WriteLine("Handler added"); + } + remove + { + Console.WriteLine("Handler removed"); + } + } + + public static A operator +(A a, A b) + { + return a; + } + + [MyObsolete] + public void ObsoleteMethod() { } + + public int OldMethod(int x) + { + var y = x + 1; + return y; + } + + public override string ToString() + { + var x = $"A: {name}"; + return x; + } + } + + public class MyObsoleteAttribute : Attribute { } + + public class B { } +} diff --git a/csharp/ql/test/library-tests/overlay/base/Program.cs b/csharp/ql/test/library-tests/overlay/base/Program.cs new file mode 100644 index 000000000000..bc57d682a268 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/base/Program.cs @@ -0,0 +1,65 @@ +using System; + +namespace ConsoleApp1 +{ + internal class Program + { + public static void Main(string[] args) + { + if (args.Length == 0) + { + Console.WriteLine("Print usage instructions here."); + return; + } + var x = args[0]; + var a = new A(x); + Console.WriteLine(a.ToString()); + } + + private string programName; + + public Program(string x) + { + programName = x; + } + + // Program destructor + ~Program() + { + Console.WriteLine("Program destructor called!"); + } + + public string ProgramProp { get; set; } = "Hello World!"; + + public string this[int i] + { + get { return string.Empty; } + set { } + } + + /* + * A program event. + */ + public event EventHandler ProgramClicked + { + add + { + Console.WriteLine("Program handler added"); + } + remove + { + Console.WriteLine("Program handler removed"); + } + } + + public static Program operator -(Program a, Program b) + { + return b; + } + + [Program] + public void AnnotatedMethod() { } + } + + public class ProgramAttribute : Attribute { } +} diff --git a/csharp/ql/test/library-tests/overlay/base/options b/csharp/ql/test/library-tests/overlay/base/options new file mode 100644 index 000000000000..7ba3811b2afb --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/base/options @@ -0,0 +1 @@ +semmle-extractor-options: --standalone diff --git a/csharp/ql/test/library-tests/overlay/base/test.expected b/csharp/ql/test/library-tests/overlay/base/test.expected new file mode 100644 index 000000000000..0c2b5750f2cb --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/base/test.expected @@ -0,0 +1,276 @@ +expressions +| A.cs:8:16:8:16 | call to constructor Object | +| A.cs:10:13:10:16 | access to field name | +| A.cs:10:13:10:16 | this access | +| A.cs:10:13:10:20 | ... = ... | +| A.cs:10:20:10:20 | access to parameter x | +| A.cs:16:13:16:19 | access to type Console | +| A.cs:16:13:16:51 | call to method WriteLine | +| A.cs:16:31:16:50 | "Destructor called!" | +| A.cs:19:23:19:26 | access to property Prop | +| A.cs:19:23:19:26 | this access | +| A.cs:19:42:19:50 | ... = ... | +| A.cs:19:44:19:50 | "Hello" | +| A.cs:23:26:23:37 | object creation of type Object | +| A.cs:34:17:34:23 | access to type Console | +| A.cs:34:17:34:50 | call to method WriteLine | +| A.cs:34:35:34:49 | "Handler added" | +| A.cs:38:17:38:23 | access to type Console | +| A.cs:38:17:38:52 | call to method WriteLine | +| A.cs:38:35:38:51 | "Handler removed" | +| A.cs:44:20:44:20 | access to parameter a | +| A.cs:52:17:52:17 | access to local variable y | +| A.cs:52:17:52:25 | Int32 y = ... | +| A.cs:52:21:52:21 | access to parameter x | +| A.cs:52:21:52:25 | ... + ... | +| A.cs:52:25:52:25 | 1 | +| A.cs:53:20:53:20 | access to local variable y | +| A.cs:58:17:58:17 | access to local variable x | +| A.cs:58:17:58:32 | String x = ... | +| A.cs:58:21:58:32 | $"..." | +| A.cs:58:23:58:25 | "A: " | +| A.cs:58:26:58:31 | {...} | +| A.cs:58:27:58:30 | access to field name | +| A.cs:58:27:58:30 | this access | +| A.cs:59:20:59:20 | access to local variable x | +| A.cs:63:18:63:36 | call to constructor Attribute | +| A.cs:65:18:65:18 | call to constructor Object | +| Program.cs:9:17:9:20 | access to parameter args | +| Program.cs:9:17:9:27 | access to property Length | +| Program.cs:9:17:9:32 | ... == ... | +| Program.cs:9:32:9:32 | 0 | +| Program.cs:11:17:11:23 | access to type Console | +| Program.cs:11:17:11:67 | call to method WriteLine | +| Program.cs:11:35:11:66 | "Print usage instructions here." | +| Program.cs:14:17:14:17 | access to local variable x | +| Program.cs:14:17:14:27 | String x = ... | +| Program.cs:14:21:14:24 | access to parameter args | +| Program.cs:14:21:14:27 | access to array element | +| Program.cs:14:26:14:26 | 0 | +| Program.cs:15:17:15:17 | access to local variable a | +| Program.cs:15:17:15:28 | A a = ... | +| Program.cs:15:21:15:28 | object creation of type A | +| Program.cs:15:27:15:27 | access to local variable x | +| Program.cs:16:13:16:19 | access to type Console | +| Program.cs:16:13:16:43 | call to method WriteLine | +| Program.cs:16:31:16:31 | access to local variable a | +| Program.cs:16:31:16:42 | call to method ToString | +| Program.cs:21:16:21:22 | call to constructor Object | +| Program.cs:23:13:23:23 | access to field programName | +| Program.cs:23:13:23:23 | this access | +| Program.cs:23:13:23:27 | ... = ... | +| Program.cs:23:27:23:27 | access to parameter x | +| Program.cs:29:13:29:19 | access to type Console | +| Program.cs:29:13:29:59 | call to method WriteLine | +| Program.cs:29:31:29:58 | "Program destructor called!" | +| Program.cs:32:23:32:33 | access to property ProgramProp | +| Program.cs:32:23:32:33 | this access | +| Program.cs:32:49:32:64 | ... = ... | +| Program.cs:32:51:32:64 | "Hello World!" | +| Program.cs:36:26:36:31 | access to type String | +| Program.cs:36:26:36:37 | access to field Empty | +| Program.cs:47:17:47:23 | access to type Console | +| Program.cs:47:17:47:58 | call to method WriteLine | +| Program.cs:47:35:47:57 | "Program handler added" | +| Program.cs:51:17:51:23 | access to type Console | +| Program.cs:51:17:51:60 | call to method WriteLine | +| Program.cs:51:35:51:59 | "Program handler removed" | +| Program.cs:57:20:57:20 | access to parameter b | +| Program.cs:64:18:64:33 | call to constructor Attribute | +statements +| A.cs:9:9:11:9 | {...} | +| A.cs:10:13:10:21 | ...; | +| A.cs:15:9:17:9 | {...} | +| A.cs:16:13:16:52 | ...; | +| A.cs:23:17:23:40 | {...} | +| A.cs:23:19:23:38 | return ...; | +| A.cs:24:17:24:19 | {...} | +| A.cs:33:13:35:13 | {...} | +| A.cs:34:17:34:51 | ...; | +| A.cs:37:13:39:13 | {...} | +| A.cs:38:17:38:53 | ...; | +| A.cs:43:9:45:9 | {...} | +| A.cs:44:13:44:21 | return ...; | +| A.cs:48:38:48:40 | {...} | +| A.cs:51:9:54:9 | {...} | +| A.cs:52:13:52:26 | ... ...; | +| A.cs:53:13:53:21 | return ...; | +| A.cs:57:9:60:9 | {...} | +| A.cs:58:13:58:33 | ... ...; | +| A.cs:59:13:59:21 | return ...; | +| A.cs:63:18:63:36 | {...} | +| A.cs:65:18:65:18 | {...} | +| Program.cs:8:9:17:9 | {...} | +| Program.cs:9:13:13:13 | if (...) ... | +| Program.cs:10:13:13:13 | {...} | +| Program.cs:11:17:11:68 | ...; | +| Program.cs:12:17:12:23 | return ...; | +| Program.cs:14:13:14:28 | ... ...; | +| Program.cs:15:13:15:29 | ... ...; | +| Program.cs:16:13:16:44 | ...; | +| Program.cs:22:9:24:9 | {...} | +| Program.cs:23:13:23:28 | ...; | +| Program.cs:28:9:30:9 | {...} | +| Program.cs:29:13:29:60 | ...; | +| Program.cs:36:17:36:40 | {...} | +| Program.cs:36:19:36:38 | return ...; | +| Program.cs:37:17:37:19 | {...} | +| Program.cs:46:13:48:13 | {...} | +| Program.cs:47:17:47:59 | ...; | +| Program.cs:50:13:52:13 | {...} | +| Program.cs:51:17:51:61 | ...; | +| Program.cs:56:9:58:9 | {...} | +| Program.cs:57:13:57:21 | return ...; | +| Program.cs:61:39:61:41 | {...} | +| Program.cs:64:18:64:33 | {...} | +methods +| A.cs:48:21:48:34 | ObsoleteMethod | +| A.cs:50:20:50:28 | OldMethod | +| A.cs:56:32:56:39 | ToString | +| Program.cs:7:28:7:31 | Main | +| Program.cs:61:21:61:35 | AnnotatedMethod | +types +| A.cs:5:18:5:18 | A | +| A.cs:63:18:63:36 | MyObsoleteAttribute | +| A.cs:65:18:65:18 | B | +| Program.cs:5:20:5:26 | Program | +| Program.cs:64:18:64:33 | ProgramAttribute | +parameters +| A.cs:8:25:8:25 | x | +| A.cs:19:35:19:37 | value | +| A.cs:21:32:21:32 | i | +| A.cs:21:32:21:32 | i | +| A.cs:21:32:21:32 | i | +| A.cs:24:13:24:15 | value | +| A.cs:32:13:32:15 | value | +| A.cs:36:13:36:18 | value | +| A.cs:42:38:42:38 | a | +| A.cs:42:43:42:43 | b | +| A.cs:50:34:50:34 | x | +| Program.cs:7:42:7:45 | args | +| Program.cs:21:31:21:31 | x | +| Program.cs:32:42:32:44 | value | +| Program.cs:34:32:34:32 | i | +| Program.cs:34:32:34:32 | i | +| Program.cs:34:32:34:32 | i | +| Program.cs:37:13:37:15 | value | +| Program.cs:45:13:45:15 | value | +| Program.cs:49:13:49:18 | value | +| Program.cs:55:50:55:50 | a | +| Program.cs:55:61:55:61 | b | +operators +| A.cs:42:34:42:34 | + | +| Program.cs:55:40:55:40 | - | +constructors +| A.cs:8:16:8:16 | A | +| Program.cs:21:16:21:22 | Program | +destructors +| A.cs:14:10:14:10 | ~A | +| Program.cs:27:10:27:16 | ~Program | +fields +| A.cs:7:24:7:27 | name | +| Program.cs:19:24:19:34 | programName | +properties +| A.cs:19:23:19:26 | Prop | +| Program.cs:32:23:32:33 | ProgramProp | +indexers +| A.cs:21:23:21:26 | Item | +| Program.cs:34:23:34:26 | Item | +accessors +| A.cs:19:30:19:32 | get_Prop | +| A.cs:19:35:19:37 | set_Prop | +| A.cs:23:13:23:15 | get_Item | +| A.cs:24:13:24:15 | set_Item | +| A.cs:32:13:32:15 | add_Clicked | +| A.cs:36:13:36:18 | remove_Clicked | +| Program.cs:32:37:32:39 | get_ProgramProp | +| Program.cs:32:42:32:44 | set_ProgramProp | +| Program.cs:36:13:36:15 | get_Item | +| Program.cs:37:13:37:15 | set_Item | +| Program.cs:45:13:45:15 | add_ProgramClicked | +| Program.cs:49:13:49:18 | remove_ProgramClicked | +attributes +| A.cs:47:10:47:19 | [MyObsolete(...)] | +| Program.cs:60:10:60:16 | [Program(...)] | +events +| A.cs:30:35:30:41 | Clicked | +| Program.cs:43:35:43:48 | ProgramClicked | +eventAccessors +| A.cs:32:13:32:15 | add_Clicked | +| A.cs:36:13:36:18 | remove_Clicked | +| Program.cs:45:13:45:15 | add_ProgramClicked | +| Program.cs:49:13:49:18 | remove_ProgramClicked | +usingDirectives +| A.cs:1:1:1:13 | using ...; | +| Program.cs:1:1:1:13 | using ...; | +commentLines +| A.cs:13:9:13:21 | // ... | +| A.cs:27:9:27:10 | /* ... */ | +| A.cs:28:1:28:27 | /* ... */ | +| A.cs:29:1:29:11 | /* ... */ | +| Program.cs:26:9:26:29 | // ... | +| Program.cs:40:9:40:10 | /* ... */ | +| Program.cs:41:1:41:27 | /* ... */ | +| Program.cs:42:1:42:11 | /* ... */ | +commentBlocks +| A.cs:13:9:13:21 | // ... | +| A.cs:27:9:29:11 | /* ... */ | +| Program.cs:26:9:26:29 | // ... | +| Program.cs:40:9:42:11 | /* ... */ | +typeMentions +| A.cs:7:17:7:22 | String | +| A.cs:8:18:8:23 | String | +| A.cs:16:13:16:19 | Console | +| A.cs:19:16:19:21 | String | +| A.cs:21:16:21:21 | Object | +| A.cs:21:28:21:30 | Int32 | +| A.cs:23:30:23:35 | Object | +| A.cs:34:17:34:23 | Console | +| A.cs:38:17:38:23 | Console | +| A.cs:42:23:42:23 | A | +| A.cs:42:36:42:36 | A | +| A.cs:42:41:42:41 | A | +| A.cs:47:10:47:19 | MyObsoleteAttribute | +| A.cs:48:16:48:19 | Void | +| A.cs:50:16:50:18 | Int32 | +| A.cs:50:30:50:32 | Int32 | +| A.cs:52:13:52:15 | Int32 | +| A.cs:56:25:56:30 | String | +| A.cs:58:13:58:15 | String | +| A.cs:63:40:63:48 | Attribute | +| Program.cs:7:23:7:26 | Void | +| Program.cs:7:33:7:38 | String | +| Program.cs:7:33:7:40 | String[] | +| Program.cs:11:17:11:23 | Console | +| Program.cs:14:13:14:15 | String | +| Program.cs:15:13:15:15 | A | +| Program.cs:15:25:15:25 | A | +| Program.cs:16:13:16:19 | Console | +| Program.cs:19:17:19:22 | String | +| Program.cs:21:24:21:29 | String | +| Program.cs:29:13:29:19 | Console | +| Program.cs:32:16:32:21 | String | +| Program.cs:34:16:34:21 | String | +| Program.cs:34:28:34:30 | Int32 | +| Program.cs:36:26:36:31 | String | +| Program.cs:47:17:47:23 | Console | +| Program.cs:51:17:51:23 | Console | +| Program.cs:55:23:55:29 | Program | +| Program.cs:55:42:55:48 | Program | +| Program.cs:55:53:55:59 | Program | +| Program.cs:60:10:60:16 | ProgramAttribute | +| Program.cs:61:16:61:19 | Void | +| Program.cs:64:37:64:45 | Attribute | +xmlLocatables +| web.changed.config:2:1:12:17 | configuration | +| web.changed.config:3:3:4:16 | system.web | +| web.changed.config:5:3:11:22 | system.webServer | +| web.changed.config:6:5:10:20 | httpProtocol | +| web.changed.config:7:7:9:23 | customHeaders | +| web.changed.config:8:9:8:42 | add | +| web.changed.config:8:9:8:42 | name=MyOption | +| web.changed.config:8:9:8:42 | value=1 | +| web.unchanged.config:2:1:6:17 | configuration | +| web.unchanged.config:3:3:5:16 | system.web | +| web.unchanged.config:4:5:4:37 | httpCookies | +| web.unchanged.config:4:5:4:37 | requireSSL=true | diff --git a/csharp/ql/test/library-tests/overlay/base/test.qlref b/csharp/ql/test/library-tests/overlay/base/test.qlref new file mode 100644 index 000000000000..bbce8f8b98d3 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/base/test.qlref @@ -0,0 +1 @@ +query: ../test.ql diff --git a/csharp/ql/test/library-tests/overlay/base/web.changed.config b/csharp/ql/test/library-tests/overlay/base/web.changed.config new file mode 100644 index 000000000000..a678c32c5a09 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/base/web.changed.config @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/Web.config b/csharp/ql/test/library-tests/overlay/base/web.unchanged.config similarity index 73% rename from csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/Web.config rename to csharp/ql/test/library-tests/overlay/base/web.unchanged.config index 96fd10c05b72..e4dc561c53f9 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/Web.config +++ b/csharp/ql/test/library-tests/overlay/base/web.unchanged.config @@ -1,6 +1,6 @@ - + diff --git a/csharp/ql/test/library-tests/overlay/codeql-test.yml b/csharp/ql/test/library-tests/overlay/codeql-test.yml new file mode 100644 index 000000000000..59ca317af6f0 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/codeql-test.yml @@ -0,0 +1,3 @@ +overlay: + base: "base/" + overlay: "overlay/" diff --git a/csharp/ql/test/library-tests/overlay/options b/csharp/ql/test/library-tests/overlay/options new file mode 100644 index 000000000000..7ba3811b2afb --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/options @@ -0,0 +1 @@ +semmle-extractor-options: --standalone diff --git a/csharp/ql/test/library-tests/overlay/overlay/A.cs b/csharp/ql/test/library-tests/overlay/overlay/A.cs new file mode 100644 index 000000000000..7955f810bd8e --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/overlay/A.cs @@ -0,0 +1,70 @@ +using System; + +namespace ConsoleApp1 +{ + public class C { } + + public class A + { + private string name; + public A(string x) + { + name = x; + } + + // Destructor + ~A() + { + Console.WriteLine("Destructor called!"); + } + + public string Prop { get; set; } = "Hello"; + + public object this[int i] + { + get { return new object(); } + set { } + } + + /* + * An example event + */ + public event EventHandler Clicked + { + add + { + Console.WriteLine("Handler added"); + } + remove + { + Console.WriteLine("Handler removed"); + } + } + + public static A operator +(A a, A b) + { + return a; + } + + [MyObsolete] + public void ObsoleteMethod() { } + + + public override string ToString() + { + string y; + y = $"Name: {name}"; + return y; + } + + public void NewMethod() + { + if (name.EndsWith("test")) + { + name = name.ToUpper(); + } + } + } + + public class MyObsoleteAttribute : Attribute { } +} diff --git a/csharp/ql/test/library-tests/overlay/overlay/Program.cs b/csharp/ql/test/library-tests/overlay/overlay/Program.cs new file mode 100644 index 000000000000..bc57d682a268 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/overlay/Program.cs @@ -0,0 +1,65 @@ +using System; + +namespace ConsoleApp1 +{ + internal class Program + { + public static void Main(string[] args) + { + if (args.Length == 0) + { + Console.WriteLine("Print usage instructions here."); + return; + } + var x = args[0]; + var a = new A(x); + Console.WriteLine(a.ToString()); + } + + private string programName; + + public Program(string x) + { + programName = x; + } + + // Program destructor + ~Program() + { + Console.WriteLine("Program destructor called!"); + } + + public string ProgramProp { get; set; } = "Hello World!"; + + public string this[int i] + { + get { return string.Empty; } + set { } + } + + /* + * A program event. + */ + public event EventHandler ProgramClicked + { + add + { + Console.WriteLine("Program handler added"); + } + remove + { + Console.WriteLine("Program handler removed"); + } + } + + public static Program operator -(Program a, Program b) + { + return b; + } + + [Program] + public void AnnotatedMethod() { } + } + + public class ProgramAttribute : Attribute { } +} diff --git a/csharp/ql/test/library-tests/overlay/overlay/options b/csharp/ql/test/library-tests/overlay/overlay/options new file mode 100644 index 000000000000..7ba3811b2afb --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/overlay/options @@ -0,0 +1 @@ +semmle-extractor-options: --standalone diff --git a/csharp/ql/test/library-tests/overlay/overlay/test.expected b/csharp/ql/test/library-tests/overlay/overlay/test.expected new file mode 100644 index 000000000000..d9d4d0ec6fe0 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/overlay/test.expected @@ -0,0 +1,274 @@ +expressions +| A.cs:5:18:5:18 | call to constructor Object | +| A.cs:10:16:10:16 | call to constructor Object | +| A.cs:12:13:12:16 | access to field name | +| A.cs:12:13:12:16 | this access | +| A.cs:12:13:12:20 | ... = ... | +| A.cs:12:20:12:20 | access to parameter x | +| A.cs:18:13:18:19 | access to type Console | +| A.cs:18:13:18:51 | call to method WriteLine | +| A.cs:18:31:18:50 | "Destructor called!" | +| A.cs:21:23:21:26 | access to property Prop | +| A.cs:21:23:21:26 | this access | +| A.cs:21:42:21:50 | ... = ... | +| A.cs:21:44:21:50 | "Hello" | +| A.cs:25:26:25:37 | object creation of type Object | +| A.cs:36:17:36:23 | access to type Console | +| A.cs:36:17:36:50 | call to method WriteLine | +| A.cs:36:35:36:49 | "Handler added" | +| A.cs:40:17:40:23 | access to type Console | +| A.cs:40:17:40:52 | call to method WriteLine | +| A.cs:40:35:40:51 | "Handler removed" | +| A.cs:46:20:46:20 | access to parameter a | +| A.cs:55:20:55:20 | String y | +| A.cs:56:13:56:13 | access to local variable y | +| A.cs:56:13:56:31 | ... = ... | +| A.cs:56:17:56:31 | $"..." | +| A.cs:56:19:56:24 | "Name: " | +| A.cs:56:25:56:30 | {...} | +| A.cs:56:26:56:29 | access to field name | +| A.cs:56:26:56:29 | this access | +| A.cs:57:20:57:20 | access to local variable y | +| A.cs:62:17:62:20 | access to field name | +| A.cs:62:17:62:20 | this access | +| A.cs:62:17:62:37 | call to method EndsWith | +| A.cs:62:31:62:36 | "test" | +| A.cs:64:17:64:20 | access to field name | +| A.cs:64:17:64:20 | this access | +| A.cs:64:17:64:37 | ... = ... | +| A.cs:64:24:64:27 | access to field name | +| A.cs:64:24:64:27 | this access | +| A.cs:64:24:64:37 | call to method ToUpper | +| A.cs:69:18:69:36 | call to constructor Attribute | +| Program.cs:9:17:9:20 | access to parameter args | +| Program.cs:9:17:9:27 | access to property Length | +| Program.cs:9:17:9:32 | ... == ... | +| Program.cs:9:32:9:32 | 0 | +| Program.cs:11:17:11:23 | access to type Console | +| Program.cs:11:17:11:67 | call to method WriteLine | +| Program.cs:11:35:11:66 | "Print usage instructions here." | +| Program.cs:14:17:14:17 | access to local variable x | +| Program.cs:14:17:14:27 | String x = ... | +| Program.cs:14:21:14:24 | access to parameter args | +| Program.cs:14:21:14:27 | access to array element | +| Program.cs:14:26:14:26 | 0 | +| Program.cs:15:17:15:17 | access to local variable a | +| Program.cs:15:17:15:28 | A a = ... | +| Program.cs:15:21:15:28 | object creation of type A | +| Program.cs:15:27:15:27 | access to local variable x | +| Program.cs:16:13:16:19 | access to type Console | +| Program.cs:16:13:16:43 | call to method WriteLine | +| Program.cs:16:31:16:31 | access to local variable a | +| Program.cs:16:31:16:42 | call to method ToString | +| Program.cs:21:16:21:22 | call to constructor Object | +| Program.cs:23:13:23:23 | access to field programName | +| Program.cs:23:13:23:23 | this access | +| Program.cs:23:13:23:27 | ... = ... | +| Program.cs:23:27:23:27 | access to parameter x | +| Program.cs:29:13:29:19 | access to type Console | +| Program.cs:29:13:29:59 | call to method WriteLine | +| Program.cs:29:31:29:58 | "Program destructor called!" | +| Program.cs:32:23:32:33 | access to property ProgramProp | +| Program.cs:32:23:32:33 | this access | +| Program.cs:32:49:32:64 | ... = ... | +| Program.cs:32:51:32:64 | "Hello World!" | +| Program.cs:36:26:36:31 | access to type String | +| Program.cs:36:26:36:37 | access to field Empty | +| Program.cs:47:17:47:23 | access to type Console | +| Program.cs:47:17:47:58 | call to method WriteLine | +| Program.cs:47:35:47:57 | "Program handler added" | +| Program.cs:51:17:51:23 | access to type Console | +| Program.cs:51:17:51:60 | call to method WriteLine | +| Program.cs:51:35:51:59 | "Program handler removed" | +| Program.cs:57:20:57:20 | access to parameter b | +| Program.cs:64:18:64:33 | call to constructor Attribute | +statements +| A.cs:5:18:5:18 | {...} | +| A.cs:11:9:13:9 | {...} | +| A.cs:12:13:12:21 | ...; | +| A.cs:17:9:19:9 | {...} | +| A.cs:18:13:18:52 | ...; | +| A.cs:25:17:25:40 | {...} | +| A.cs:25:19:25:38 | return ...; | +| A.cs:26:17:26:19 | {...} | +| A.cs:35:13:37:13 | {...} | +| A.cs:36:17:36:51 | ...; | +| A.cs:39:13:41:13 | {...} | +| A.cs:40:17:40:53 | ...; | +| A.cs:45:9:47:9 | {...} | +| A.cs:46:13:46:21 | return ...; | +| A.cs:50:38:50:40 | {...} | +| A.cs:54:9:58:9 | {...} | +| A.cs:55:13:55:21 | ... ...; | +| A.cs:56:13:56:32 | ...; | +| A.cs:57:13:57:21 | return ...; | +| A.cs:61:9:66:9 | {...} | +| A.cs:62:13:65:13 | if (...) ... | +| A.cs:63:13:65:13 | {...} | +| A.cs:64:17:64:38 | ...; | +| A.cs:69:18:69:36 | {...} | +| Program.cs:8:9:17:9 | {...} | +| Program.cs:9:13:13:13 | if (...) ... | +| Program.cs:10:13:13:13 | {...} | +| Program.cs:11:17:11:68 | ...; | +| Program.cs:12:17:12:23 | return ...; | +| Program.cs:14:13:14:28 | ... ...; | +| Program.cs:15:13:15:29 | ... ...; | +| Program.cs:16:13:16:44 | ...; | +| Program.cs:22:9:24:9 | {...} | +| Program.cs:23:13:23:28 | ...; | +| Program.cs:28:9:30:9 | {...} | +| Program.cs:29:13:29:60 | ...; | +| Program.cs:36:17:36:40 | {...} | +| Program.cs:36:19:36:38 | return ...; | +| Program.cs:37:17:37:19 | {...} | +| Program.cs:46:13:48:13 | {...} | +| Program.cs:47:17:47:59 | ...; | +| Program.cs:50:13:52:13 | {...} | +| Program.cs:51:17:51:61 | ...; | +| Program.cs:56:9:58:9 | {...} | +| Program.cs:57:13:57:21 | return ...; | +| Program.cs:61:39:61:41 | {...} | +| Program.cs:64:18:64:33 | {...} | +methods +| A.cs:50:21:50:34 | ObsoleteMethod | +| A.cs:53:32:53:39 | ToString | +| A.cs:60:21:60:29 | NewMethod | +| Program.cs:7:28:7:31 | Main | +| Program.cs:61:21:61:35 | AnnotatedMethod | +types +| A.cs:5:18:5:18 | C | +| A.cs:7:18:7:18 | A | +| A.cs:69:18:69:36 | MyObsoleteAttribute | +| Program.cs:5:20:5:26 | Program | +| Program.cs:64:18:64:33 | ProgramAttribute | +parameters +| A.cs:10:25:10:25 | x | +| A.cs:21:35:21:37 | value | +| A.cs:23:32:23:32 | i | +| A.cs:23:32:23:32 | i | +| A.cs:23:32:23:32 | i | +| A.cs:26:13:26:15 | value | +| A.cs:34:13:34:15 | value | +| A.cs:38:13:38:18 | value | +| A.cs:44:38:44:38 | a | +| A.cs:44:43:44:43 | b | +| Program.cs:7:42:7:45 | args | +| Program.cs:21:31:21:31 | x | +| Program.cs:32:42:32:44 | value | +| Program.cs:34:32:34:32 | i | +| Program.cs:34:32:34:32 | i | +| Program.cs:34:32:34:32 | i | +| Program.cs:37:13:37:15 | value | +| Program.cs:45:13:45:15 | value | +| Program.cs:49:13:49:18 | value | +| Program.cs:55:50:55:50 | a | +| Program.cs:55:61:55:61 | b | +operators +| A.cs:44:34:44:34 | + | +| Program.cs:55:40:55:40 | - | +constructors +| A.cs:10:16:10:16 | A | +| Program.cs:21:16:21:22 | Program | +destructors +| A.cs:16:10:16:10 | ~A | +| Program.cs:27:10:27:16 | ~Program | +fields +| A.cs:9:24:9:27 | name | +| Program.cs:19:24:19:34 | programName | +properties +| A.cs:21:23:21:26 | Prop | +| Program.cs:32:23:32:33 | ProgramProp | +indexers +| A.cs:23:23:23:26 | Item | +| Program.cs:34:23:34:26 | Item | +accessors +| A.cs:21:30:21:32 | get_Prop | +| A.cs:21:35:21:37 | set_Prop | +| A.cs:25:13:25:15 | get_Item | +| A.cs:26:13:26:15 | set_Item | +| A.cs:34:13:34:15 | add_Clicked | +| A.cs:38:13:38:18 | remove_Clicked | +| Program.cs:32:37:32:39 | get_ProgramProp | +| Program.cs:32:42:32:44 | set_ProgramProp | +| Program.cs:36:13:36:15 | get_Item | +| Program.cs:37:13:37:15 | set_Item | +| Program.cs:45:13:45:15 | add_ProgramClicked | +| Program.cs:49:13:49:18 | remove_ProgramClicked | +attributes +| A.cs:49:10:49:19 | [MyObsolete(...)] | +| Program.cs:60:10:60:16 | [Program(...)] | +events +| A.cs:32:35:32:41 | Clicked | +| Program.cs:43:35:43:48 | ProgramClicked | +eventAccessors +| A.cs:34:13:34:15 | add_Clicked | +| A.cs:38:13:38:18 | remove_Clicked | +| Program.cs:45:13:45:15 | add_ProgramClicked | +| Program.cs:49:13:49:18 | remove_ProgramClicked | +usingDirectives +| A.cs:1:1:1:13 | using ...; | +| Program.cs:1:1:1:13 | using ...; | +commentLines +| A.cs:15:9:15:21 | // ... | +| A.cs:29:9:29:10 | /* ... */ | +| A.cs:30:1:30:27 | /* ... */ | +| A.cs:31:1:31:11 | /* ... */ | +| Program.cs:26:9:26:29 | // ... | +| Program.cs:40:9:40:10 | /* ... */ | +| Program.cs:41:1:41:27 | /* ... */ | +| Program.cs:42:1:42:11 | /* ... */ | +commentBlocks +| A.cs:15:9:15:21 | // ... | +| A.cs:29:9:31:11 | /* ... */ | +| Program.cs:26:9:26:29 | // ... | +| Program.cs:40:9:42:11 | /* ... */ | +typeMentions +| A.cs:9:17:9:22 | String | +| A.cs:10:18:10:23 | String | +| A.cs:18:13:18:19 | Console | +| A.cs:21:16:21:21 | String | +| A.cs:23:16:23:21 | Object | +| A.cs:23:28:23:30 | Int32 | +| A.cs:25:30:25:35 | Object | +| A.cs:36:17:36:23 | Console | +| A.cs:40:17:40:23 | Console | +| A.cs:44:23:44:23 | A | +| A.cs:44:36:44:36 | A | +| A.cs:44:41:44:41 | A | +| A.cs:49:10:49:19 | MyObsoleteAttribute | +| A.cs:50:16:50:19 | Void | +| A.cs:53:25:53:30 | String | +| A.cs:55:13:55:18 | String | +| A.cs:60:16:60:19 | Void | +| A.cs:69:40:69:48 | Attribute | +| Program.cs:7:23:7:26 | Void | +| Program.cs:7:33:7:38 | String | +| Program.cs:7:33:7:40 | String[] | +| Program.cs:11:17:11:23 | Console | +| Program.cs:14:13:14:15 | String | +| Program.cs:15:13:15:15 | A | +| Program.cs:15:25:15:25 | A | +| Program.cs:16:13:16:19 | Console | +| Program.cs:19:17:19:22 | String | +| Program.cs:21:24:21:29 | String | +| Program.cs:29:13:29:19 | Console | +| Program.cs:32:16:32:21 | String | +| Program.cs:34:16:34:21 | String | +| Program.cs:34:28:34:30 | Int32 | +| Program.cs:36:26:36:31 | String | +| Program.cs:47:17:47:23 | Console | +| Program.cs:51:17:51:23 | Console | +| Program.cs:55:23:55:29 | Program | +| Program.cs:55:42:55:48 | Program | +| Program.cs:55:53:55:59 | Program | +| Program.cs:60:10:60:16 | ProgramAttribute | +| Program.cs:61:16:61:19 | Void | +| Program.cs:64:37:64:45 | Attribute | +xmlLocatables +| web.changed.config:2:1:5:17 | configuration | +| web.changed.config:3:3:4:16 | system.web | +| web.unchanged.config:2:1:6:17 | configuration | +| web.unchanged.config:3:3:5:16 | system.web | +| web.unchanged.config:4:5:4:37 | httpCookies | +| web.unchanged.config:4:5:4:37 | requireSSL=true | diff --git a/csharp/ql/test/library-tests/overlay/overlay/test.qlref b/csharp/ql/test/library-tests/overlay/overlay/test.qlref new file mode 100644 index 000000000000..bbce8f8b98d3 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/overlay/test.qlref @@ -0,0 +1 @@ +query: ../test.ql diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/Web.config b/csharp/ql/test/library-tests/overlay/overlay/web.changed.config similarity index 83% rename from csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/Web.config rename to csharp/ql/test/library-tests/overlay/overlay/web.changed.config index 96fd10c05b72..8f0b996a0244 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/Web.config +++ b/csharp/ql/test/library-tests/overlay/overlay/web.changed.config @@ -1,6 +1,5 @@ - diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/Web.config b/csharp/ql/test/library-tests/overlay/overlay/web.unchanged.config similarity index 72% rename from csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/Web.config rename to csharp/ql/test/library-tests/overlay/overlay/web.unchanged.config index ec7b88761ca4..e4dc561c53f9 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/Web.config +++ b/csharp/ql/test/library-tests/overlay/overlay/web.unchanged.config @@ -1,6 +1,6 @@ - + diff --git a/csharp/ql/test/library-tests/overlay/test.ql b/csharp/ql/test/library-tests/overlay/test.ql new file mode 100644 index 000000000000..91f3c6a3aabd --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/test.ql @@ -0,0 +1,41 @@ +import csharp + +query predicate expressions(Expr e) { e.fromSource() } + +query predicate statements(Stmt s) { s.fromSource() } + +query predicate methods(Method m) { m.fromSource() } + +query predicate types(Type t) { t.fromSource() } + +query predicate parameters(Parameter p) { p.fromSource() } + +query predicate operators(Operator o) { o.fromSource() } + +query predicate constructors(Constructor c) { c.fromSource() } + +query predicate destructors(Destructor d) { d.fromSource() } + +query predicate fields(Field f) { f.fromSource() } + +query predicate properties(Property p) { p.fromSource() } + +query predicate indexers(Indexer i) { i.fromSource() } + +query predicate accessors(Accessor a) { a.fromSource() } + +query predicate attributes(Attribute a) { a.fromSource() } + +query predicate events(Event ev) { ev.fromSource() } + +query predicate eventAccessors(EventAccessor ea) { ea.fromSource() } + +query predicate usingDirectives(UsingDirective ud) { ud.fromSource() } + +query predicate commentLines(CommentLine cl) { any() } + +query predicate commentBlocks(CommentBlock cb) { any() } + +query predicate typeMentions(TypeMention tm) { any() } + +query predicate xmlLocatables(XmlLocatable xl) { any() } diff --git a/csharp/ql/test/library-tests/overlay/testlocations.expected b/csharp/ql/test/library-tests/overlay/testlocations.expected new file mode 100644 index 000000000000..28715da9ee9f --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/testlocations.expected @@ -0,0 +1,5 @@ +elementsWithMultipleSourceLocations +typeMentionsWithMultipleSourceLocations +commentLinesWithMultipleSourceLocations +commentBlocksWithMultipleSourceLocations +removedEntities diff --git a/csharp/ql/test/library-tests/overlay/testlocations.ql b/csharp/ql/test/library-tests/overlay/testlocations.ql new file mode 100644 index 000000000000..24aaeda218c2 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/testlocations.ql @@ -0,0 +1,29 @@ +import csharp + +// This is a consistency check that the overlay mechanism for cleaning up locations +// works correctly. +query predicate elementsWithMultipleSourceLocations(Element e, SourceLocation loc) { + e.fromSource() and + not e instanceof Namespace and + strictcount(SourceLocation l0 | l0 = e.getALocation()) > 1 and + loc = e.getALocation() +} + +query predicate typeMentionsWithMultipleSourceLocations(TypeMention tm, SourceLocation loc) { + strictcount(SourceLocation l0 | l0 = tm.getLocation()) > 1 and + loc = tm.getLocation() +} + +query predicate commentLinesWithMultipleSourceLocations(CommentLine cl, SourceLocation loc) { + strictcount(SourceLocation l0 | l0 = cl.getLocation()) > 1 and + loc = cl.getLocation() +} + +query predicate commentBlocksWithMultipleSourceLocations(CommentBlock cb, SourceLocation loc) { + strictcount(SourceLocation l0 | l0 = cb.getLocation()) > 1 and + loc = cb.getLocation() +} + +// This is a consistency check that the entities that are removed as a part of +// the changes in the overlay are indeed removed from the database. +query predicate removedEntities(Element e) { e.(Method).getName() = "OldMethod" } diff --git a/csharp/ql/test/library-tests/statements/Switch4.ql b/csharp/ql/test/library-tests/statements/Switch4.ql index 742190ad4d52..af44a5f92cf5 100644 --- a/csharp/ql/test/library-tests/statements/Switch4.ql +++ b/csharp/ql/test/library-tests/statements/Switch4.ql @@ -1,5 +1,5 @@ /** - * @name Test the implicit switch field isn't populated. + * @name Test the implicit switch field isn't populated */ import csharp diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/HttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/CookieWithoutHttpOnly.expected similarity index 100% rename from csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/HttpOnly.expected rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/CookieWithoutHttpOnly.expected diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/CookieWithoutHttpOnly.qlref b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/CookieWithoutHttpOnly.qlref new file mode 100644 index 000000000000..9cfe2cba2685 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/Program.cs similarity index 77% rename from csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/Program.cs rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/Program.cs index 4f51bdb5bc5d..ba92978ec496 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/Program.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/Program.cs @@ -10,14 +10,14 @@ public void ConfigureServices(IServiceCollection services) { services.AddAuthentication().AddCookie(o => { - o.Cookie.HttpOnly = false; - o.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; + o.Cookie.HttpOnly = false; // $ Alert + o.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; }); services.AddSession(options => { - options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; - options.Cookie.HttpOnly = false; + options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; + options.Cookie.HttpOnly = false; // $ Alert }); } } diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/CookieWithoutHttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/CookieWithoutHttpOnly.expected new file mode 100644 index 000000000000..1e71f06bfb60 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/CookieWithoutHttpOnly.expected @@ -0,0 +1,4 @@ +| Program.cs:5:9:5:48 | call to method Append | Cookie attribute 'HttpOnly' is not set to true. | +| Program.cs:10:29:10:73 | object creation of type CookieOptions | Cookie attribute 'HttpOnly' is not set to true. | +| Program.cs:42:29:42:73 | object creation of type CookieOptions | Cookie attribute 'HttpOnly' is not set to true. | +| Program.cs:49:29:49:94 | object creation of type CookieOptions | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/CookieWithoutHttpOnly.qlref b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/CookieWithoutHttpOnly.qlref new file mode 100644 index 000000000000..9cfe2cba2685 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/Program.cs similarity index 80% rename from csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/Program.cs rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/Program.cs index 6f12958fba74..4df46f20c8c8 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/Program.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/Program.cs @@ -1,11 +1,29 @@ public class MyController : Microsoft.AspNetCore.Mvc.Controller { + public void CookieDefault() + { + Response.Cookies.Append("auth", "value"); // $Alert // BAD: HttpOnly is set to false by default + } + + public void CookieDefault2() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $Alert + Response.Cookies.Append("auth", "value", cookieOptions); // BAD: HttpOnly is set to false by default + } + public void CookieDelete() { var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); Response.Cookies.Delete("auth", cookieOptions); // GOOD: Delete call } + void CookieDirectFalseForgery() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + cookieOptions.HttpOnly = false; + Response.Cookies.Append("antiforgerytoken", "secret", cookieOptions); // GOOD: not an auth cookie + } + void CookieDirectTrue() { var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); @@ -21,21 +39,14 @@ void CookieDirectTrueInitializer() void CookieDirectFalse() { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $Alert cookieOptions.HttpOnly = false; Response.Cookies.Append("auth", "secret", cookieOptions); // BAD } - void CookieDirectFalseForgery() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - cookieOptions.HttpOnly = false; - Response.Cookies.Append("antiforgerytoken", "secret", cookieOptions); // GOOD: not an auth cookie - } - void CookieDirectFalseInitializer() { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = false }; + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = false }; // $Alert Response.Cookies.Append("auth", "secret", cookieOptions); // BAD } @@ -56,16 +67,16 @@ void CookieIntermediateTrueInitializer() void CookieIntermediateFalse() { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $MISSING:Alert bool v = false; cookieOptions.HttpOnly = v; - Response.Cookies.Append("auth", "secret", cookieOptions); // BAD + Response.Cookies.Append("auth", "secret", cookieOptions); // BAD, but not detected } void CookieIntermediateFalseInitializer() { bool v = false; - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = v }; - Response.Cookies.Append("auth", "secret", cookieOptions); // BAD + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = v }; // $MISSING:Alert + Response.Cookies.Append("auth", "secret", cookieOptions); // BAD, but not detected } } diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/HttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/CookieWithoutHttpOnly.expected similarity index 100% rename from csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/HttpOnly.expected rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/CookieWithoutHttpOnly.expected diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/CookieWithoutHttpOnly.qlref b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/CookieWithoutHttpOnly.qlref new file mode 100644 index 000000000000..9cfe2cba2685 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/Program.cs similarity index 92% rename from csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/Program.cs rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/Program.cs index 115f448a39b4..cdb8a9081d1b 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/Program.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/Program.cs @@ -20,6 +20,6 @@ public class Startup // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { - app.UseCookiePolicy(new CookiePolicyOptions() { HttpOnly = Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.Always}); + app.UseCookiePolicy(new CookiePolicyOptions() { HttpOnly = Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.Always }); } } diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/HttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/CookieWithoutHttpOnly.expected similarity index 100% rename from csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/HttpOnly.expected rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/CookieWithoutHttpOnly.expected diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/CookieWithoutHttpOnly.qlref b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/CookieWithoutHttpOnly.qlref new file mode 100644 index 000000000000..9cfe2cba2685 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/Program.cs similarity index 88% rename from csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/Program.cs rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/Program.cs index 60f217eff20e..6d44521e85f8 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/Program.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/Program.cs @@ -6,9 +6,13 @@ public class MyController : Microsoft.AspNetCore.Mvc.Controller { public void CookieDefault() + { + Response.Cookies.Append("auth", "secret"); // GOOD: HttpOnly is set in callback + } + + public void CookieDefault2() { var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - cookieOptions.HttpOnly = false; Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: HttpOnly is set in callback } } diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/HttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/CookieWithoutHttpOnly.expected similarity index 100% rename from csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/HttpOnly.expected rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/CookieWithoutHttpOnly.expected diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/CookieWithoutHttpOnly.qlref b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/CookieWithoutHttpOnly.qlref new file mode 100644 index 000000000000..9cfe2cba2685 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/Program.cs similarity index 85% rename from csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/Program.cs rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/Program.cs index 7be845aadfea..187a02e71dc1 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/Program.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/Program.cs @@ -5,12 +5,12 @@ public class MyController : Microsoft.AspNetCore.Mvc.Controller { public void CookieDefault() { - Response.Cookies.Append("auth", "secret"); // Bad: HttpOnly policy set to None + Response.Cookies.Append("auth", "secret"); // $ Alert // Bad: HttpOnly policy set to None } public void CookieDefault2() { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $ Alert Response.Cookies.Append("auth", "secret", cookieOptions); // Bad: HttpOnly policy set to None } } diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/options b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/options new file mode 100644 index 000000000000..3282ecf48f65 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/CookieWithoutHttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/CookieWithoutHttpOnly.expected new file mode 100644 index 000000000000..3a3d027e1f92 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/CookieWithoutHttpOnly.expected @@ -0,0 +1,3 @@ +| Program.cs:16:22:16:59 | object creation of type HttpCookie | Cookie attribute 'HttpOnly' is not set to true. | +| Program.cs:32:22:32:59 | object creation of type HttpCookie | Cookie attribute 'HttpOnly' is not set to true. | +| Program.cs:38:22:38:80 | object creation of type HttpCookie | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/CookieWithoutHttpOnly.qlref b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/CookieWithoutHttpOnly.qlref new file mode 100644 index 000000000000..9cfe2cba2685 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/Program.cs similarity index 71% rename from csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/Program.cs rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/Program.cs index 6ab389f63cce..3e63963712f0 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/Program.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/Program.cs @@ -11,6 +11,16 @@ void CookieDirectTrueInitializer() var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = true }; // GOOD } + void CookieDefault() + { + var cookie = new System.Web.HttpCookie("sessionID"); // $Alert // BAD: httpOnlyCookies is set to false by default + } + + void CookieDefaultForgery() + { + var cookie = new System.Web.HttpCookie("anticsrftoken"); // GOOD: not an auth cookie + } + void CookieForgeryDirectFalse() { var cookie = new System.Web.HttpCookie("antiforgerytoken"); @@ -19,13 +29,13 @@ void CookieForgeryDirectFalse() void CookieDirectFalse() { - var cookie = new System.Web.HttpCookie("sessionID"); + var cookie = new System.Web.HttpCookie("sessionID"); // $Alert cookie.HttpOnly = false; // BAD } void CookieDirectFalseInitializer() { - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = false }; // BAD + var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = false }; // $Alert // BAD } void CookieIntermediateTrue() @@ -43,7 +53,7 @@ void CookieIntermediateTrueInitializer() void CookieIntermediateFalse() { - var cookie = new System.Web.HttpCookie("sessionID"); + var cookie = new System.Web.HttpCookie("sessionID"); // MISSING:Alert bool v = false; cookie.HttpOnly = v; // BAD } @@ -51,6 +61,6 @@ void CookieIntermediateFalse() void CookieIntermediateFalseInitializer() { bool v = false; - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = v }; // BAD + var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = v }; // $MISSING:Alert // BAD } } diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/Web.config b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/Web.config similarity index 100% rename from csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/Web.config rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/Web.config diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/HttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/CookieWithoutHttpOnly.expected similarity index 100% rename from csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/HttpOnly.expected rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/CookieWithoutHttpOnly.expected diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/CookieWithoutHttpOnly.qlref b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/CookieWithoutHttpOnly.qlref new file mode 100644 index 000000000000..9cfe2cba2685 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/Program.cs new file mode 100644 index 000000000000..cd60e4df262d --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/Program.cs @@ -0,0 +1,7 @@ +class Program +{ + void CookieDefault() + { + var cookie = new System.Web.HttpCookie("auth"); // GOOD: httpOnlyCookies is set to true in config + } +} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/Web.config b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/Web.config similarity index 70% rename from csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/Web.config rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/Web.config index fc2621492116..8bb37742741a 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/Web.config +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/Web.config @@ -1,6 +1,6 @@ - + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/options b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/options new file mode 100644 index 000000000000..9414f8d8ef89 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/RequireSSL.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/CookieWithoutSecure.expected similarity index 100% rename from csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/RequireSSL.expected rename to csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/CookieWithoutSecure.expected diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/CookieWithoutSecure.qlref new file mode 100644 index 000000000000..bb0094e7d8fc --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/Program.cs similarity index 89% rename from csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/Program.cs rename to csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/Program.cs index 4f51bdb5bc5d..245c693f513f 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/Program.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/Program.cs @@ -11,12 +11,12 @@ public void ConfigureServices(IServiceCollection services) services.AddAuthentication().AddCookie(o => { o.Cookie.HttpOnly = false; - o.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; + o.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; // $ Alert }); services.AddSession(options => { - options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; + options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; // $ Alert options.Cookie.HttpOnly = false; }); } diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/CookieWithoutSecure.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/CookieWithoutSecure.expected new file mode 100644 index 000000000000..4c2bbcca1cae --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/CookieWithoutSecure.expected @@ -0,0 +1,4 @@ +| Program.cs:5:9:5:48 | call to method Append | Cookie attribute 'Secure' is not set to true. | +| Program.cs:10:29:10:73 | object creation of type CookieOptions | Cookie attribute 'Secure' is not set to true. | +| Program.cs:35:29:35:73 | object creation of type CookieOptions | Cookie attribute 'Secure' is not set to true. | +| Program.cs:42:29:42:92 | object creation of type CookieOptions | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/CookieWithoutSecure.qlref new file mode 100644 index 000000000000..bb0094e7d8fc --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/Program.cs similarity index 78% rename from csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/Program.cs rename to csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/Program.cs index b1ad1aede91e..733e2d71fcc0 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/Program.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/Program.cs @@ -1,5 +1,16 @@ public class MyController : Microsoft.AspNetCore.Mvc.Controller { + public void CookieDefault() + { + Response.Cookies.Append("name", "value"); // $Alert // BAD: Secure is set to false by default + } + + public void CookieDefault2() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $Alert + Response.Cookies.Append("name", "value", cookieOptions); // BAD: Secure is set to false by default + } + public void CookieDelete() { var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); @@ -21,14 +32,14 @@ void CookieDirectTrueInitializer() void CookieDirectFalse() { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $Alert cookieOptions.Secure = false; Response.Cookies.Append("auth", "secret", cookieOptions); // BAD } void CookieDirectFalseInitializer() { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = false }; + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = false }; // $Alert Response.Cookies.Append("auth", "secret", cookieOptions); // BAD } @@ -49,16 +60,16 @@ void CookieIntermediateTrueInitializer() void CookieIntermediateFalse() { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $MISSING:Alert bool v = false; cookieOptions.Secure = v; - Response.Cookies.Append("auth", "secret", cookieOptions); // BAD + Response.Cookies.Append("auth", "secret", cookieOptions); // BAD, but not detected } void CookieIntermediateFalseInitializer() { bool v = false; - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = v }; - Response.Cookies.Append("auth", "secret", cookieOptions); // BAD + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = v }; // $MISSING:Alert + Response.Cookies.Append("auth", "secret", cookieOptions); // BAD, but not detected } } diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/CookieWithoutSecure.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/CookieWithoutSecure.expected new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/CookieWithoutSecure.expected @@ -0,0 +1 @@ + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/CookieWithoutSecure.qlref new file mode 100644 index 000000000000..bb0094e7d8fc --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/Program.cs similarity index 100% rename from csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/Program.cs rename to csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/Program.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/CookieWithoutSecure.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/CookieWithoutSecure.expected new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/CookieWithoutSecure.expected @@ -0,0 +1 @@ + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/CookieWithoutSecure.qlref new file mode 100644 index 000000000000..bb0094e7d8fc --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/Program.cs similarity index 100% rename from csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/Program.cs rename to csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/Program.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/RequireSSL.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/CookieWithoutSecure.expected similarity index 100% rename from csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/RequireSSL.expected rename to csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/CookieWithoutSecure.expected diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/CookieWithoutSecure.qlref new file mode 100644 index 000000000000..bb0094e7d8fc --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/Program.cs similarity index 86% rename from csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/Program.cs rename to csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/Program.cs index 9db1f5380d49..989412e3d02c 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/Program.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/Program.cs @@ -5,12 +5,12 @@ public class MyController : Microsoft.AspNetCore.Mvc.Controller { public void CookieDefault() { - Response.Cookies.Append("auth", "secret"); // Bad: Secure policy set to None + Response.Cookies.Append("auth", "secret"); // $ Alert // Bad: Secure policy set to None } public void CookieDefault2() { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $ Alert Response.Cookies.Append("auth", "secret", cookieOptions); // Bad: Secure policy set to None } } diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/options b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/options new file mode 100644 index 000000000000..3282ecf48f65 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/CookieWithoutSecure.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/CookieWithoutSecure.expected new file mode 100644 index 000000000000..4ef56f10d559 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/CookieWithoutSecure.expected @@ -0,0 +1,3 @@ +| Program.cs:5:22:5:60 | object creation of type HttpCookie | Cookie attribute 'Secure' is not set to true. | +| Program.cs:34:22:34:60 | object creation of type HttpCookie | Cookie attribute 'Secure' is not set to true. | +| Program.cs:40:22:40:79 | object creation of type HttpCookie | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/CookieWithoutSecure.qlref new file mode 100644 index 000000000000..bb0094e7d8fc --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/Program.cs similarity index 68% rename from csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/Program.cs rename to csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/Program.cs index 3a6d80b50c9d..250b1f7780e6 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/Program.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/Program.cs @@ -1,5 +1,10 @@ class Program { + void CookieDefault() + { + var cookie = new System.Web.HttpCookie("cookieName"); // $Alert // BAD: requireSSL is set to false by default + } + void CookieDirectTrue() { var cookie = new System.Web.HttpCookie("cookieName"); @@ -11,17 +16,6 @@ void CookieDirectTrueInitializer() var cookie = new System.Web.HttpCookie("cookieName") { Secure = true }; // GOOD } - void CookieDirectFalse() - { - var cookie = new System.Web.HttpCookie("cookieName"); - cookie.Secure = false; // BAD - } - - void CookieDirectFalseInitializer() - { - var cookie = new System.Web.HttpCookie("cookieName") { Secure = false }; // BAD - } - void CookieIntermediateTrue() { var cookie = new System.Web.HttpCookie("cookieName"); @@ -35,16 +29,27 @@ void CookieIntermediateTrueInitializer() var cookie = new System.Web.HttpCookie("cookieName") { Secure = v }; // GOOD: should track local data flow } - void CookieIntermediateFalse() + void CookieDirectFalse() { - var cookie = new System.Web.HttpCookie("cookieName"); + var cookie = new System.Web.HttpCookie("cookieName"); // $Alert + cookie.Secure = false; // BAD + } + + void CookieDirectFalseInitializer() + { + var cookie = new System.Web.HttpCookie("cookieName") { Secure = false }; // $Alert // BAD + } + + void CookieIntermediateFalse() + { + var cookie = new System.Web.HttpCookie("cookieName"); // $MISSING:Alert bool v = false; - cookie.Secure = v; // BAD + cookie.Secure = v; // BAD, but not detected } void CookieIntermediateFalseInitializer() { bool v = false; - var cookie = new System.Web.HttpCookie("cookieName") { Secure = v }; // BAD + var cookie = new System.Web.HttpCookie("cookieName") { Secure = v }; // $MISSING:Alert // BAD, but not detected } } diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/Web.config b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/Web.config similarity index 100% rename from csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/Web.config rename to csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/Web.config diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/options b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/options new file mode 100644 index 000000000000..9414f8d8ef89 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/HttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/CookieWithoutSecure.expected similarity index 100% rename from csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/HttpOnly.expected rename to csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/CookieWithoutSecure.expected diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/CookieWithoutSecure.qlref new file mode 100644 index 000000000000..bb0094e7d8fc --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/Program.cs new file mode 100644 index 000000000000..8f2c4cce0a4e --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/Program.cs @@ -0,0 +1,7 @@ +class Program +{ + void CookieDefault() + { + var cookie = new System.Web.HttpCookie("cookieName"); // GOOD: requireSSL is set to true in config + } +} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Web.config b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/Web.config similarity index 100% rename from csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Web.config rename to csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/Web.config diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/RequireSSL.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/CookieWithoutSecure.expected similarity index 100% rename from csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/RequireSSL.expected rename to csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/CookieWithoutSecure.expected diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/CookieWithoutSecure.qlref new file mode 100644 index 000000000000..bb0094e7d8fc --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/Program.cs new file mode 100644 index 000000000000..8f2c4cce0a4e --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/Program.cs @@ -0,0 +1,7 @@ +class Program +{ + void CookieDefault() + { + var cookie = new System.Web.HttpCookie("cookieName"); // GOOD: requireSSL is set to true in config + } +} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/Web.config b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/Web.config similarity index 100% rename from csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/Web.config rename to csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/Web.config diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/options b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/options new file mode 100644 index 000000000000..488c2bc3705f --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../../../resources/stubs/System.Web.cs diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.5.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.5.rst new file mode 100644 index 000000000000..9022a09444fc --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.5.rst @@ -0,0 +1,134 @@ +.. _codeql-cli-2.23.5: + +========================== +CodeQL 2.23.5 (2025-11-13) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__. + +Security Coverage +----------------- + +CodeQL 2.23.5 runs a total of 483 security queries when configured with the Default suite (covering 166 CWE). The Extended suite enables an additional 135 queries (covering 35 more CWE). 3 security queries have been added with this release. + +CodeQL CLI +---------- + +Breaking Changes +~~~~~~~~~~~~~~~~ + +* In order to make a :code:`@kind path-problem` query diff-informed, the :code:`getASelectedSourceLocation` and :code:`getASelectedSinkLocation` predicates in the dataflow configuration now need to be overridden to always return the location of the source/sink *in addition to* any other locations that are selected by the query. See the `QLdoc `__ for more details. + +Query Packs +----------- + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* the :code:`cs/web/missing-x-frame-options` query now correctly handles configuration nested in root :code:`` elements. + +Java/Kotlin +""""""""""" + +* Calls to :code:`String.matches` are now treated as sanitizers for the :code:`java/ssrf` query. + +Python +"""""" + +* The :code:`py/insecure-cookie` query has been split into multiple queries; with :code:`py/insecure-cookie` checking for cases in which :code:`Secure` flag is not set, :code:`py/client-exposed-cookie` checking for cases in which the :code:`HttpOnly` flag is not set, and the :code:`py/samesite-none` query checking for cases in which the :code:`SameSite` attribute is set to :code:`None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. + +Rust +"""" + +* The "Low Rust analysis quality" query (:code:`rust/diagnostic/database-quality`), used by the tool status page, has been extended with a measure of successful type inference. + +New Queries +~~~~~~~~~~~ + +Java/Kotlin +""""""""""" + +* The :code:`java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. +* Added a new query, :code:`java/escaping`, to detect values escaping from classes marked as :code:`@ThreadSafe`. +* Added a new query, :code:`java/not-threadsafe`, to detect data races in classes marked as :code:`@ThreadSafe`. +* Added a new query, :code:`java/safe-publication`, to detect unsafe publication in classes marked as :code:`@ThreadSafe`. + +Language Libraries +------------------ + +Breaking Changes +~~~~~~~~~~~~~~~~ + +Swift +""""" + +* The :code:`OpenedArchetypeType` class has been renamed as :code:`ExistentialArchetypeType`. +* The :code:`OtherAvailabilitySpec` class has been removed. Use :code:`AvailabilitySpec::isWildcard` instead. +* The :code:`PlatformVersionAvailabilitySpec` has been removed. Use :code:`AvailabilitySpec::getPlatform` and :code:`AvailabilitySpec::getVersion` instead. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for :code:`cs/inefficient-containskey` and :code:`cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: :code:`cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, :code:`cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, :code:`cs/dereferenced-value-may-be-null` has been changed from a :code:`path-problem` query to a :code:`problem` query, so paths are no longer reported for this query. + +Swift +""""" + +* Upgraded to allow analysis of Swift 6.2. +* Support for experimental Embedded Swift has been dropped. + +Rust +"""" + +* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. +* Added basic models for the :code:`actix-web` web framework. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* Added tracer support for macOS and Linux when the .NET CLI (:code:`dotnet`) directly invokes the C# compiler (:code:`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. +* The extraction of location information for source code entities has been updated to use star IDs (:code:`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. + +Rust +"""" + +* Added :code:`ExtractedFile::hasSemantics` and :code:`ExtractedFile::isSkippedByCompilation` predicates. +* Generalized some existing models to improve data flow. +* Added models for the :code:`mysql` and :code:`mysql_async` libraries. + +Deprecated APIs +~~~~~~~~~~~~~~~ + +C# +"" + +* The class :code:`AbstractValue` in the :code:`Guards` library has been deprecated and replaced with the class :code:`GuardValue`. + +New Features +~~~~~~~~~~~~ + +Python +"""""" + +* Initial support for incremental Python databases via :code:`codeql database create --overlay-base`\ /\ :code:`--overlay-changes`. + +Swift +""""" + +* Added AST nodes :code:`UsingDecl`, :code:`UnsafeExpr`, and :code:`InlineArrayType` that correspond to new nodes in Swift 6.2. +* Added new predicates :code:`isDistributedGet`, :code:`isRead2`, :code:`isModify2`, and :code:`isInit` to the :code:`Accessor` class that correspond to new accessors in Swift 6.2. +* Added a new predicate :code:`isApply` to the :code:`KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.6.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.6.rst new file mode 100644 index 000000000000..67fe1ed487f2 --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.6.rst @@ -0,0 +1,144 @@ +.. _codeql-cli-2.23.6: + +========================== +CodeQL 2.23.6 (2025-11-24) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__. + +Security Coverage +----------------- + +CodeQL 2.23.6 runs a total of 485 security queries when configured with the Default suite (covering 166 CWE). The Extended suite enables an additional 135 queries (covering 35 more CWE). 2 security queries have been added with this release. + +CodeQL CLI +---------- + +Breaking Changes +~~~~~~~~~~~~~~~~ + +* The LGTM results format for uploading to LGTM has been removed. + +Query Packs +----------- + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* An improvement to the Guards library for recognizing disjunctions means improved precision for :code:`cs/constant-condition`, :code:`cs/inefficient-containskey`, and :code:`cs/dereferenced-value-may-be-null`. The two former can have additional findings, and the latter will have fewer false positives. + +Rust +"""" + +* Taint flow barriers have been added to the :code:`rust/regex-injection`, :code:`rust/sql-injection` and :code:`rust/log-injection`, reducing the frequency of false positive results for these queries. + +New Queries +~~~~~~~~~~~ + +C# +"" + +* The :code:`cs/web/cookie-secure-not-set` and :code:`cs/web/cookie-httponly-not-set` queries have been promoted from experimental to the main query pack. + +Query Metadata Changes +~~~~~~~~~~~~~~~~~~~~~~ + +Java/Kotlin +""""""""""" + +* Reduced the :code:`security-severity` score of the :code:`java/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. +* Reduced the :code:`security-severity` score of the :code:`java/insecure-cookie` query from 5.0 to 4.0 to better reflect its impact. + +JavaScript/TypeScript +""""""""""""""""""""" + +* Increased the :code:`security-severity` score of the :code:`js/xss-through-dom` query from 6.1 to 7.8 to align with other XSS queries. +* Reduced the :code:`security-severity` score of the :code:`js/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. + +Python +"""""" + +* Reduced the :code:`security-severity` score of the :code:`py/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. + +Ruby +"""" + +* Reduced the :code:`security-severity` score of the :code:`rb/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. + +Language Libraries +------------------ + +Bug Fixes +~~~~~~~~~ + +C/C++ +""""" + +* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. + +Golang +"""""" + +* Some fixes relating to use of path transformers when extracting a database: + + * Fixed a problem where the path transformer would be ignored when extracting older codebases that predate the use of Go modules. + * The environment variable :code:`CODEQL_PATH_TRANSFORMER` is now recognized, in addition to :code:`SEMMLE_PATH_TRANSFORMER`. + * Fixed some cases where the extractor emitted paths without applying the path transformer. + +Breaking Changes +~~~~~~~~~~~~~~~~ + +Python +"""""" + +* The classes :code:`ControlFlowNode`, :code:`Expr`, and :code:`Module` no longer expose predicates that invoke the points-to analysis. To access these predicates, import the module :code:`LegacyPointsTo` and follow the instructions given therein. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Swift +""""" + +* Upgraded to allow analysis of Swift 6.2.1. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* Updated *roslyn* and *binlog* dependencies in the extractor, which may improve database and analysis quality. + +Rust +"""" + +* Added models for cookie methods in the :code:`poem` crate. + +Deprecated APIs +~~~~~~~~~~~~~~~ + +C# +"" + +* :code:`ControlFlowElement.controlsBlock` has been deprecated in favor of the Guards library. + +New Features +~~~~~~~~~~~~ + +C/C++ +""""" + +* New predicates :code:`getAnExpandedArgument` and :code:`getExpandedArgument` were added to the :code:`Compilation` class, yielding compilation arguments after expansion of response files. + +C# +"" + +* Initial support for incremental C# databases via :code:`codeql database create --overlay-base`\ /\ :code:`--overlay-changes`. diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index 4b3e1f5bb982..195a97820881 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/index.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/index.rst @@ -11,6 +11,8 @@ A list of queries for each suite and language `is available here `__ +- `Example queries for Rust `__ - `CodeQL library reference for Rust `__ diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index fb204bc4685e..8dcfd1a5dc0f 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -26,7 +26,7 @@ Python [9]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13",Not applicable,``.py`` Ruby [10]_,"up to 3.3",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" Rust [11]_,"Rust editions 2021 and 2024","Rust compiler","``.rs``, ``Cargo.toml``" - Swift [12]_ [13]_,"Swift 5.4-6.1","Swift compiler","``.swift``" + Swift [12]_ [13]_,"Swift 5.4-6.2","Swift compiler","``.swift``" TypeScript [14]_,"2.6-5.9",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" .. container:: footnote-group diff --git a/go/codeql-extractor.yml b/go/codeql-extractor.yml index af9fca0462f3..7a009fb2610f 100644 --- a/go/codeql-extractor.yml +++ b/go/codeql-extractor.yml @@ -21,6 +21,7 @@ file_types: extensions: - .go legacy_qltest_extraction: true +overlay_support_version: 20250626 options: extract_tests: title: Whether to include Go test files in the CodeQL database. diff --git a/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/go.dbscheme b/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/go.dbscheme new file mode 100644 index 000000000000..b3da71c3ac20 --- /dev/null +++ b/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/go.dbscheme @@ -0,0 +1,552 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string 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; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file 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 ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, int bound: @compositetype ref, + int parent: @typeparamparentobject ref, int idx: int ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/old.dbscheme b/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/old.dbscheme new file mode 100644 index 000000000000..b1341734d687 --- /dev/null +++ b/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/old.dbscheme @@ -0,0 +1,563 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string 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; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file 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 ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, int bound: @compositetype ref, + int parent: @typeparamparentobject ref, int idx: int ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/upgrade.properties b/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/upgrade.properties new file mode 100644 index 000000000000..1a7cdb0ad716 --- /dev/null +++ b/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/upgrade.properties @@ -0,0 +1,4 @@ +description: Add databaseMetadata and overlayChangedFiles relations +compatibility: full +databaseMetadata.rel: delete +overlayChangedFiles.rel: delete diff --git a/go/extractor/cli/go-autobuilder/BUILD.bazel b/go/extractor/cli/go-autobuilder/BUILD.bazel index 0c705d5b1944..003836b08742 100644 --- a/go/extractor/cli/go-autobuilder/BUILD.bazel +++ b/go/extractor/cli/go-autobuilder/BUILD.bazel @@ -12,6 +12,7 @@ go_library( "//go/extractor/autobuilder", "//go/extractor/diagnostics", "//go/extractor/project", + "//go/extractor/srcarchive", "//go/extractor/toolchain", "//go/extractor/util", ], diff --git a/go/extractor/cli/go-autobuilder/go-autobuilder.go b/go/extractor/cli/go-autobuilder/go-autobuilder.go index ae9a478c3674..756bd19b45e9 100644 --- a/go/extractor/cli/go-autobuilder/go-autobuilder.go +++ b/go/extractor/cli/go-autobuilder/go-autobuilder.go @@ -13,6 +13,7 @@ import ( "github.com/github/codeql-go/extractor/autobuilder" "github.com/github/codeql-go/extractor/diagnostics" "github.com/github/codeql-go/extractor/project" + "github.com/github/codeql-go/extractor/srcarchive" "github.com/github/codeql-go/extractor/toolchain" "github.com/github/codeql-go/extractor/util" ) @@ -273,7 +274,7 @@ func createPathTransformerFile(newdir string) *os.File { log.Fatalf("Failed to chdir into %s: %s\n", newdir, err.Error()) } - // set up SEMMLE_PATH_TRANSFORMER to ensure paths in the source archive and the snapshot + // set up CODEQL_PATH_TRANSFORMER to ensure paths in the source archive and the snapshot // match the original source location, not the location we moved it to pt, err := os.CreateTemp("", "path-transformer") if err != nil { @@ -283,7 +284,7 @@ func createPathTransformerFile(newdir string) *os.File { } // Writes the path transformer file -func writePathTransformerFile(pt *os.File, realSrc, root, newdir string) { +func writePathTransformerFile(pt *os.File, realSrc, newdir string) { _, err := pt.WriteString("#" + realSrc + "\n" + newdir + "//\n") if err != nil { log.Fatalf("Unable to write path transformer file: %s.", err.Error()) @@ -292,9 +293,9 @@ func writePathTransformerFile(pt *os.File, realSrc, root, newdir string) { if err != nil { log.Fatalf("Unable to close path transformer file: %s.", err.Error()) } - err = os.Setenv("SEMMLE_PATH_TRANSFORMER", pt.Name()) + err = os.Setenv("CODEQL_PATH_TRANSFORMER", pt.Name()) if err != nil { - log.Fatalf("Unable to set SEMMLE_PATH_TRANSFORMER environment variable: %s.\n", err.Error()) + log.Fatalf("Unable to set CODEQL_PATH_TRANSFORMER environment variable: %s.\n", err.Error()) } } @@ -447,7 +448,7 @@ func installDependencies(workspace project.GoWorkspace) { } // Run the extractor. -func extract(workspace project.GoWorkspace) bool { +func extract(workspace project.GoWorkspace, sourceRoot string) bool { extractor, err := util.GetExtractorPath() if err != nil { log.Fatalf("Could not determine path of extractor: %v.\n", err) @@ -458,6 +459,12 @@ func extract(workspace project.GoWorkspace) bool { extractorArgs = append(extractorArgs, workspace.ModMode.ArgsForGoVersion(toolchain.GetEnvGoSemVer())...) } + if util.IsOverlayExtraction() { + // When we are extracting an overlay, pass the source root to the extractor so that it knows + // how to resolve the relative paths in the list of changed files. + extractorArgs = append(extractorArgs, "--source-root", sourceRoot) + } + if len(workspace.Modules) == 0 { // There may be no modules if we are using e.g. Dep or Glide extractorArgs = append(extractorArgs, "./...") @@ -501,9 +508,6 @@ func installDependenciesAndBuild() { srcdir := getSourceDir() - // we set `SEMMLE_PATH_TRANSFORMER` ourselves in some cases, so blank it out first for consistency - os.Setenv("SEMMLE_PATH_TRANSFORMER", "") - // determine how to install dependencies and whether a GOPATH needs to be set up before // extraction workspaces := project.GetWorkspaceInfo(true) @@ -534,7 +538,21 @@ func installDependenciesAndBuild() { pt := createPathTransformerFile(paths.newdir) defer os.Remove(pt.Name()) - writePathTransformerFile(pt, paths.realSrc, paths.root, paths.newdir) + // We're about to create out own path transformer, so that paths containing the + // temporary GOPATH point to the right location. However, if there was already an + // incoming path transformer, the right location will be what _it_ wanted to transform + // paths to. + existingPathTransformer, err := srcarchive.LoadProjectLayoutFromEnv() + if err != nil { + log.Fatalf("Unable to load path transformer: %s.\n", err.Error()) + } + var realSrc string + if existingPathTransformer == nil { + realSrc = paths.realSrc + } else { + realSrc = existingPathTransformer.To + } + writePathTransformerFile(pt, realSrc, paths.newdir) setGopath(paths.root) } } @@ -575,6 +593,12 @@ func installDependenciesAndBuild() { buildWithCustomCommands(inst) } + // The autobuilder is invoked with its working directory set to the source directory. + sourceRoot, err := os.Getwd() + if err != nil { + log.Fatalf("Failed to get current working directory: %s\n", err.Error()) + } + // Attempt to extract all workspaces; we will tolerate individual extraction failures here for i, workspace := range workspaces { if workspace.ModMode == project.ModVendor { @@ -595,7 +619,7 @@ func installDependenciesAndBuild() { } } - workspaces[i].Extracted = extract(workspace) + workspaces[i].Extracted = extract(workspace, sourceRoot) if !workspaces[i].Extracted { unsuccessfulProjects = append(unsuccessfulProjects, workspace.BaseDir) @@ -620,6 +644,8 @@ func installDependenciesAndBuild() { } else { log.Printf("Success: extraction succeeded for all %d discovered project(s).\n", len(workspaces)) } + + util.WriteOverlayBaseMetadata() } func main() { diff --git a/go/extractor/cli/go-extractor/go-extractor.go b/go/extractor/cli/go-extractor/go-extractor.go index 72ab3291f3cc..d394d5fde40e 100644 --- a/go/extractor/cli/go-extractor/go-extractor.go +++ b/go/extractor/cli/go-extractor/go-extractor.go @@ -24,9 +24,10 @@ func usage() { // extractTests is set (a) if we were manually commanded to extract tests via the relevant // environment variable / extractor option, or (b) we're mimicking a `go test` command. -func parseFlags(args []string, mimic bool, extractTests bool) ([]string, []string, bool) { +func parseFlags(args []string, mimic bool, extractTests bool) ([]string, []string, bool, string) { i := 0 buildFlags := []string{} + var sourceRoot string for ; i < len(args) && strings.HasPrefix(args[i], "-"); i++ { if args[i] == "--" { i++ @@ -61,6 +62,18 @@ func parseFlags(args []string, mimic bool, extractTests bool) ([]string, []strin } else { log.Fatalf("--mimic requires an argument, e.g. --mimic go") } + case "--source-root": + // The extractor can be called by the autobuilder with the working directory set to + // the directory containing the workspace we're extracting, and this may be a + // subdirectory of the actual source root. This argument lets us resolve paths that + // are relative to that source root, e.g. for the list of overlay changed files. + if i+1 < len(args) { + i++ + sourceRoot = args[i] + log.Printf("Source root is %s", sourceRoot) + } else { + log.Fatalf("--source-root requires an argument, e.g. --source-root /path/to/root") + } } } @@ -93,14 +106,14 @@ func parseFlags(args []string, mimic bool, extractTests bool) ([]string, []strin cpuprofile = os.Getenv("CODEQL_EXTRACTOR_GO_CPU_PROFILE") memprofile = os.Getenv("CODEQL_EXTRACTOR_GO_MEM_PROFILE") - return buildFlags, args[i:], extractTests + return buildFlags, args[i:], extractTests, sourceRoot } func main() { util.SetLogLevel() extractTestsDefault := os.Getenv("CODEQL_EXTRACTOR_GO_OPTION_EXTRACT_TESTS") == "true" - buildFlags, patterns, extractTests := parseFlags(os.Args[1:], false, extractTestsDefault) + buildFlags, patterns, extractTests, sourceRoot := parseFlags(os.Args[1:], false, extractTestsDefault) if cpuprofile != "" { f, err := os.Create(cpuprofile) @@ -120,7 +133,7 @@ func main() { } log.Printf("Build flags: '%s'; patterns: '%s'\n", strings.Join(buildFlags, " "), strings.Join(patterns, " ")) - err := extractor.ExtractWithFlags(buildFlags, patterns, extractTests) + err := extractor.ExtractWithFlags(buildFlags, patterns, extractTests, sourceRoot) if err != nil { errString := err.Error() if strings.Contains(errString, "unexpected directory layout:") { diff --git a/go/extractor/dbscheme/tables.go b/go/extractor/dbscheme/tables.go index 665ecdcc240f..9c537fbaf89f 100644 --- a/go/extractor/dbscheme/tables.go +++ b/go/extractor/dbscheme/tables.go @@ -43,6 +43,17 @@ externalData( snapshotDate(unique date snapshotDate : date ref); sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); `) // Copied directly from the XML dbscheme diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index 67c127375847..314fb8a56c13 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -11,6 +11,7 @@ import ( "go/types" "io" "log" + "log/slog" "os" "path/filepath" "reflect" @@ -58,16 +59,11 @@ func init() { } } -// Extract extracts the packages specified by the given patterns -func Extract(patterns []string) error { - return ExtractWithFlags(nil, patterns, false) -} - // ExtractWithFlags extracts the packages specified by the given patterns and build flags -func ExtractWithFlags(buildFlags []string, patterns []string, extractTests bool) error { +func ExtractWithFlags(buildFlags []string, patterns []string, extractTests bool, sourceRoot string) error { startTime := time.Now() - extraction := NewExtraction(buildFlags, patterns) + extraction := NewExtraction(buildFlags, patterns, sourceRoot) defer extraction.StatWriter.Close() modEnabled := os.Getenv("GO111MODULE") != "off" @@ -323,16 +319,17 @@ func ExtractWithFlags(buildFlags []string, patterns []string, extractTests bool) type Extraction struct { // A lock for preventing concurrent writes to maps and the stat trap writer, as they are not // thread-safe - Lock sync.Mutex - LabelKey string - Label trap.Label - StatWriter *trap.Writer - WaitGroup sync.WaitGroup - GoroutineSem *semaphore - FdSem *semaphore - NextFileId int - FileInfo map[string]*FileInfo - SeenGoMods map[string]bool + Lock sync.Mutex + LabelKey string + Label trap.Label + StatWriter *trap.Writer + WaitGroup sync.WaitGroup + GoroutineSem *semaphore + FdSem *semaphore + NextFileId int + FileInfo map[string]*FileInfo + SeenGoMods map[string]bool + OverlayChanges map[string]bool } type FileInfo struct { @@ -367,7 +364,7 @@ func (extraction *Extraction) GetNextErr(path string) int { return res } -func NewExtraction(buildFlags []string, patterns []string) *Extraction { +func NewExtraction(buildFlags []string, patterns []string, sourceRoot string) *Extraction { hash := md5.New() io.WriteString(hash, "go") for _, buildFlag := range buildFlags { @@ -379,6 +376,22 @@ func NewExtraction(buildFlags []string, patterns []string) *Extraction { } sum := hash.Sum(nil) + overlayChangeList := util.GetOverlayChanges(sourceRoot) + var overlayChanges map[string]bool + if overlayChangeList == nil { + overlayChanges = nil + } else { + overlayChanges = make(map[string]bool) + for _, changedFilePath := range overlayChangeList { + absPath, err := filepath.Abs(changedFilePath) + if err != nil { + log.Fatalf("Error resolving absolute path of overlay change %s: %s", changedFilePath, err.Error()) + } + overlayChanges[absPath] = true + slog.Info("Overlay changed file", "path", absPath) + } + } + i := 0 var path string // split compilation files into directories to avoid filling a single directory with too many files @@ -438,10 +451,11 @@ func NewExtraction(buildFlags []string, patterns []string) *Extraction { FdSem: newSemaphore(100), // this semaphore is used to limit the number of goroutines spawned, so we // don't run into memory issues - GoroutineSem: newSemaphore(MaxGoRoutines), - NextFileId: 0, - FileInfo: make(map[string]*FileInfo), - SeenGoMods: make(map[string]bool), + GoroutineSem: newSemaphore(MaxGoRoutines), + NextFileId: 0, + FileInfo: make(map[string]*FileInfo), + SeenGoMods: make(map[string]bool), + OverlayChanges: overlayChanges, } } @@ -720,6 +734,16 @@ func (extraction *Extraction) extractFile(ast *ast.File, pkg *packages.Package) return nil } path := normalizedPath(ast, fset) + // If we're extracting an overlay, we want to skip extraction of files that haven't changed. + // Since some files may be outside the source directory (e.g. files preprocessed by cgo) we + // can't easily know if they have changed (or came from source files that changed), so we always + // extract a file if it's not in the package directory. + if extraction.OverlayChanges != nil && + !extraction.OverlayChanges[path] && + strings.HasPrefix(path+string(filepath.Separator), pkg.Dir) { + slog.Info("Skipping unchanged file in overlay extraction", "path", path) + return nil + } extraction.FdSem.acquire(3) diff --git a/go/extractor/go.mod b/go/extractor/go.mod index e8cdde572e17..e581fdb652ca 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -9,8 +9,8 @@ toolchain go1.25.0 // when adding or removing dependencies, run // bazel mod tidy require ( - golang.org/x/mod v0.29.0 - golang.org/x/tools v0.38.0 + golang.org/x/mod v0.30.0 + golang.org/x/tools v0.39.0 ) -require golang.org/x/sync v0.17.0 // indirect +require golang.org/x/sync v0.18.0 // indirect diff --git a/go/extractor/go.sum b/go/extractor/go.sum index 9b34f09461c1..6579b4828481 100644 --- a/go/extractor/go.sum +++ b/go/extractor/go.sum @@ -1,8 +1,8 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= -golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= diff --git a/go/extractor/gomodextractor.go b/go/extractor/gomodextractor.go index be52af59760b..8dce96b6e6a7 100644 --- a/go/extractor/gomodextractor.go +++ b/go/extractor/gomodextractor.go @@ -20,6 +20,11 @@ func (extraction *Extraction) extractGoMod(path string) error { path = normPath } + if extraction.OverlayChanges != nil && !extraction.OverlayChanges[path] { + // This go.mod did not change since the base was extracted + return nil + } + extraction.Lock.Lock() if extraction.SeenGoMods[path] { extraction.Lock.Unlock() diff --git a/go/extractor/srcarchive/BUILD.bazel b/go/extractor/srcarchive/BUILD.bazel index e72e2e7ca08a..6d8776abce7b 100644 --- a/go/extractor/srcarchive/BUILD.bazel +++ b/go/extractor/srcarchive/BUILD.bazel @@ -10,6 +10,7 @@ go_library( ], importpath = "github.com/github/codeql-go/extractor/srcarchive", visibility = ["//visibility:public"], + deps = ["//go/extractor/util"], ) go_test( diff --git a/go/extractor/srcarchive/projectlayout.go b/go/extractor/srcarchive/projectlayout.go index 6301755ef8ae..0a628f384247 100644 --- a/go/extractor/srcarchive/projectlayout.go +++ b/go/extractor/srcarchive/projectlayout.go @@ -6,6 +6,8 @@ import ( "fmt" "os" "strings" + + "github.com/github/codeql-go/extractor/util" ) // ProjectLayout describes a very simple project layout rewriting paths starting @@ -16,7 +18,7 @@ import ( // # to // from// type ProjectLayout struct { - from, to string + From, To string } // normaliseSlashes adds an initial slash to `path` if there isn't one, and trims @@ -28,6 +30,25 @@ func normaliseSlashes(path string) string { return strings.TrimSuffix(path, "/") } +// LoadProjectLayoutFromEnv loads a project layout from the file referenced by the +// {CODEQL,SEMMLE}_PATH_TRANSFORMER environment variable. If neither env var is set, returns nil. If +// the file cannot be read or does not have the right format, it returns an error. +func LoadProjectLayoutFromEnv() (*ProjectLayout, error) { + pt := util.Getenv("CODEQL_PATH_TRANSFORMER", "SEMMLE_PATH_TRANSFORMER") + if pt == "" { + return nil, nil + } + ptf, err := os.Open(pt) + if err != nil { + return nil, err + } + projLayout, err := LoadProjectLayout(ptf) + if err != nil { + return nil, err + } + return projLayout, nil +} + // LoadProjectLayout loads a project layout from the given file, returning an error // if the file does not have the right format func LoadProjectLayout(file *os.File) (*ProjectLayout, error) { @@ -41,7 +62,7 @@ func LoadProjectLayout(file *os.File) (*ProjectLayout, error) { if !strings.HasPrefix(line, "#") { return nil, fmt.Errorf("first line of project layout should start with #, but got %s", line) } - res.to = normaliseSlashes(strings.TrimSpace(strings.TrimPrefix(line, "#"))) + res.To = normaliseSlashes(strings.TrimSpace(strings.TrimPrefix(line, "#"))) if !scanner.Scan() { return nil, errors.New("empty section in project-layout file") @@ -57,7 +78,7 @@ func LoadProjectLayout(file *os.File) (*ProjectLayout, error) { if strings.HasPrefix(line, "-") || strings.Contains(line, "*") || strings.Contains(line, "//") { return nil, errors.New("unsupported project-layout feature") } - res.from = normaliseSlashes(line) + res.From = normaliseSlashes(line) for scanner.Scan() { if strings.TrimSpace(scanner.Text()) != "" { @@ -71,11 +92,11 @@ func LoadProjectLayout(file *os.File) (*ProjectLayout, error) { // transformString transforms `str` as specified by the project layout: if it starts with the `from` // prefix, that prefix is relaced by `to`; otherwise the string is returned unchanged func (p *ProjectLayout) transformString(str string) string { - if str == p.from { - return p.to + if str == p.From { + return p.To } - if strings.HasPrefix(str, p.from+"/") { - return p.to + "/" + str[len(p.from)+1:] + if strings.HasPrefix(str, p.From+"/") { + return p.To + "/" + str[len(p.From)+1:] } return str } diff --git a/go/extractor/srcarchive/projectlayout_test.go b/go/extractor/srcarchive/projectlayout_test.go index 8fb17607cae4..507ee183d9ac 100644 --- a/go/extractor/srcarchive/projectlayout_test.go +++ b/go/extractor/srcarchive/projectlayout_test.go @@ -28,6 +28,32 @@ func mkProjectLayout(projectLayoutSource string, t *testing.T) (*ProjectLayout, return LoadProjectLayout(pt) } +func mkProjectLayoutFromEnv(projectLayoutSource string, t *testing.T) (*ProjectLayout, error) { + pt, err := os.CreateTemp("", "path-transformer-from-env") + if err != nil { + t.Fatalf("Unable to create temporary file for project layout: %s", err.Error()) + } + defer os.Remove(pt.Name()) + _, err = pt.WriteString(projectLayoutSource) + if err != nil { + t.Fatalf("Unable to write to temporary file for project layout: %s", err.Error()) + } + err = pt.Close() + if err != nil { + t.Fatalf("Unable to close path transformer file: %s.", err.Error()) + } + + pt, err = os.Open(pt.Name()) + if err != nil { + t.Fatalf("Unable to open path transformer file: %s.", err.Error()) + } + + os.Setenv("CODEQL_PATH_TRANSFORMER", pt.Name()) + defer os.Unsetenv("CODEQL_PATH_TRANSFORMER") + + return LoadProjectLayoutFromEnv() +} + func testTransformation(projectLayout *ProjectLayout, t *testing.T, path string, expected string) { actual := projectLayout.Transform(path) if actual != expected { @@ -35,16 +61,12 @@ func testTransformation(projectLayout *ProjectLayout, t *testing.T, path string, } } -func TestValidProjectLayout(t *testing.T) { - p, err := mkProjectLayout(` +const validProjectLayoutSource = ` # /opt/src /opt/src/root/src/org/repo// -`, t) - - if err != nil { - t.Fatalf("Error loading project layout: %s", err.Error()) - } +` +func testTransformationsForValidProjectLayout(p *ProjectLayout, t *testing.T) { testTransformation(p, t, "/opt/src/root/src/org/repo", "/opt/src") testTransformation(p, t, "/opt/src/root/src/org/repo/", "/opt/src/") testTransformation(p, t, "/opt/src/root/src/org/repo/main.go", "/opt/src/main.go") @@ -53,6 +75,26 @@ func TestValidProjectLayout(t *testing.T) { testTransformation(p, t, "opt/src/root/src/org/repo", "opt/src/root/src/org/repo") } +func TestValidProjectLayout(t *testing.T) { + p, err := mkProjectLayout(validProjectLayoutSource, t) + + if err != nil { + t.Fatalf("Error loading project layout: %s", err.Error()) + } + + testTransformationsForValidProjectLayout(p, t) +} + +func TestValidProjectLayoutFromEnv(t *testing.T) { + p, err := mkProjectLayoutFromEnv(validProjectLayoutSource, t) + + if err != nil { + t.Fatalf("Error loading project layout: %s", err.Error()) + } + + testTransformationsForValidProjectLayout(p, t) +} + func TestWindowsPaths(t *testing.T) { p, err := mkProjectLayout(` # /c:/virtual diff --git a/go/extractor/srcarchive/srcarchive.go b/go/extractor/srcarchive/srcarchive.go index ee9aea43064c..3f4c1d1a90d2 100644 --- a/go/extractor/srcarchive/srcarchive.go +++ b/go/extractor/srcarchive/srcarchive.go @@ -4,6 +4,7 @@ import ( "errors" "io" "log" + "log/slog" "os" "path/filepath" "strings" @@ -12,16 +13,14 @@ import ( var pathTransformer *ProjectLayout func init() { - pt := os.Getenv("SEMMLE_PATH_TRANSFORMER") - if pt != "" { - ptf, err := os.Open(pt) - if err != nil { - log.Fatalf("Unable to open path transformer %s: %s.\n", pt, err.Error()) - } - pathTransformer, err = LoadProjectLayout(ptf) - if err != nil { - log.Fatalf("Unable to initialize path transformer: %s.\n", err.Error()) + pt, err := LoadProjectLayoutFromEnv() + if err == nil { + pathTransformer = pt + if pathTransformer != nil { + slog.Info("Loaded path transformer", "from", pathTransformer.From, "to", pathTransformer.To) } + } else { + log.Fatalf("Unable to load path transformer: %s.\n", err.Error()) } } @@ -69,7 +68,7 @@ func srcArchive() (string, error) { return srcArchive, nil } -// TransformPath applies the transformations specified by `SEMMLE_PATH_TRANSFORMER` (if any) to the +// TransformPath applies the transformations specified by `CODEQL_PATH_TRANSFORMER` (if any) to the // given path func TransformPath(path string) string { if pathTransformer != nil { diff --git a/go/extractor/trap/labels.go b/go/extractor/trap/labels.go index 2822da61ff14..473e2e761f2e 100644 --- a/go/extractor/trap/labels.go +++ b/go/extractor/trap/labels.go @@ -3,7 +3,9 @@ package trap import ( "fmt" "go/types" + "path/filepath" + "github.com/github/codeql-go/extractor/srcarchive" "github.com/github/codeql-go/extractor/util" ) @@ -74,7 +76,7 @@ func (l *Labeler) FileLabel() Label { // FileLabelFor returns the label for the file for which the trap writer `tw` is associated func (l *Labeler) FileLabelFor(path string) Label { - return l.GlobalID(util.EscapeTrapSpecialChars(path) + ";sourcefile") + return l.GlobalID(util.EscapeTrapSpecialChars(filepath.ToSlash(srcarchive.TransformPath(path))) + ";sourcefile") } // LocalID associates a label with the given AST node `nd` and returns it diff --git a/go/extractor/util/BUILD.bazel b/go/extractor/util/BUILD.bazel index b8f005378aa2..ee090607ced5 100644 --- a/go/extractor/util/BUILD.bazel +++ b/go/extractor/util/BUILD.bazel @@ -7,6 +7,7 @@ go_library( srcs = [ "extractvendordirs.go", "logging.go", + "overlays.go", "registryproxy.go", "semver.go", "util.go", diff --git a/go/extractor/util/overlays.go b/go/extractor/util/overlays.go new file mode 100644 index 000000000000..6a5c3760549a --- /dev/null +++ b/go/extractor/util/overlays.go @@ -0,0 +1,70 @@ +package util + +import ( + "encoding/json" + "log" + "os" + "path/filepath" +) + +func IsOverlayExtraction() bool { + _, present := os.LookupEnv("CODEQL_EXTRACTOR_GO_OVERLAY_METADATA_IN") + return present +} + +// If the relevant environment variable is set, indicating that we are extracting an overlay +// database, GetOverlayChanges returns the list of relative paths of files that have changed (or +// been deleted). Otherwise, it returns `nil`. +func GetOverlayChanges(sourceRoot string) []string { + if overlayChangesJsonPath, present := os.LookupEnv("CODEQL_EXTRACTOR_GO_OVERLAY_CHANGES"); present { + log.Printf("Reading overlay changes from: %s", overlayChangesJsonPath) + + file, err := os.Open(overlayChangesJsonPath) + if err != nil { + log.Fatalf("Failed to open overlay changes JSON file: %s", err) + } + defer file.Close() + + var overlayData struct { + Changes []string `json:"changes"` + } + + decoder := json.NewDecoder(file) + if err := decoder.Decode(&overlayData); err != nil { + log.Fatalf("Failed to decode overlay changes JSON file: %s", err) + } + + absPaths := make([]string, 0, len(overlayData.Changes)) + if sourceRoot == "" { + // This shouldn't happen, because it implies the extractor was invoked in some way other + // than from the autobuilder. However, we'll only attempt to build an overlay if there + // exists an overlay _base_, and only the autobuilder writes the metadata file that + // ensures a database is created as an overlay-base. + log.Fatalf("Extractor is running in overlay mode, but --source-root was not provided") + } + for _, relPath := range overlayData.Changes { + absPaths = append(absPaths, filepath.Clean(sourceRoot+"/"+relPath)) + } + + return absPaths + } else { + return nil + } +} + +// WriteOverlayBaseMetadata creates an empty metadata file if we are extracting an overlay base; +// otherwise, it does nothing. +func WriteOverlayBaseMetadata() { + if metadataPath, present := os.LookupEnv("CODEQL_EXTRACTOR_GO_OVERLAY_BASE_METADATA_OUT"); present { + log.Printf("Writing overlay base metadata to: %s", metadataPath) + + // In principle, we could store some metadata here and read it back when extracting the + // overlay. For now, we don't need to store anything, but the CLI still requires us to write + // something, so just create an empty file. + file, err := os.Create(metadataPath) + if err != nil { + log.Fatalf("Failed to create overlay base metadata file: %s", err) + } + file.Close() + } +} diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index 870695d684ce..002730472533 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.0.38 + +No user-facing changes. + +## 1.0.37 + +No user-facing changes. + +## 1.0.36 + +No user-facing changes. + +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.35.md b/go/ql/consistency-queries/change-notes/released/1.0.35.md new file mode 100644 index 000000000000..c539ed2d3b13 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.36.md b/go/ql/consistency-queries/change-notes/released/1.0.36.md new file mode 100644 index 000000000000..6cefe97d8b80 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.36.md @@ -0,0 +1,3 @@ +## 1.0.36 + +No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.37.md b/go/ql/consistency-queries/change-notes/released/1.0.37.md new file mode 100644 index 000000000000..505bacf104d6 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.37.md @@ -0,0 +1,3 @@ +## 1.0.37 + +No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.38.md b/go/ql/consistency-queries/change-notes/released/1.0.38.md new file mode 100644 index 000000000000..2c984549c5fb --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.38.md @@ -0,0 +1,3 @@ +## 1.0.38 + +No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index b736654032cf..b14e9763a8d4 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.38 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index f8a661692dc2..5329a680c75d 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 1.0.34 +version: 1.0.38 groups: - go - queries diff --git a/go/ql/integration-tests/query-suite/go-code-scanning.qls.expected b/go/ql/integration-tests/query-suite/go-code-scanning.qls.expected index 20fcacbc3896..4e58a49e12d3 100644 --- a/go/ql/integration-tests/query-suite/go-code-scanning.qls.expected +++ b/go/ql/integration-tests/query-suite/go-code-scanning.qls.expected @@ -12,18 +12,22 @@ ql/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql ql/go/ql/src/Security/CWE-079/ReflectedXss.ql ql/go/ql/src/Security/CWE-089/SqlInjection.ql ql/go/ql/src/Security/CWE-089/StringBreak.ql +ql/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql ql/go/ql/src/Security/CWE-190/AllocationSizeOverflow.ql ql/go/ql/src/Security/CWE-209/StackTraceExposure.ql ql/go/ql/src/Security/CWE-295/DisabledCertificateCheck.ql ql/go/ql/src/Security/CWE-312/CleartextLogging.ql ql/go/ql/src/Security/CWE-322/InsecureHostKeyCallback.ql ql/go/ql/src/Security/CWE-326/InsufficientKeySize.ql +ql/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql ql/go/ql/src/Security/CWE-327/InsecureTLS.ql +ql/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql ql/go/ql/src/Security/CWE-338/InsecureRandomness.ql ql/go/ql/src/Security/CWE-347/MissingJwtSignatureCheck.ql ql/go/ql/src/Security/CWE-352/ConstantOauth2State.ql ql/go/ql/src/Security/CWE-601/BadRedirectCheck.ql ql/go/ql/src/Security/CWE-601/OpenUrlRedirect.ql +ql/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql ql/go/ql/src/Security/CWE-640/EmailInjection.ql ql/go/ql/src/Security/CWE-643/XPathInjection.ql ql/go/ql/src/Security/CWE-681/IncorrectIntegerConversionQuery.ql diff --git a/go/ql/integration-tests/query-suite/go-security-and-quality.qls.expected b/go/ql/integration-tests/query-suite/go-security-and-quality.qls.expected index ee0ec8f42ba7..536242560904 100644 --- a/go/ql/integration-tests/query-suite/go-security-and-quality.qls.expected +++ b/go/ql/integration-tests/query-suite/go-security-and-quality.qls.expected @@ -34,6 +34,7 @@ ql/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql ql/go/ql/src/Security/CWE-079/ReflectedXss.ql ql/go/ql/src/Security/CWE-089/SqlInjection.ql ql/go/ql/src/Security/CWE-089/StringBreak.ql +ql/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql ql/go/ql/src/Security/CWE-117/LogInjection.ql ql/go/ql/src/Security/CWE-190/AllocationSizeOverflow.ql ql/go/ql/src/Security/CWE-209/StackTraceExposure.ql @@ -41,12 +42,15 @@ ql/go/ql/src/Security/CWE-295/DisabledCertificateCheck.ql ql/go/ql/src/Security/CWE-312/CleartextLogging.ql ql/go/ql/src/Security/CWE-322/InsecureHostKeyCallback.ql ql/go/ql/src/Security/CWE-326/InsufficientKeySize.ql +ql/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql ql/go/ql/src/Security/CWE-327/InsecureTLS.ql +ql/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql ql/go/ql/src/Security/CWE-338/InsecureRandomness.ql ql/go/ql/src/Security/CWE-347/MissingJwtSignatureCheck.ql ql/go/ql/src/Security/CWE-352/ConstantOauth2State.ql ql/go/ql/src/Security/CWE-601/BadRedirectCheck.ql ql/go/ql/src/Security/CWE-601/OpenUrlRedirect.ql +ql/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql ql/go/ql/src/Security/CWE-640/EmailInjection.ql ql/go/ql/src/Security/CWE-643/XPathInjection.ql ql/go/ql/src/Security/CWE-681/IncorrectIntegerConversionQuery.ql diff --git a/go/ql/integration-tests/query-suite/go-security-extended.qls.expected b/go/ql/integration-tests/query-suite/go-security-extended.qls.expected index 9116f7b7ebf6..97f0937346af 100644 --- a/go/ql/integration-tests/query-suite/go-security-extended.qls.expected +++ b/go/ql/integration-tests/query-suite/go-security-extended.qls.expected @@ -12,6 +12,7 @@ ql/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql ql/go/ql/src/Security/CWE-079/ReflectedXss.ql ql/go/ql/src/Security/CWE-089/SqlInjection.ql ql/go/ql/src/Security/CWE-089/StringBreak.ql +ql/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql ql/go/ql/src/Security/CWE-117/LogInjection.ql ql/go/ql/src/Security/CWE-190/AllocationSizeOverflow.ql ql/go/ql/src/Security/CWE-209/StackTraceExposure.ql @@ -19,12 +20,15 @@ ql/go/ql/src/Security/CWE-295/DisabledCertificateCheck.ql ql/go/ql/src/Security/CWE-312/CleartextLogging.ql ql/go/ql/src/Security/CWE-322/InsecureHostKeyCallback.ql ql/go/ql/src/Security/CWE-326/InsufficientKeySize.ql +ql/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql ql/go/ql/src/Security/CWE-327/InsecureTLS.ql +ql/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql ql/go/ql/src/Security/CWE-338/InsecureRandomness.ql ql/go/ql/src/Security/CWE-347/MissingJwtSignatureCheck.ql ql/go/ql/src/Security/CWE-352/ConstantOauth2State.ql ql/go/ql/src/Security/CWE-601/BadRedirectCheck.ql ql/go/ql/src/Security/CWE-601/OpenUrlRedirect.ql +ql/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql ql/go/ql/src/Security/CWE-640/EmailInjection.ql ql/go/ql/src/Security/CWE-643/XPathInjection.ql ql/go/ql/src/Security/CWE-681/IncorrectIntegerConversionQuery.ql diff --git a/go/ql/integration-tests/query-suite/not_included_in_qls.expected b/go/ql/integration-tests/query-suite/not_included_in_qls.expected index 3b79e47da44f..937757425006 100644 --- a/go/ql/integration-tests/query-suite/not_included_in_qls.expected +++ b/go/ql/integration-tests/query-suite/not_included_in_qls.expected @@ -9,12 +9,10 @@ ql/go/ql/src/Security/CWE-079/StoredXss.ql ql/go/ql/src/Security/CWE-798/HardcodedCredentials.ql ql/go/ql/src/definitions.ql ql/go/ql/src/experimental/CWE-090/LDAPInjection.ql -ql/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.ql ql/go/ql/src/experimental/CWE-203/Timing.ql ql/go/ql/src/experimental/CWE-285/PamAuthBypass.ql ql/go/ql/src/experimental/CWE-287/ImproperLdapAuth.ql ql/go/ql/src/experimental/CWE-321-V2/HardCodedKeys.ql -ql/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithm.ql ql/go/ql/src/experimental/CWE-369/DivideByZero.ql ql/go/ql/src/experimental/CWE-400/DatabaseCallInLoop.ql ql/go/ql/src/experimental/CWE-522-DecompressionBombs/DecompressionBombs.ql diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index e2d2a71f6bd0..5f0fda7c3e6c 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,24 @@ +## 5.0.5 + +No user-facing changes. + +## 5.0.4 + +No user-facing changes. + +## 5.0.3 + +No user-facing changes. + +## 5.0.2 + +### Bug Fixes + +* Some fixes relating to use of path transformers when extracting a database: + * Fixed a problem where the path transformer would be ignored when extracting older codebases that predate the use of Go modules. + * The environment variable `CODEQL_PATH_TRANSFORMER` is now recognized, in addition to `SEMMLE_PATH_TRANSFORMER`. + * Fixed some cases where the extractor emitted paths without applying the path transformer. + ## 5.0.1 No user-facing changes. diff --git a/go/ql/lib/change-notes/released/5.0.2.md b/go/ql/lib/change-notes/released/5.0.2.md new file mode 100644 index 000000000000..1c95b433daca --- /dev/null +++ b/go/ql/lib/change-notes/released/5.0.2.md @@ -0,0 +1,8 @@ +## 5.0.2 + +### Bug Fixes + +* Some fixes relating to use of path transformers when extracting a database: + * Fixed a problem where the path transformer would be ignored when extracting older codebases that predate the use of Go modules. + * The environment variable `CODEQL_PATH_TRANSFORMER` is now recognized, in addition to `SEMMLE_PATH_TRANSFORMER`. + * Fixed some cases where the extractor emitted paths without applying the path transformer. diff --git a/go/ql/lib/change-notes/released/5.0.3.md b/go/ql/lib/change-notes/released/5.0.3.md new file mode 100644 index 000000000000..57074925279e --- /dev/null +++ b/go/ql/lib/change-notes/released/5.0.3.md @@ -0,0 +1,3 @@ +## 5.0.3 + +No user-facing changes. diff --git a/go/ql/lib/change-notes/released/5.0.4.md b/go/ql/lib/change-notes/released/5.0.4.md new file mode 100644 index 000000000000..5c625c33d52f --- /dev/null +++ b/go/ql/lib/change-notes/released/5.0.4.md @@ -0,0 +1,3 @@ +## 5.0.4 + +No user-facing changes. diff --git a/go/ql/lib/change-notes/released/5.0.5.md b/go/ql/lib/change-notes/released/5.0.5.md new file mode 100644 index 000000000000..be08f8736365 --- /dev/null +++ b/go/ql/lib/change-notes/released/5.0.5.md @@ -0,0 +1,3 @@ +## 5.0.5 + +No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index ae7df5e18b78..02e5f00fa9e4 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.0.1 +lastReleaseVersion: 5.0.5 diff --git a/go/ql/lib/go.dbscheme b/go/ql/lib/go.dbscheme index b3da71c3ac20..b1341734d687 100644 --- a/go/ql/lib/go.dbscheme +++ b/go/ql/lib/go.dbscheme @@ -36,6 +36,17 @@ snapshotDate(unique date snapshotDate : date ref); sourceLocationPrefix(varchar(900) prefix : string ref); +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + /* * XML Files diff --git a/go/ql/lib/go.qll b/go/ql/lib/go.qll index 16f2f1702faa..1b8bf94a0d2e 100644 --- a/go/ql/lib/go.qll +++ b/go/ql/lib/go.qll @@ -33,6 +33,7 @@ import semmle.go.frameworks.AwsLambda import semmle.go.frameworks.Beego import semmle.go.frameworks.BeegoOrm import semmle.go.frameworks.Bun +import semmle.go.frameworks.CryptoLibraries import semmle.go.frameworks.RsCors import semmle.go.frameworks.Couchbase import semmle.go.frameworks.Echo @@ -40,6 +41,7 @@ import semmle.go.frameworks.ElazarlGoproxy import semmle.go.frameworks.Email import semmle.go.frameworks.Encoding import semmle.go.frameworks.Fasthttp +import semmle.go.frameworks.Gin import semmle.go.frameworks.GinCors import semmle.go.frameworks.Glog import semmle.go.frameworks.GoJose diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index fba4fc5f83e0..077d88b4ab72 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,11 +1,12 @@ name: codeql/go-all -version: 5.0.1 +version: 5.0.5 groups: go dbscheme: go.dbscheme extractor: go library: true upgrades: upgrades dependencies: + codeql/concepts: ${workspace} codeql/dataflow: ${workspace} codeql/mad: ${workspace} codeql/threat-models: ${workspace} @@ -14,3 +15,4 @@ dependencies: dataExtensions: - ext/*.model.yml warnOnImplicitThis: true +compileForOverlayEval: true diff --git a/go/ql/lib/semmle/go/Concepts.qll b/go/ql/lib/semmle/go/Concepts.qll index 1931f16871ab..acb16b62d077 100644 --- a/go/ql/lib/semmle/go/Concepts.qll +++ b/go/ql/lib/semmle/go/Concepts.qll @@ -8,6 +8,10 @@ import go import semmle.go.dataflow.FunctionInputsAndOutputs import semmle.go.concepts.HTTP import semmle.go.concepts.GeneratedFile +private import codeql.concepts.ConceptsShared +private import semmle.go.dataflow.internal.DataFlowImplSpecific + +private module ConceptsShared = ConceptsMake; /** * A data-flow node that executes an operating system command, @@ -505,3 +509,98 @@ module UnmarshalingFunction { abstract string getFormat(); } } + +/** + * Provides models for cryptographic things. + */ +module Cryptography { + private import ConceptsShared::Cryptography as SC + + /** + * A data-flow node that is an application of a cryptographic algorithm. For example, + * encryption, decryption, signature-validation. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `CryptographicOperation::Range` instead. + */ + class CryptographicOperation extends SC::CryptographicOperation { } + + class EncryptionAlgorithm = SC::EncryptionAlgorithm; + + class HashingAlgorithm = SC::HashingAlgorithm; + + class PasswordHashingAlgorithm = SC::PasswordHashingAlgorithm; + + module CryptographicOperation = SC::CryptographicOperation; + + class BlockMode = SC::BlockMode; + + class CryptographicAlgorithm = SC::CryptographicAlgorithm; + + /** A data flow node that initializes a hash algorithm. */ + abstract class HashAlgorithmInit extends DataFlow::Node { + /** Gets the hash algorithm being initialized. */ + abstract HashingAlgorithm getAlgorithm(); + } + + /** A data flow node that is an application of a hash algorithm. */ + abstract class HashOperation extends CryptographicOperation::Range { + override BlockMode getBlockMode() { none() } + } + + /** A data flow node that initializes an encryption algorithm. */ + abstract class EncryptionAlgorithmInit extends DataFlow::Node { + /** Gets the encryption algorithm being initialized. */ + abstract EncryptionAlgorithm getAlgorithm(); + } + + /** + * A data flow node that initializes a block cipher mode of operation, and + * may also propagate taint for encryption algorithms. + */ + abstract class BlockModeInit extends DataFlow::CallNode { + /** Gets the block cipher mode of operation being initialized. */ + abstract BlockMode getMode(); + + /** Gets a step propagating the encryption algorithm through this call. */ + abstract predicate step(DataFlow::Node node1, DataFlow::Node node2); + } + + /** + * A data flow node that is an application of an encryption algorithm, where + * the encryption algorithm and the block cipher mode of operation (if there + * is one) have been initialized separately. + */ + abstract class EncryptionOperation extends CryptographicOperation::Range { + DataFlow::Node encryptionFlowTarget; + DataFlow::Node inputNode; + + override DataFlow::Node getInitialization() { + EncryptionFlow::flow(result, encryptionFlowTarget) + } + + override EncryptionAlgorithm getAlgorithm() { + result = this.getInitialization().(EncryptionAlgorithmInit).getAlgorithm() + } + + override DataFlow::Node getAnInput() { result = inputNode } + + override BlockMode getBlockMode() { + result = this.getInitialization().(BlockModeInit).getMode() + } + } + + /** + * An `EncryptionOperation` which is a method call where the encryption + * algorithm and block cipher mode of operation (if there is one) flow to the + * receiver and the input is an argument. + */ + abstract class EncryptionMethodCall extends EncryptionOperation instanceof DataFlow::CallNode { + int inputArg; + + EncryptionMethodCall() { + encryptionFlowTarget = super.getReceiver() and + inputNode = super.getArgument(inputArg) + } + } +} diff --git a/go/ql/lib/semmle/go/Locations.qll b/go/ql/lib/semmle/go/Locations.qll index 817fea56f007..7503421c0ff2 100644 --- a/go/ql/lib/semmle/go/Locations.qll +++ b/go/ql/lib/semmle/go/Locations.qll @@ -1,6 +1,7 @@ /** Provides classes for working with locations and program elements that have locations. */ import go +private import semmle.go.Overlay /** * A location as given by a file, a start line, a start column, diff --git a/go/ql/lib/semmle/go/Overlay.qll b/go/ql/lib/semmle/go/Overlay.qll new file mode 100644 index 000000000000..f4aa6b88a557 --- /dev/null +++ b/go/ql/lib/semmle/go/Overlay.qll @@ -0,0 +1,56 @@ +/** + * Defines entity discard predicates for Go overlay analysis. + */ +overlay[local] +module; + +private import internal.OverlayXml + +/** + * A local predicate that always holds for the overlay variant and never holds for the base variant. + * This is used to define local predicates that behave differently for the base and overlay variant. + */ +private predicate isOverlay() { databaseMetadata("isOverlay", "true") } + +/** Gets the file containing the given `locatable`. */ +private @file getFile(@locatable locatable) { + exists(@location_default location | has_location(locatable, location) | + locations_default(location, result, _, _, _, _) + ) +} + +/** Holds if the `locatable` is in the `file` and is part of the overlay base database. */ +private predicate discardableLocatable(@file file, @locatable locatable) { + not isOverlay() and + file = getFile(locatable) and + // Avoid discarding @file entities, since they are shared between base and overlay. + not locatable instanceof @file +} + +/** + * Holds if the given `path` is for a file in the base database whose entities should be discarded. + */ +bindingset[path] +private predicate discardableFile(string path) { + isOverlay() and + ( + overlayChangedFiles(path) + or + // The extractor unconditionally extracts files outside of the source directory (these are + // typically cgo-processed source files), so all entities in such files should be discarded. + not exists(string srcLoc | sourceLocationPrefix(srcLoc) | + path.substring(0, srcLoc.length()) = srcLoc + ) + ) +} + +/** + * Holds if the given `locatable` should be discarded, because it is part of the overlay base and is + * in a file that was also extracted as part of the overlay database. + */ +overlay[discard_entity] +private predicate discardLocatable(@locatable locatable) { + exists(@file file, string path | files(file, path) | + discardableLocatable(file, locatable) and discardableFile(path) + ) +} diff --git a/go/ql/lib/semmle/go/concepts/HTTP.qll b/go/ql/lib/semmle/go/concepts/HTTP.qll index 9bf5b6a7ad84..479cc19bfcc6 100644 --- a/go/ql/lib/semmle/go/concepts/HTTP.qll +++ b/go/ql/lib/semmle/go/concepts/HTTP.qll @@ -380,4 +380,96 @@ module Http { /** Gets a node that is used in a check that is tested before this handler is run. */ predicate guardedBy(DataFlow::Node check) { super.guardedBy(check) } } + + /** Provides a class for modeling new HTTP response cookie write APIs. */ + module CookieWrite { + /** + * A write of an HTTP Cookie to an HTTP response. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `HTTP::CookieWrite` instead. + */ + abstract class Range extends DataFlow::Node { + /** Gets the name of the cookie written. */ + abstract DataFlow::Node getName(); + + /** Gets the value of the cookie written. */ + abstract DataFlow::Node getValue(); + + /** Gets the `Secure` attribute of the cookie written. */ + abstract DataFlow::Node getSecure(); + + /** Gets the `HttpOnly` attribute of the cookie written. */ + abstract DataFlow::Node getHttpOnly(); + } + } + + /** + * A write of an HTTP Cookie to an HTTP response. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `HTTP::CookieWrite::Range` instead. + */ + class CookieWrite extends DataFlow::Node instanceof CookieWrite::Range { + /** Gets the name of the cookie written. */ + DataFlow::Node getName() { result = super.getName() } + + /** Gets the value of the cookie written. */ + DataFlow::Node getValue() { result = super.getValue() } + + /** Gets the `Secure` attribute of the cookie written. */ + DataFlow::Node getSecure() { result = super.getSecure() } + + /** Gets the `HttpOnly` attribute of the cookie written. */ + DataFlow::Node getHttpOnly() { result = super.getHttpOnly() } + } + + /** Provides a class for modeling the new APIs for writes to options of an HTTP cookie. */ + module CookieOptionWrite { + /** + * A write to an option of an HTTP cookie object. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `HTTP::CookieOptionWrite` instead. + */ + abstract class Range extends DataFlow::Node { + /** Gets the node representing the cookie object for the options being set. */ + abstract DataFlow::Node getCookieOutput(); + + /** Gets the name of the cookie represented, if any. */ + abstract DataFlow::Node getName(); + + /** Gets the value of the cookie represented, if any. */ + abstract DataFlow::Node getValue(); + + /** Gets the `Secure` attribute of the cookie represented, if any. */ + abstract DataFlow::Node getSecure(); + + /** Gets the `HttpOnly` attribute of the cookie represented, if any. */ + abstract DataFlow::Node getHttpOnly(); + } + } + + /** + * A write to an option of an HTTP cookie object. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `HTTP::CookieOptionWrite::Range` instead. + */ + class CookieOptionWrite extends DataFlow::Node instanceof CookieOptionWrite::Range { + /** Gets the node representing the cookie object for the options being set. */ + DataFlow::Node getCookieOutput() { result = super.getCookieOutput() } + + /** Gets the name of the cookie represented, if any. */ + DataFlow::Node getName() { result = super.getName() } + + /** Gets the value of the cookie represented, if any. */ + DataFlow::Node getValue() { result = super.getValue() } + + /** Gets the `Secure` attribute of the cookie represented, if any. */ + DataFlow::Node getSecure() { result = super.getSecure() } + + /** Gets the `HttpOnly` attribute of the cookie represented, if any. */ + DataFlow::Node getHttpOnly() { result = super.getHttpOnly() } + } } diff --git a/go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll b/go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll index ba3a3c733023..e566ca41c2fd 100644 --- a/go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll +++ b/go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll @@ -255,8 +255,6 @@ private predicate globalValueNumbers(DataFlow::CallNode ce, int start, GVN head, * methods. */ class GVN extends GvnBase { - GVN() { this instanceof GvnBase } - /** Gets a data-flow node that has this GVN. */ DataFlow::Node getANode() { this = globalValueNumber(result) } diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll index d48335d299f4..a388e4bab040 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll @@ -1347,7 +1347,6 @@ module Public { } } -private import Private private import Public class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode { diff --git a/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll b/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll new file mode 100644 index 000000000000..154ac82e7a2a --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll @@ -0,0 +1,484 @@ +/** + * Provides classes for modeling cryptographic libraries. + */ + +import go +import semmle.go.Concepts::Cryptography +private import codeql.concepts.internal.CryptoAlgorithmNames + +/** + * A data flow call node that is an application of a hash operation where the + * hash algorithm is defined in any earlier initialization node, and the input + * is the first argument of the call. + */ +abstract class DirectHashOperation extends HashOperation instanceof DataFlow::CallNode { + override DataFlow::Node getInitialization() { result = this } + + override DataFlow::Node getAnInput() { result = super.getArgument(0) } +} + +private module HashConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof HashAlgorithmInit } + + predicate isSink(DataFlow::Node sink) { any() } +} + +/** Tracks the flow of hash algorithms. */ +module HashFlow = DataFlow::Global; + +/** + * A data flow node that initializes a block mode and propagates the encryption + * algorithm from the first argument to the receiver. + */ +abstract class StdLibNewEncrypter extends BlockModeInit { + override predicate step(DataFlow::Node node1, DataFlow::Node node2) { + node1 = this.getArgument(0) and + node2 = this.getResult(0) + } +} + +private module EncryptionConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source instanceof EncryptionAlgorithmInit or + source instanceof BlockModeInit + } + + predicate isSink(DataFlow::Node sink) { any() } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + any(BlockModeInit nbcm).step(node1, node2) + } +} + +/** + * Tracks algorithms and block cipher modes of operation used for encryption. + */ +module EncryptionFlow = DataFlow::Global; + +private module Crypto { + private module Aes { + private class NewCipher extends EncryptionAlgorithmInit { + NewCipher() { + exists(Function f | this = f.getACall().getResult(0) | + f.hasQualifiedName("crypto/aes", "NewCipher") + ) + } + + override EncryptionAlgorithm getAlgorithm() { result.matchesName("AES") } + } + } + + private module Des { + private class NewCipher extends EncryptionAlgorithmInit { + NewCipher() { + exists(Function f | this = f.getACall().getResult(0) | + f.hasQualifiedName("crypto/des", "NewCipher") + ) + } + + override EncryptionAlgorithm getAlgorithm() { result.matchesName("DES") } + } + + private class NewTripleDESCipher extends EncryptionAlgorithmInit { + NewTripleDESCipher() { + exists(Function f | this = f.getACall().getResult(0) | + f.hasQualifiedName("crypto/des", "NewTripleDESCipher") + ) + } + + override EncryptionAlgorithm getAlgorithm() { result.matchesName("TRIPLEDES") } + } + } + + private module Md5 { + private class Sum extends DirectHashOperation instanceof DataFlow::CallNode { + Sum() { this.getTarget().hasQualifiedName("crypto/md5", "Sum") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("MD5") } + } + + private class New extends HashAlgorithmInit instanceof DataFlow::CallNode { + New() { this.getTarget().hasQualifiedName("crypto/md5", "New") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("MD5") } + } + } + + private module Rc4 { + private class CipherXorKeyStream extends CryptographicOperation::Range instanceof DataFlow::CallNode + { + CipherXorKeyStream() { + this.(DataFlow::MethodCallNode) + .getTarget() + .hasQualifiedName("crypto/rc4", "Cipher", "XORKeyStream") + } + + override DataFlow::Node getInitialization() { result = this } + + override EncryptionAlgorithm getAlgorithm() { result.matchesName("RC4") } + + override DataFlow::Node getAnInput() { result = super.getArgument(1) } + + override BlockMode getBlockMode() { none() } + } + } + + /** + * Cryptographic operations from the `crypto/sha1` package. + */ + private module Sha1 { + private class Sum extends DirectHashOperation instanceof DataFlow::CallNode { + Sum() { this.getTarget().hasQualifiedName("crypto/sha1", "Sum") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA1") } + } + + private class New extends HashAlgorithmInit instanceof DataFlow::CallNode { + New() { this.getTarget().hasQualifiedName("crypto/sha1", "New") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA1") } + } + } + + /** + * Cryptographic operations from the `crypto/sha256` package. + */ + private module Sha256 { + private class Sum256 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum256() { this.getTarget().hasQualifiedName("crypto/sha256", "Sum256") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA256") } + } + + private class Sum224 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum224() { this.getTarget().hasQualifiedName("crypto/sha256", "Sum224") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA224") } + } + + private class New extends HashAlgorithmInit instanceof DataFlow::CallNode { + New() { this.getTarget().hasQualifiedName("crypto/sha256", "New") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA256") } + } + + private class New224 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New224() { this.getTarget().hasQualifiedName("crypto/sha256", "New224") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA224") } + } + } + + private module Sha3 { + private class Sum224 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum224() { this.getTarget().hasQualifiedName("crypto/sha3", "Sum224") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3224") } + } + + private class Sum256 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum256() { this.getTarget().hasQualifiedName("crypto/sha3", "Sum256") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3256") } + } + + private class Sum384 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum384() { this.getTarget().hasQualifiedName("crypto/sha3", "Sum384") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3384") } + } + + private class Sum512 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum512() { this.getTarget().hasQualifiedName("crypto/sha3", "Sum512") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3512") } + } + + private class SumShake128 extends DirectHashOperation instanceof DataFlow::CallNode { + SumShake128() { this.getTarget().hasQualifiedName("crypto/sha3", "SumSHAKE128") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHAKE128") } + } + + private class SumShake256 extends DirectHashOperation instanceof DataFlow::CallNode { + SumShake256() { this.getTarget().hasQualifiedName("crypto/sha3", "SumSHAKE256") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHAKE256") } + } + + private class New224 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New224() { this.getTarget().hasQualifiedName("crypto/sha3", "New224") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3224") } + } + + private class New256 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New256() { this.getTarget().hasQualifiedName("crypto/sha3", "New256") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3256") } + } + + private class New384 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New384() { this.getTarget().hasQualifiedName("crypto/sha3", "New384") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3384") } + } + + private class New512 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New512() { this.getTarget().hasQualifiedName("crypto/sha3", "New512") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3512") } + } + + private class NewShake128 extends HashAlgorithmInit instanceof DataFlow::CallNode { + NewShake128() { + this.getTarget().hasQualifiedName("crypto/sha3", ["NewCSHAKE128", "NewSHAKE128"]) + } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHAKE128") } + } + + private class NewShake256 extends HashAlgorithmInit instanceof DataFlow::CallNode { + NewShake256() { + this.getTarget().hasQualifiedName("crypto/sha3", ["NewCSHAKE256", "NewSHAKE256"]) + } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHAKE256") } + } + + private class ShakeWrite extends HashOperation instanceof DataFlow::MethodCallNode { + ShakeWrite() { this.getTarget().hasQualifiedName("crypto/sha3", "SHAKE", "Write") } + + override HashAlgorithmInit getInitialization() { HashFlow::flow(result, super.getReceiver()) } + + override HashingAlgorithm getAlgorithm() { result = this.getInitialization().getAlgorithm() } + + override DataFlow::Node getAnInput() { result = super.getArgument(0) } + } + } + + private module Sha512 { + private class Sum384 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum384() { this.getTarget().hasQualifiedName("crypto/sha512", "Sum384") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA384") } + } + + private class Sum512 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum512() { this.getTarget().hasQualifiedName("crypto/sha512", "Sum512") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA512") } + } + + private class Sum512_224 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum512_224() { this.getTarget().hasQualifiedName("crypto/sha512", "Sum512_224") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA512224") } + } + + private class Sum512_256 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum512_256() { this.getTarget().hasQualifiedName("crypto/sha512", "Sum512_256") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA512256") } + } + + private class New extends HashAlgorithmInit instanceof DataFlow::CallNode { + New() { this.getTarget().hasQualifiedName("crypto/sha512", "New") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA512") } + } + + private class New384 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New384() { this.getTarget().hasQualifiedName("crypto/sha512", "New384") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA384") } + } + + private class New512_224 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New512_224() { this.getTarget().hasQualifiedName("crypto/sha512", "New512_224") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA512224") } + } + + private class New512_256 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New512_256() { this.getTarget().hasQualifiedName("crypto/sha512", "New512_256") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA512256") } + } + } + + private module Cipher { + private class NewCbcEncrypter extends StdLibNewEncrypter { + NewCbcEncrypter() { this.getTarget().hasQualifiedName("crypto/cipher", "NewCBCEncrypter") } + + override BlockMode getMode() { result = "CBC" } + } + + private class NewCfbEncrypter extends StdLibNewEncrypter { + NewCfbEncrypter() { this.getTarget().hasQualifiedName("crypto/cipher", "NewCFBEncrypter") } + + override BlockMode getMode() { result = "CFB" } + } + + private class NewCtr extends StdLibNewEncrypter { + NewCtr() { this.getTarget().hasQualifiedName("crypto/cipher", "NewCTR") } + + override BlockMode getMode() { result = "CTR" } + } + + private class NewGcm extends StdLibNewEncrypter { + NewGcm() { + exists(string name | this.getTarget().hasQualifiedName("crypto/cipher", name) | + name = ["NewGCM", "NewGCMWithNonceSize", "NewGCMWithRandomNonce", "NewGCMWithTagSize"] + ) + } + + override BlockMode getMode() { result = "GCM" } + } + + private class NewOfb extends StdLibNewEncrypter { + NewOfb() { this.getTarget().hasQualifiedName("crypto/cipher", "NewOFB") } + + override BlockMode getMode() { result = "OFB" } + } + + private class AeadSeal extends EncryptionMethodCall { + AeadSeal() { + this.(DataFlow::MethodCallNode) + .getTarget() + .hasQualifiedName("crypto/cipher", "AEAD", "Seal") and + inputArg = 2 + } + } + + private class BlockEncrypt extends EncryptionMethodCall { + BlockEncrypt() { + this.(DataFlow::MethodCallNode) + .getTarget() + .hasQualifiedName("crypto/cipher", "Block", "Encrypt") and + inputArg = 1 + } + } + + private class BlockModeCryptBlocks extends EncryptionMethodCall { + BlockModeCryptBlocks() { + this.(DataFlow::MethodCallNode) + .getTarget() + .hasQualifiedName("crypto/cipher", "BlockMode", "CryptBlocks") and + inputArg = 1 + } + } + + private class StreamXorKeyStream extends EncryptionMethodCall { + StreamXorKeyStream() { + this.(DataFlow::MethodCallNode) + .getTarget() + .hasQualifiedName("crypto/cipher", "Stream", "XORKeyStream") and + inputArg = 1 + } + } + + private class StreamReader extends EncryptionOperation { + StreamReader() { + lookThroughPointerType(this.getType()).hasQualifiedName("crypto/cipher", "StreamReader") and + exists(DataFlow::Write w, DataFlow::Node base, Field f | + f.hasQualifiedName("crypto/cipher", "StreamReader", "S") and + w.writesField(base, f, encryptionFlowTarget) and + DataFlow::localFlow(base, this) + ) and + exists(DataFlow::Write w, DataFlow::Node base, Field f | + f.hasQualifiedName("crypto/cipher", "StreamReader", "R") and + w.writesField(base, f, inputNode) and + DataFlow::localFlow(base, this) + ) + } + } + + /** + * Limitation: StreamWriter wraps a Writer, so we need to look forward to + * where the Writer is written to. Currently this is done using local flow, + * so it only works within one function. + */ + private class StreamWriter extends EncryptionOperation { + StreamWriter() { + lookThroughPointerType(this.getType()).hasQualifiedName("crypto/cipher", "StreamWriter") and + inputNode = this and + exists(DataFlow::Write w, DataFlow::Node base, Field f | + w.writesField(base, f, encryptionFlowTarget) and + f.hasQualifiedName("crypto/cipher", "StreamWriter", "S") + | + base = this or + TaintTracking::localTaint(base, this.(DataFlow::PostUpdateNode).getPreUpdateNode()) + ) + } + } + } +} + +private module Hash { + private class HashSum extends HashOperation instanceof DataFlow::MethodCallNode { + HashSum() { this.getTarget().implements("hash", "Hash", "Sum") } + + override HashAlgorithmInit getInitialization() { HashFlow::flow(result, super.getReceiver()) } + + override HashingAlgorithm getAlgorithm() { result = this.getInitialization().getAlgorithm() } + + override DataFlow::Node getAnInput() { result = super.getArgument(0) } + } +} + +private DataFlow::Node getANonIoWriterPredecessor(DataFlow::Node node) { + node.getType().implements("io", "Writer") and + exists(DataFlow::Node pre | TaintTracking::localTaintStep(pre, node) | + if pre.getType().implements("io", "Writer") + then result = getANonIoWriterPredecessor(pre) + else result = pre + ) +} + +/** + * Taint flowing to an `io.Writer` (such as `hash.Hash` or `*sha3.SHAKE`) via + * its implementation of the `io.Writer` interface. + */ +private class FlowToIoWriter extends HashOperation instanceof DataFlow::Node { + HashAlgorithmInit init; + DataFlow::Node input; + + FlowToIoWriter() { + this.getType().implements("io", "Writer") and + HashFlow::flow(init, this) and + // If we have `h.Write(taint)` or `io.WriteString(h, taint)` then it's + // the post-update node of `h` that gets tainted. + exists(DataFlow::PostUpdateNode pun | pun.getPreUpdateNode() = this | + input = getANonIoWriterPredecessor(pun) + ) + } + + override HashAlgorithmInit getInitialization() { result = init } + + override HashingAlgorithm getAlgorithm() { result = this.getInitialization().getAlgorithm() } + + override DataFlow::Node getAnInput() { result = input } +} + +/** + * Currently only weak algorithms from the `golang.org/x/crypto` module are + * modeled here. + */ +private module GolangOrgXCrypto { + private module Md4 { + private class New extends HashAlgorithmInit instanceof DataFlow::CallNode { + New() { this.getTarget().hasQualifiedName("golang.org/x/crypto/md4", "New") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("MD4") } + } + } + + private module Ripemd160 { + private class New extends HashAlgorithmInit instanceof DataFlow::CallNode { + New() { this.getTarget().hasQualifiedName("golang.org/x/crypto/ripemd160", "New") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("RIPEMD160") } + } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/Gin.qll b/go/ql/lib/semmle/go/frameworks/Gin.qll new file mode 100644 index 000000000000..71ed5d931fa3 --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Gin.qll @@ -0,0 +1,24 @@ +/** + * Provides classes for modeling the `github.com/gin-gonic/gin` package. + */ + +import go +import semmle.go.concepts.HTTP + +/** Provides models for the `gin-gonic/gin` package. */ +module Gin { + /** Gets the package name `github.com/gin-gonic/gin`. */ + string packagePath() { result = package("github.com/gin-gonic/gin", "") } + + private class GinCookieWrite extends Http::CookieWrite::Range, DataFlow::MethodCallNode { + GinCookieWrite() { this.getTarget().hasQualifiedName(packagePath(), "Context", "SetCookie") } + + override DataFlow::Node getName() { result = this.getArgument(0) } + + override DataFlow::Node getValue() { result = this.getArgument(1) } + + override DataFlow::Node getSecure() { result = this.getArgument(5) } + + override DataFlow::Node getHttpOnly() { result = this.getArgument(6) } + } +} diff --git a/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll b/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll index 88c9605502f6..e798d116352f 100644 --- a/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll +++ b/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll @@ -293,4 +293,38 @@ module NetHttp { override DataFlow::Node getAPathArgument() { result = this.getArgument(2) } } + + private class CookieWrite extends Http::CookieWrite::Range, DataFlow::CallNode { + CookieWrite() { this.getTarget().hasQualifiedName(package("net/http", ""), "SetCookie") } + + override DataFlow::Node getName() { result = this.getArgument(1) } + + override DataFlow::Node getValue() { result = this.getArgument(1) } + + override DataFlow::Node getSecure() { result = this.getArgument(1) } + + override DataFlow::Node getHttpOnly() { result = this.getArgument(1) } + } + + private class CookieFieldWrite extends Http::CookieOptionWrite::Range { + DataFlow::Node written; + string fieldName; + + CookieFieldWrite() { + exists(Write w, Field f | + f.hasQualifiedName(package("net/http", ""), "Cookie", fieldName) and + w.writesField(this, f, written) + ) + } + + override DataFlow::Node getCookieOutput() { result = this } + + override DataFlow::Node getName() { fieldName = "Name" and result = written } + + override DataFlow::Node getValue() { fieldName = "Value" and result = written } + + override DataFlow::Node getSecure() { fieldName = "Secure" and result = written } + + override DataFlow::Node getHttpOnly() { fieldName = "HttpOnly" and result = written } + } } diff --git a/go/ql/lib/semmle/go/internal/OverlayXml.qll b/go/ql/lib/semmle/go/internal/OverlayXml.qll new file mode 100644 index 000000000000..95d49f2d6110 --- /dev/null +++ b/go/ql/lib/semmle/go/internal/OverlayXml.qll @@ -0,0 +1,46 @@ +overlay[local] +module; + +/** + * A local predicate that always holds for the overlay variant and never holds for the base variant. + * This is used to define local predicates that behave differently for the base and overlay variant. + */ +private predicate isOverlay() { databaseMetadata("isOverlay", "true") } + +private string getXmlFile(@xmllocatable locatable) { + exists(@location_default location, @file file | xmllocations(locatable, location) | + locations_default(location, file, _, _, _, _) and + files(file, result) + ) +} + +private string getXmlFileInBase(@xmllocatable locatable) { + not isOverlay() and + result = getXmlFile(locatable) +} + +/** + * Holds if the given `file` was extracted as part of the overlay and was extracted by the HTML/XML + * extractor. + */ +private predicate overlayXmlExtracted(string file) { + isOverlay() and + exists(@xmllocatable locatable | + not files(locatable, _) and not xmlNs(locatable, _, _, _) and file = getXmlFile(locatable) + ) +} + +/** + * Holds if the given XML `locatable` should be discarded, because it is part of the overlay base + * and is in a file that was also extracted as part of the overlay database. + */ +overlay[discard_entity] +private predicate discardXmlLocatable(@xmllocatable locatable) { + exists(string file | file = getXmlFileInBase(locatable) | + overlayChangedFiles(file) + or + // The HTML/XML extractor is currently not incremental and may extract more files than those + // included in overlayChangedFiles. + overlayXmlExtracted(file) + ) +} diff --git a/go/ql/lib/semmle/go/security/CookieWithoutHttpOnly.qll b/go/ql/lib/semmle/go/security/CookieWithoutHttpOnly.qll new file mode 100644 index 000000000000..8eed50b87913 --- /dev/null +++ b/go/ql/lib/semmle/go/security/CookieWithoutHttpOnly.qll @@ -0,0 +1,77 @@ +/** Provides classes and predicates for identifying HTTP cookies without the `HttpOnly` attribute. */ + +import go +import semmle.go.concepts.HTTP +import semmle.go.dataflow.DataFlow + +private module SensitiveCookieNameConfig implements DataFlow::ConfigSig { + /** + * Holds if `source` is an expression with a name or literal value `val` indicating a sensitive cookie. + */ + additional predicate isSource(DataFlow::Node source, string val) { + ( + val = source.asExpr().getStringValue() or + val = source.asExpr().(Name).getTarget().getName() + ) and + val.regexpMatch("(?i).*(session|login|token|user|auth|credential).*") and + not val.regexpMatch("(?i).*(xsrf|csrf|forgery).*") + } + + predicate isSource(DataFlow::Node source) { isSource(source, _) } + + additional predicate isSink(DataFlow::Node sink, Http::CookieWrite cw) { sink = cw.getName() } + + predicate isSink(DataFlow::Node sink) { isSink(sink, _) } + + predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { + exists(Http::CookieOptionWrite co | co.getName() = pred and co.getCookieOutput() = succ) + } +} + +/** Tracks flow from sensitive names to HTTP cookie writes. */ +module SensitiveCookieNameFlow = TaintTracking::Global; + +private module BooleanCookieHttpOnlyConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source.getType().getUnderlyingType() instanceof BoolType + } + + predicate isSink(DataFlow::Node sink) { exists(Http::CookieWrite cw | sink = cw.getHttpOnly()) } + + predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { + exists(Http::CookieOptionWrite co | co.getHttpOnly() = pred and co.getCookieOutput() = succ) + } +} + +/** Tracks flow from boolean expressions to the `HttpOnly` attribute of HTTP cookie writes. */ +module BooleanCookieHttpOnlyFlow = TaintTracking::Global; + +/** Holds if `cw` has the `HttpOnly` attribute left at its default value of `false`. */ +predicate isNonHttpOnlyDefault(Http::CookieWrite cw) { + not BooleanCookieHttpOnlyFlow::flowTo(cw.getHttpOnly()) +} + +/** Holds if `cw` has the `HttpOnly` attribute explicitly set to `false`, from the expression `boolFalse`. */ +predicate isNonHttpOnlyDirect(Http::CookieWrite cw, Expr boolFalse) { + BooleanCookieHttpOnlyFlow::flow(DataFlow::exprNode(boolFalse), cw.getHttpOnly()) and + boolFalse.getBoolValue() = false +} + +/** Holds if `cw` has the `HttpOnly` attribute set to `false`, either explicitly or by default. */ +predicate isNonHttpOnlyCookie(Http::CookieWrite cw) { + isNonHttpOnlyDefault(cw) or + isNonHttpOnlyDirect(cw, _) +} + +/** + * Holds if `cw` has the sensitive name `name`, from the expression `nameExpr`. + * `source` and `sink` represent the data flow path from the sensitive name expression to the cookie write. + */ +predicate isSensitiveCookie( + Http::CookieWrite cw, string name, SensitiveCookieNameFlow::PathNode source, + SensitiveCookieNameFlow::PathNode sink +) { + SensitiveCookieNameFlow::flowPath(source, sink) and + SensitiveCookieNameConfig::isSource(source.getNode(), name) and + SensitiveCookieNameConfig::isSink(sink.getNode(), cw) +} diff --git a/go/ql/lib/semmle/go/security/CookieWithoutSecure.qll b/go/ql/lib/semmle/go/security/CookieWithoutSecure.qll new file mode 100644 index 000000000000..1ba5315bf8ba --- /dev/null +++ b/go/ql/lib/semmle/go/security/CookieWithoutSecure.qll @@ -0,0 +1,37 @@ +/** Provides classes and predicates for identifying HTTP cookies without the `Secure` attribute. */ + +import go +import semmle.go.concepts.HTTP +import semmle.go.dataflow.DataFlow + +private module BooleanCookieSecureConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source.getType().getUnderlyingType() instanceof BoolType + } + + predicate isSink(DataFlow::Node sink) { exists(Http::CookieWrite cw | sink = cw.getSecure()) } + + predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { + exists(Http::CookieOptionWrite co | co.getSecure() = pred and co.getCookieOutput() = succ) + } +} + +/** Tracks flow from boolean expressions to the `Secure` attribute of HTTP cookie writes. */ +module BooleanCookieSecureFlow = TaintTracking::Global; + +/** Holds if `cw` has the `Secure` attribute left at its default value of `false`. */ +predicate isInsecureDefault(Http::CookieWrite cw) { + not BooleanCookieSecureFlow::flowTo(cw.getSecure()) +} + +/** Holds if `cw` has the `Secure` attribute explicitly set to `false`, from the expression `boolFalse`. */ +predicate isInsecureDirect(Http::CookieWrite cw, Expr boolFalse) { + BooleanCookieSecureFlow::flow(DataFlow::exprNode(boolFalse), cw.getSecure()) and + boolFalse.getBoolValue() = false +} + +/** Holds if `cw` has the `Secure` attribute set to `false`, either explicitly or by default. */ +predicate isInsecureCookie(Http::CookieWrite cw) { + isInsecureDefault(cw) or + isInsecureDirect(cw, _) +} diff --git a/go/ql/lib/semmle/go/security/WeakSensitiveDataHashingCustomizations.qll b/go/ql/lib/semmle/go/security/WeakSensitiveDataHashingCustomizations.qll new file mode 100644 index 000000000000..4893193ef4fe --- /dev/null +++ b/go/ql/lib/semmle/go/security/WeakSensitiveDataHashingCustomizations.qll @@ -0,0 +1,171 @@ +/** + * Provides default sources, sinks and sanitizers for detecting "use of a + * broken or weak cryptographic hashing algorithm on sensitive data" + * vulnerabilities, as well as extension points for adding your own. This is + * divided into two general cases: + * - hashing sensitive data + * - hashing passwords (which requires the hashing algorithm to be + * sufficiently computationally expensive in addition to other requirements) + */ + +import go +private import semmle.go.security.SensitiveActions + +/** + * Provides default sources, sinks and sanitizers for detecting "use of a broken or weak + * cryptographic hashing algorithm on sensitive data" vulnerabilities on sensitive data that does + * NOT require computationally expensive hashing, as well as extension points for adding your own. + * + * Also see the `ComputationallyExpensiveHashFunction` module. + */ +module NormalHashFunction { + /** + * A data flow source for "use of a broken or weak cryptographic hashing algorithm on sensitive + * data" vulnerabilities that does not require computationally expensive hashing. That is, a + * piece of sensitive data that is not a password. + */ + abstract class Source extends DataFlow::Node { + Source() { not this instanceof ComputationallyExpensiveHashFunction::Source } + + /** + * Gets the classification of the sensitive data. + */ + abstract string getClassification(); + } + + /** + * A data flow sink for "use of a broken or weak cryptographic hashing algorithm on sensitive + * data" vulnerabilities that applies to data that does not require computationally expensive + * hashing. That is, a broken or weak hashing algorithm. + */ + abstract class Sink extends DataFlow::Node { + /** + * Gets the name of the weak hashing algorithm. + */ + abstract string getAlgorithmName(); + } + + /** + * A barrier for "use of a broken or weak cryptographic hashing algorithm on sensitive data" + * vulnerabilities that applies to data that does not require computationally expensive hashing. + */ + abstract class Barrier extends DataFlow::Node { } + + /** + * A flow source modeled by the `SensitiveData` library. + */ + class SensitiveDataAsSource extends Source { + SensitiveExpr::Classification classification; + + SensitiveDataAsSource() { + classification = this.asExpr().(SensitiveExpr).getClassification() and + not classification = SensitiveExpr::password() and // (covered in ComputationallyExpensiveHashFunction) + not classification = SensitiveExpr::id() // (not accurate enough) + } + + override SensitiveExpr::Classification getClassification() { result = classification } + } + + /** + * A flow sink modeled by the `Cryptography` module. + */ + class WeakHashingOperationInputAsSink extends Sink { + Cryptography::HashingAlgorithm algorithm; + + WeakHashingOperationInputAsSink() { + exists(Cryptography::CryptographicOperation operation | + algorithm.isWeak() and + algorithm = operation.getAlgorithm() and + this = operation.getAnInput() + ) + } + + override string getAlgorithmName() { result = algorithm.getName() } + } +} + +/** + * Provides default sources, sinks and sanitizers for detecting "use of a broken or weak + * cryptographic hashing algorithm on sensitive data" vulnerabilities on sensitive data that DOES + * require computationally expensive hashing, as well as extension points for adding your own. + * + * Also see the `NormalHashFunction` module. + */ +module ComputationallyExpensiveHashFunction { + /** + * A data flow source for "use of a broken or weak cryptographic hashing algorithm on sensitive + * data" vulnerabilities that does require computationally expensive hashing. That is, a + * password. + */ + abstract class Source extends DataFlow::Node { + /** + * Gets the classification of the sensitive data. + */ + abstract string getClassification(); + } + + /** + * A data flow sink for "use of a broken or weak cryptographic hashing algorithm on sensitive + * data" vulnerabilities that applies to data that does require computationally expensive + * hashing. That is, a broken or weak hashing algorithm or one that is not computationally + * expensive enough for password hashing. + */ + abstract class Sink extends DataFlow::Node { + /** + * Gets the name of the weak hashing algorithm. + */ + abstract string getAlgorithmName(); + + /** + * Holds if this sink is for a computationally expensive hash function (meaning that hash + * function is just weak in some other regard. + */ + abstract predicate isComputationallyExpensive(); + } + + /** + * A barrier for "use of a broken or weak cryptographic hashing algorithm on sensitive data" + * vulnerabilities that applies to data that does require computationally expensive hashing. + */ + abstract class Barrier extends DataFlow::Node { } + + /** + * A flow source modeled by the `SensitiveData` library. + */ + class PasswordAsSource extends Source { + SensitiveExpr::Classification classification; + + PasswordAsSource() { + classification = this.asExpr().(SensitiveExpr).getClassification() and + classification = SensitiveExpr::password() + } + + override SensitiveExpr::Classification getClassification() { result = classification } + } + + /** + * A flow sink modeled by the `Cryptography` module. + */ + class WeakPasswordHashingOperationInputSink extends Sink { + Cryptography::CryptographicAlgorithm algorithm; + + WeakPasswordHashingOperationInputSink() { + exists(Cryptography::CryptographicOperation operation | + ( + algorithm instanceof Cryptography::PasswordHashingAlgorithm and + algorithm.isWeak() + or + algorithm instanceof Cryptography::HashingAlgorithm // Note that HashingAlgorithm and PasswordHashingAlgorithm are disjoint + ) and + algorithm = operation.getAlgorithm() and + this = operation.getAnInput() + ) + } + + override string getAlgorithmName() { result = algorithm.getName() } + + override predicate isComputationallyExpensive() { + algorithm instanceof Cryptography::PasswordHashingAlgorithm + } + } +} diff --git a/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/go.dbscheme b/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/go.dbscheme new file mode 100644 index 000000000000..b1341734d687 --- /dev/null +++ b/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/go.dbscheme @@ -0,0 +1,563 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string 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; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file 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 ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, int bound: @compositetype ref, + int parent: @typeparamparentobject ref, int idx: int ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/old.dbscheme b/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/old.dbscheme new file mode 100644 index 000000000000..b3da71c3ac20 --- /dev/null +++ b/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/old.dbscheme @@ -0,0 +1,552 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string 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; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file 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 ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, int bound: @compositetype ref, + int parent: @typeparamparentobject ref, int idx: int ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/upgrade.properties b/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/upgrade.properties new file mode 100644 index 000000000000..52b67d65af75 --- /dev/null +++ b/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/upgrade.properties @@ -0,0 +1,2 @@ +description: Add databaseMetadata and overlayChangedFiles relations +compatibility: full diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 786164b5fe4a..126e2b8583c3 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,24 @@ +## 1.5.2 + +No user-facing changes. + +## 1.5.1 + +No user-facing changes. + +## 1.5.0 + +### New Queries + +* The `go/cookie-http-only-not-set` query has been promoted from the experimental query pack. This query was originally contributed to the experimental query pack by @edvraa. +* A new query `go/cookie-secure-not-set` has been added to detect cookies without the `Secure` flag set. +* Added a new query, `go/weak-crypto-algorithm`, to detect the use of a broken or weak cryptographic algorithm. A very simple version of this query was originally contributed as an [experimental query by @dilanbhalla](https://github.com/github/codeql-go/pull/284). +* Added a new query, `go/weak-sensitive-data-hashing`, to detect the use of a broken or weak cryptographic hash algorithm on sensitive data. + +## 1.4.9 + +No user-facing changes. + ## 1.4.8 No user-facing changes. diff --git a/go/ql/src/Security/CWE-020/UntrustedDataToExternalAPI.ql b/go/ql/src/Security/CWE-020/UntrustedDataToExternalAPI.ql index 6e8d99471ee4..b9bf1be2c1db 100644 --- a/go/ql/src/Security/CWE-020/UntrustedDataToExternalAPI.ql +++ b/go/ql/src/Security/CWE-020/UntrustedDataToExternalAPI.ql @@ -6,7 +6,8 @@ * @precision low * @problem.severity error * @security-severity 7.8 - * @tags security external/cwe/cwe-020 + * @tags security + * external/cwe/cwe-020 */ import go diff --git a/go/ql/src/Security/CWE-020/UntrustedDataToUnknownExternalAPI.ql b/go/ql/src/Security/CWE-020/UntrustedDataToUnknownExternalAPI.ql index 451980479040..89ce5949245b 100644 --- a/go/ql/src/Security/CWE-020/UntrustedDataToUnknownExternalAPI.ql +++ b/go/ql/src/Security/CWE-020/UntrustedDataToUnknownExternalAPI.ql @@ -6,7 +6,8 @@ * @precision low * @problem.severity error * @security-severity 7.8 - * @tags security external/cwe/cwe-020 + * @tags security + * external/cwe/cwe-020 */ import go diff --git a/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.qhelp b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.qhelp new file mode 100644 index 000000000000..a9614e2a6974 --- /dev/null +++ b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.qhelp @@ -0,0 +1,34 @@ + + + + +

    Cookies without the HttpOnly flag set are accessible to client-side scripts such as JavaScript running in the same origin. +In case of a Cross-Site Scripting (XSS) vulnerability, the cookie can be stolen by a malicious script. +If a sensitive cookie does not need to be accessed directly by client-side JS, the HttpOnly flag should be set.

    +
    + + +

    +Set the HttpOnly flag to true for authentication cookies to ensure they are not accessible to client-side scripts. +

    +
    + + +

    +In the following example, in the case marked BAD, the HttpOnly flag is not set, so the default value of false is used. +In the case marked GOOD, the HttpOnly flag is set to true. +

    + + + +
    + + + +
  • MDN: Set-Cookie Header.
  • +
  • PortSwigger: Cookie without HttpOnly flag set
  • + +
    +
    \ No newline at end of file diff --git a/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql new file mode 100644 index 000000000000..8d11d8c40a6b --- /dev/null +++ b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql @@ -0,0 +1,25 @@ +/** + * @name Cookie 'HttpOnly' attribute is not set to true + * @description Sensitive cookies without the `HttpOnly` property set are accessible by client-side scripts such as JavaScript. + * This makes them more vulnerable to being stolen by an XSS attack. + * @kind path-problem + * @problem.severity warning + * @precision high + * @security-severity 5.0 + * @id go/cookie-httponly-not-set + * @tags security + * external/cwe/cwe-1004 + */ + +import go +import semmle.go.security.CookieWithoutHttpOnly +import SensitiveCookieNameFlow::PathGraph + +from + Http::CookieWrite cw, string name, SensitiveCookieNameFlow::PathNode source, + SensitiveCookieNameFlow::PathNode sink +where + isSensitiveCookie(cw, name, source, sink) and + isNonHttpOnlyCookie(cw) +select cw, source, sink, "Sensitive cookie $@ does not set HttpOnly attribute to true.", source, + name diff --git a/go/ql/src/Security/CWE-1004/examples/CookieWithoutHttpOnly.go b/go/ql/src/Security/CWE-1004/examples/CookieWithoutHttpOnly.go new file mode 100644 index 000000000000..a4a78b9f9626 --- /dev/null +++ b/go/ql/src/Security/CWE-1004/examples/CookieWithoutHttpOnly.go @@ -0,0 +1,22 @@ +package main + +import ( + "net/http" +) + +func handlerBad(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + } + http.SetCookie(w, &c) // BAD: The HttpOnly flag is set to false by default. +} + +func handlerGood(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + HttpOnly: true, + } + http.SetCookie(w, &c) // GOOD: The HttpOnly flag is set to true. +} diff --git a/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithm.qhelp b/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp similarity index 88% rename from go/ql/src/experimental/CWE-327/WeakCryptoAlgorithm.qhelp rename to go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp index 0283e142fbad..a65af78c0aec 100644 --- a/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithm.qhelp +++ b/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp @@ -28,10 +28,10 @@

    - The following code uses the different packages to encrypt/hash - some secret data. The first few examples uses DES, MD5, RC4, and SHA1, - which are older algorithms that are now considered weak. The following - examples use AES and SHA256, which are stronger, more modern algorithms. + The following code uses the different packages to encrypt + some secret data. The first example uses DES, + which is an older algorithm that is now considered weak. The following + example uses AES, which is a stronger, more modern algorithm.

    diff --git a/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql b/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql new file mode 100644 index 000000000000..67b2d0d6d2b4 --- /dev/null +++ b/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql @@ -0,0 +1,33 @@ +/** + * @name Use of a broken or weak cryptographic algorithm + * @description Using broken or weak cryptographic algorithms can compromise security. + * @kind problem + * @problem.severity warning + * @security-severity 7.5 + * @precision high + * @id go/weak-cryptographic-algorithm + * @tags security + * external/cwe/cwe-327 + * external/cwe/cwe-328 + */ + +import go + +from Cryptography::CryptographicOperation operation, string msgPrefix, DataFlow::Node init +where + init = operation.getInitialization() and + // `init` may be a `BlockModeInit`, a `EncryptionAlgorithmInit`, or `operation` itself. + ( + not init instanceof BlockModeInit and + exists(Cryptography::CryptographicAlgorithm algorithm | + algorithm = operation.getAlgorithm() and + algorithm.isWeak() and + msgPrefix = "The cryptographic algorithm " + algorithm.getName() and + not algorithm instanceof Cryptography::HashingAlgorithm + ) + or + not init instanceof EncryptionAlgorithmInit and + operation.getBlockMode().isWeak() and + msgPrefix = "The block mode " + operation.getBlockMode() + ) +select operation, "$@ is broken or weak, and should not be used.", init, msgPrefix diff --git a/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.qhelp b/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.qhelp new file mode 100644 index 000000000000..1fa64e4adaf2 --- /dev/null +++ b/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.qhelp @@ -0,0 +1,97 @@ + + + +

    + Using a broken or weak cryptographic hash function can leave data + vulnerable, and should not be used in security related code. +

    + +

    + A strong cryptographic hash function should be resistant to: +

    +
      +
    • + pre-image attacks: if you know a hash value h(x), + you should not be able to easily find the input x. +
    • +
    • + collision attacks: if you know a hash value h(x), + you should not be able to easily find a different input y + with the same hash value h(x) = h(y). +
    • +
    +

    + In cases with a limited input space, such as for passwords, the hash + function also needs to be computationally expensive to be resistant to + brute-force attacks. Passwords should also have an unique salt applied + before hashing, but that is not considered by this query. +

    + +

    + As an example, both MD5 and SHA-1 are known to be vulnerable to collision attacks. +

    + +

    + Since it's OK to use a weak cryptographic hash function in a non-security + context, this query only alerts when these are used to hash sensitive + data (such as passwords, certificates, usernames). +

    + +

    + Use of broken or weak cryptographic algorithms that are not hashing algorithms, is + handled by the rb/weak-cryptographic-algorithm query. +

    + +
    + + +

    + Ensure that you use a strong, modern cryptographic hash function: +

    + +
      +
    • + such as Argon2, scrypt, bcrypt, or PBKDF2 for passwords and other data with limited input space. +
    • +
    • + such as SHA-2, or SHA-3 in other cases. +
    • +
    + +
    + + +

    + The following example shows two functions for checking whether the hash + of a secret matches a known value. + + The first function uses SHA-1 that is known to be vulnerable to collision attacks. + + The second function uses SHA-256 that is a strong cryptographic hashing function. +

    + + + +
    + +

    + The following example shows two functions for hashing passwords. + + The first example uses SHA-256 to hash passwords. Although + SHA-256 is a strong cryptographic hash function, it is not suitable for password + hashing since it is not computationally expensive. + + The second function uses PBKDF2, which is a strong password hashing algorithm. +

    + + + +
    + + +
  • OWASP: Password Storage Cheat Sheet
  • +
    + +
    diff --git a/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql b/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql new file mode 100644 index 000000000000..0a38d9729f01 --- /dev/null +++ b/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql @@ -0,0 +1,118 @@ +/** + * @name Use of a broken or weak cryptographic hashing algorithm on sensitive data + * @description Using broken or weak cryptographic hashing algorithms can compromise security. + * @kind path-problem + * @problem.severity warning + * @security-severity 7.5 + * @precision high + * @id go/weak-sensitive-data-hashing + * @tags security + * external/cwe/cwe-327 + * external/cwe/cwe-328 + * external/cwe/cwe-916 + */ + +import go +import semmle.go.security.WeakSensitiveDataHashingCustomizations + +/** + * Provides a taint-tracking configuration for detecting use of a broken or weak + * cryptographic hash function on sensitive data, that does NOT require a + * computationally expensive hash function. + */ +module NormalHashFunctionFlow { + import NormalHashFunction + + private module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof Source } + + predicate isSink(DataFlow::Node sink) { sink instanceof Sink } + + predicate isBarrier(DataFlow::Node node) { node instanceof Barrier } + + predicate isBarrierIn(DataFlow::Node node) { + // make sources barriers so that we only report the closest instance + isSource(node) + } + + predicate isBarrierOut(DataFlow::Node node) { + // make sinks barriers so that we only report the closest instance + isSink(node) + } + + predicate observeDiffInformedIncrementalMode() { any() } + } + + import TaintTracking::Global +} + +/** + * Provides a taint-tracking configuration for detecting use of a broken or weak + * cryptographic hashing algorithm on passwords. + * + * Passwords has stricter requirements on the hashing algorithm used (must be + * computationally expensive to prevent brute-force attacks). + */ +module ComputationallyExpensiveHashFunctionFlow { + import ComputationallyExpensiveHashFunction + + private module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof Source } + + predicate isSink(DataFlow::Node sink) { sink instanceof Sink } + + predicate isBarrier(DataFlow::Node node) { node instanceof Barrier } + + predicate isBarrierIn(DataFlow::Node node) { + // make sources barriers so that we only report the closest instance + isSource(node) + } + + predicate isBarrierOut(DataFlow::Node node) { + // make sinks barriers so that we only report the closest instance + isSink(node) + } + + predicate observeDiffInformedIncrementalMode() { any() } + } + + import TaintTracking::Global +} + +/** + * Global taint-tracking for detecting both variants of "use of a broken or weak + * cryptographic hashing algorithm on sensitive data" vulnerabilities. The two configurations are + * merged to generate a combined path graph. + */ +module WeakSensitiveDataHashingFlow = + DataFlow::MergePathGraph; + +import WeakSensitiveDataHashingFlow::PathGraph + +from + WeakSensitiveDataHashingFlow::PathNode source, WeakSensitiveDataHashingFlow::PathNode sink, + string ending, string algorithmName, string classification +where + NormalHashFunctionFlow::flowPath(source.asPathNode1(), sink.asPathNode1()) and + algorithmName = sink.getNode().(NormalHashFunction::Sink).getAlgorithmName() and + classification = source.getNode().(NormalHashFunction::Source).getClassification() and + ending = "." + or + ComputationallyExpensiveHashFunctionFlow::flowPath(source.asPathNode2(), sink.asPathNode2()) and + algorithmName = sink.getNode().(ComputationallyExpensiveHashFunction::Sink).getAlgorithmName() and + classification = + source.getNode().(ComputationallyExpensiveHashFunction::Source).getClassification() and + ( + sink.getNode().(ComputationallyExpensiveHashFunction::Sink).isComputationallyExpensive() and + ending = "." + or + not sink.getNode().(ComputationallyExpensiveHashFunction::Sink).isComputationallyExpensive() and + ending = + " for " + classification + + " hashing, since it is not a computationally expensive hash function." + ) +select sink.getNode(), source, sink, + "$@ is used in a hashing algorithm (" + algorithmName + ") that is insecure" + ending, + source.getNode(), "Sensitive data (" + classification + ")" diff --git a/go/ql/src/Security/CWE-327/examples/Crypto.go b/go/ql/src/Security/CWE-327/examples/Crypto.go new file mode 100644 index 000000000000..b3f71f0772bc --- /dev/null +++ b/go/ql/src/Security/CWE-327/examples/Crypto.go @@ -0,0 +1,20 @@ +package main + +import ( + "crypto/aes" + "crypto/des" +) + +func EncryptMessageWeak(key []byte, message []byte) (dst []byte) { + // BAD, DES is a weak crypto algorithm + block, _ := des.NewCipher(key) + block.Encrypt(dst, message) + return +} + +func EncryptMessageStrong(key []byte, message []byte) (dst []byte) { + // GOOD, AES is a weak crypto algorithm + block, _ := aes.NewCipher(key) + block.Encrypt(dst, message) + return +} diff --git a/go/ql/src/experimental/CWE-327/examples/InsecureRandomness.go b/go/ql/src/Security/CWE-327/examples/InsecureRandomness.go similarity index 100% rename from go/ql/src/experimental/CWE-327/examples/InsecureRandomness.go rename to go/ql/src/Security/CWE-327/examples/InsecureRandomness.go diff --git a/go/ql/src/Security/CWE-327/examples/WeakPasswordHashing.go b/go/ql/src/Security/CWE-327/examples/WeakPasswordHashing.go new file mode 100644 index 000000000000..671edede7d36 --- /dev/null +++ b/go/ql/src/Security/CWE-327/examples/WeakPasswordHashing.go @@ -0,0 +1,21 @@ +package main + +import ( + "crypto/pbkdf2" + "crypto/rand" + "crypto/sha256" + "crypto/sha512" +) + +func GetPasswordHashBad(password string) [32]byte { + // BAD, SHA256 is a strong hashing algorithm but it is not computationally expensive + return sha256.Sum256([]byte(password)) +} + +func GetPasswordHashGood(password string) []byte { + // GOOD, PBKDF2 is a strong hashing algorithm and it is computationally expensive + salt := make([]byte, 16) + rand.Read(salt) + key, _ := pbkdf2.Key(sha512.New, password, salt, 4096, 32) + return key +} diff --git a/go/ql/src/Security/CWE-327/examples/WeakSecretHashing.go b/go/ql/src/Security/CWE-327/examples/WeakSecretHashing.go new file mode 100644 index 000000000000..fd65b802548b --- /dev/null +++ b/go/ql/src/Security/CWE-327/examples/WeakSecretHashing.go @@ -0,0 +1,19 @@ +package main + +import ( + "crypto/sha1" + "crypto/sha256" + "slices" +) + +func SecretMatchesKnownHashBad(secret []byte, known_hash []byte) bool { + // BAD, SHA1 is a weak crypto algorithm and secret is sensitive data + h := sha1.New() + return slices.Equal(h.Sum(secret), known_hash) +} + +func SecretMatchesKnownHashGood(secret []byte, known_hash []byte) bool { + // GOOD, SHA256 is a strong hashing algorithm + h := sha256.New() + return slices.Equal(h.Sum(secret), known_hash) +} diff --git a/go/ql/src/Security/CWE-614/CookieWithoutSecure.qhelp b/go/ql/src/Security/CWE-614/CookieWithoutSecure.qhelp new file mode 100644 index 000000000000..4ee969e475cc --- /dev/null +++ b/go/ql/src/Security/CWE-614/CookieWithoutSecure.qhelp @@ -0,0 +1,35 @@ + + + + +

    Cookies without the Secure flag set may be transmitted using HTTP instead of HTTPS. +This leaves them vulnerable to being read by a third party attacker. If a sensitive cookie such as a session +key is intercepted this way, it would allow the attacker to perform actions on a user's behalf.

    +
    + + +

    +Set the Secure flag to true to ensure cookies are only transmitted over secure HTTPS connections. +

    +
    + + +

    +In the following example, in the case marked BAD, the Secure flag is set to false by default. +In the case marked GOOD, the Secure flag is set to true. +

    + + + +
    + + + +
  • MDN: Set-Cookie Header.
  • +
  • Detectify: Cookie lack Secure flag.
  • +
  • PortSwigger: TLS cookie without secure flag set.
  • + +
    +
    \ No newline at end of file diff --git a/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql b/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql new file mode 100644 index 000000000000..7c3c4ed1dd30 --- /dev/null +++ b/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql @@ -0,0 +1,19 @@ +/** + * @name Cookie 'Secure' attribute is not set to true + * @description Cookies without the `Secure` flag may be sent in cleartext. + * This makes them vulnerable to be intercepted by an attacker. + * @kind problem + * @problem.severity warning + * @precision high + * @security-severity 4.0 + * @id go/cookie-secure-not-set + * @tags security + * external/cwe/cwe-614 + */ + +import go +import semmle.go.security.CookieWithoutSecure + +from Http::CookieWrite cw +where isInsecureCookie(cw) +select cw, "Cookie does not set Secure attribute to true." diff --git a/go/ql/src/Security/CWE-614/examples/CookieWithoutSecure.go b/go/ql/src/Security/CWE-614/examples/CookieWithoutSecure.go new file mode 100644 index 000000000000..dc46c918d36c --- /dev/null +++ b/go/ql/src/Security/CWE-614/examples/CookieWithoutSecure.go @@ -0,0 +1,22 @@ +package main + +import ( + "net/http" +) + +func handlerBad(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + } + http.SetCookie(w, &c) // BAD: The Secure flag is set to false by default. +} + +func handlerGood(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + Secure: true, + } + http.SetCookie(w, &c) // GOOD: The Secure flag is set to true. +} diff --git a/go/ql/src/change-notes/released/1.4.9.md b/go/ql/src/change-notes/released/1.4.9.md new file mode 100644 index 000000000000..23b8222662cd --- /dev/null +++ b/go/ql/src/change-notes/released/1.4.9.md @@ -0,0 +1,3 @@ +## 1.4.9 + +No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.5.0.md b/go/ql/src/change-notes/released/1.5.0.md new file mode 100644 index 000000000000..a1a1f5158cc4 --- /dev/null +++ b/go/ql/src/change-notes/released/1.5.0.md @@ -0,0 +1,8 @@ +## 1.5.0 + +### New Queries + +* The `go/cookie-http-only-not-set` query has been promoted from the experimental query pack. This query was originally contributed to the experimental query pack by @edvraa. +* A new query `go/cookie-secure-not-set` has been added to detect cookies without the `Secure` flag set. +* Added a new query, `go/weak-crypto-algorithm`, to detect the use of a broken or weak cryptographic algorithm. A very simple version of this query was originally contributed as an [experimental query by @dilanbhalla](https://github.com/github/codeql-go/pull/284). +* Added a new query, `go/weak-sensitive-data-hashing`, to detect the use of a broken or weak cryptographic hash algorithm on sensitive data. diff --git a/go/ql/src/change-notes/released/1.5.1.md b/go/ql/src/change-notes/released/1.5.1.md new file mode 100644 index 000000000000..7b24a64aca3a --- /dev/null +++ b/go/ql/src/change-notes/released/1.5.1.md @@ -0,0 +1,3 @@ +## 1.5.1 + +No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.5.2.md b/go/ql/src/change-notes/released/1.5.2.md new file mode 100644 index 000000000000..384c27833f18 --- /dev/null +++ b/go/ql/src/change-notes/released/1.5.2.md @@ -0,0 +1,3 @@ +## 1.5.2 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 16e6425ae7e4..7eb901bae56a 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.8 +lastReleaseVersion: 1.5.2 diff --git a/go/ql/src/experimental/CWE-1004/AuthCookie.qll b/go/ql/src/experimental/CWE-1004/AuthCookie.qll deleted file mode 100644 index 58c9f8642b3f..000000000000 --- a/go/ql/src/experimental/CWE-1004/AuthCookie.qll +++ /dev/null @@ -1,245 +0,0 @@ -import go - -private class NetHttpCookieType extends Type { - NetHttpCookieType() { this.hasQualifiedName(package("net/http", ""), "Cookie") } -} - -private class GinContextSetCookieMethod extends Method { - GinContextSetCookieMethod() { - this.hasQualifiedName(package("github.com/gin-gonic/gin", ""), "Context", "SetCookie") - } -} - -private class GorillaSessionOptionsField extends Field { - GorillaSessionOptionsField() { - this.hasQualifiedName(package("github.com/gorilla/sessions", ""), "Session", "Options") - } -} - -/** - * A simplistic points-to alternative: given a struct creation and a field name, get the values that field can be assigned. - * - * Assumptions: - * - we don't reassign the variable that the creation is stored in - * - we always access the creation through the same variable it is initially assigned to - * - * This should cover most typical patterns... - */ -private DataFlow::Node getValueForFieldWrite(StructLit sl, string field) { - exists(Write w, DataFlow::Node base, Field f | - f.getName() = field and - w.writesFieldPreUpdate(base, f, result) and - ( - sl = base.asExpr() - or - base.asExpr() instanceof VariableName and - base.getAPredecessor*().asExpr() = sl - ) - ) -} - -/** - * Holds if the expression or its value has a sensitive name - */ -private predicate isAuthVariable(Expr expr) { - exists(string val | - ( - val = expr.getStringValue() or - val = expr.(Name).getTarget().getName() - ) and - val.regexpMatch("(?i).*(session|login|token|user|auth|credential).*") and - not val.regexpMatch("(?i).*(xsrf|csrf|forgery).*") - ) -} - -/** - * A cookie passed as the second parameter to `net/http.SetCookie`. - */ -private class SetCookieSink extends DataFlow::Node { - SetCookieSink() { - exists(DataFlow::CallNode cn | - cn.getTarget().hasQualifiedName(package("net/http", ""), "SetCookie") and - this = cn.getArgument(1) - ) - } -} - -private module NameToNetHttpCookieTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { isAuthVariable(source.asExpr()) } - - predicate isSink(DataFlow::Node sink) { sink instanceof SetCookieSink } - - predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { - exists(StructLit sl | - sl.getType() instanceof NetHttpCookieType and - getValueForFieldWrite(sl, "Name") = pred and - sl = succ.asExpr() - ) - } -} - -/** Tracks taint flow from sensitive names to `net/http.SetCookie`. */ -module NameToNetHttpCookieTrackingFlow = TaintTracking::Global; - -private module BoolToNetHttpCookieTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - source.getType().getUnderlyingType() instanceof BoolType - } - - predicate isSink(DataFlow::Node sink) { sink instanceof SetCookieSink } - - predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { - exists(StructLit sl | - sl.getType() instanceof NetHttpCookieType and - getValueForFieldWrite(sl, "HttpOnly") = pred and - sl = succ.asExpr() - ) - } -} - -/** - * Tracks taint flow from a `bool` assigned to `HttpOnly` to - * `net/http.SetCookie`. - */ -module BoolToNetHttpCookieTrackingFlow = TaintTracking::Global; - -private module BoolToGinSetCookieTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source.getBoolValue() = false } - - predicate isSink(DataFlow::Node sink) { - exists(DataFlow::MethodCallNode mcn | - mcn.getTarget() instanceof GinContextSetCookieMethod and - mcn.getArgument(6) = sink and - exists(DataFlow::Node nameArg | - NameToGinSetCookieTrackingFlow::flowTo(nameArg) and - mcn.getArgument(0) = nameArg - ) - ) - } - - predicate observeDiffInformedIncrementalMode() { - any() // Merged with other flows in CookieWithoutHttpOnly.ql - } - - Location getASelectedSourceLocation(DataFlow::Node source) { none() } -} - -/** - * Tracks data flow from `HttpOnly` set to `false` to - * `gin-gonic/gin.Context.SetCookie`. - */ -module BoolToGinSetCookieTrackingFlow = DataFlow::Global; - -private module NameToGinSetCookieTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { isAuthVariable(source.asExpr()) } - - predicate isSink(DataFlow::Node sink) { - exists(DataFlow::MethodCallNode mcn | - mcn.getTarget() instanceof GinContextSetCookieMethod and - mcn.getArgument(0) = sink - ) - } -} - -/** - * Tracks taint flow from sensitive names to `gin-gonic/gin.Context.SetCookie`. - */ -private module NameToGinSetCookieTrackingFlow = DataFlow::Global; - -/** - * The receiver of `gorilla/sessions.Session.Save` call. - */ -private class GorillaSessionSaveSink extends DataFlow::Node { - GorillaSessionSaveSink() { - exists(DataFlow::MethodCallNode mcn | - this = mcn.getReceiver() and - mcn.getTarget() - .hasQualifiedName(package("github.com/gorilla/sessions", ""), "Session", "Save") - ) - } -} - -private class GorillaStoreSaveSink extends DataFlow::Node { - GorillaStoreSaveSink() { - exists(DataFlow::MethodCallNode mcn | - this = mcn.getArgument(2) and - mcn.getTarget() - .hasQualifiedName(package("github.com/gorilla/sessions", ""), "CookieStore", "Save") - ) - } -} - -private module GorillaCookieStoreSaveTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - source - .(DataFlow::CallNode) - .getTarget() - .hasQualifiedName(package("github.com/gorilla/sessions", ""), "NewCookieStore") - } - - predicate isSink(DataFlow::Node sink) { - sink instanceof GorillaSessionSaveSink or - sink instanceof GorillaStoreSaveSink - } - - predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { - exists(DataFlow::MethodCallNode cn | - cn.getTarget() - .hasQualifiedName(package("github.com/gorilla/sessions", ""), "CookieStore", "Get") and - pred = cn.getReceiver() and - succ = cn.getResult(0) - ) - } -} - -/** - * Tracks data flow from gorilla cookie store creation to - * `gorilla/sessions.Session.Save`. - */ -module GorillaCookieStoreSaveTrackingFlow = DataFlow::Global; - -private module GorillaSessionOptionsTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - exists(StructLit sl | - sl.getType().hasQualifiedName(package("github.com/gorilla/sessions", ""), "Options") and - source.asExpr() = sl - ) - } - - predicate isSink(DataFlow::Node sink) { sink instanceof GorillaSessionSaveSink } - - predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { - exists(GorillaSessionOptionsField f, DataFlow::Write w | w.writesField(succ, f, pred)) - } -} - -/** - * Tracks taint flow from session options to - * `gorilla/sessions.Session.Save`. - */ -module GorillaSessionOptionsTrackingFlow = - TaintTracking::Global; - -private module BoolToGorillaSessionOptionsTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - source.getType().getUnderlyingType() instanceof BoolType - } - - predicate isSink(DataFlow::Node sink) { sink instanceof GorillaSessionSaveSink } - - predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { - exists(StructLit sl | - getValueForFieldWrite(sl, "HttpOnly") = pred and - sl = succ.asExpr() - ) - or - exists(GorillaSessionOptionsField f, DataFlow::Write w | w.writesField(succ, f, pred)) - } -} - -/** - * Tracks taint flow from a `bool` assigned to `HttpOnly` to - * `gorilla/sessions.Session.Save`. - */ -module BoolToGorillaSessionOptionsTrackingFlow = - TaintTracking::Global; diff --git a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.qhelp b/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.qhelp deleted file mode 100644 index 2e88a610c9d8..000000000000 --- a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.qhelp +++ /dev/null @@ -1,42 +0,0 @@ - - - - -

    -Cookies without HttpOnly attribute are accessible to JavaScript running in the same origin. In case of -Cross-Site Scripting (XSS) vulnerability the cookie can be stolen by malicious script. -

    -
    - - -

    -Protect sensitive cookies, such as related to authentication, by setting HttpOnly to true to make -them not accessible to JavaScript. -

    -
    - - - -

    -In the following example the default HttpOnly value is false. -

    - - - -

    -In the example below HttpOnly is set to true. -

    - - - -
    - - - -
  • type Cookie,
  • -
  • Set-Cookie Header,
  • - -
    -
    \ No newline at end of file diff --git a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.ql b/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.ql deleted file mode 100644 index 1b135ae87f95..000000000000 --- a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.ql +++ /dev/null @@ -1,99 +0,0 @@ -/** - * @name 'HttpOnly' attribute is not set to true - * @description Omitting the 'HttpOnly' attribute for security sensitive data allows - * malicious JavaScript to steal it in case of XSS vulnerability. Always set - * 'HttpOnly' to 'true' to authentication related cookie to make it - * not accessible by JavaScript. - * @kind path-problem - * @problem.severity warning - * @precision high - * @id go/cookie-httponly-not-set - * @tags security - * experimental - * external/cwe/cwe-1004 - */ - -import go -import AuthCookie - -module NetHttpCookieTrackingFlow = - DataFlow::MergePathGraph; - -module GorillaTrackingFlow = - DataFlow::MergePathGraph3; - -module MergedFlow = - DataFlow::MergePathGraph3; - -import MergedFlow::PathGraph - -/** Holds if `HttpOnly` of `net/http.SetCookie` is set to `false` or not set (default value is used). */ -predicate isNetHttpCookieFlow( - NetHttpCookieTrackingFlow::PathNode source, NetHttpCookieTrackingFlow::PathNode sink -) { - exists( - NameToNetHttpCookieTrackingFlow::PathNode sensitiveName, - NameToNetHttpCookieTrackingFlow::PathNode setCookieSink - | - NameToNetHttpCookieTrackingFlow::flowPath(sensitiveName, setCookieSink) and - ( - not BoolToNetHttpCookieTrackingFlow::flowTo(sink.getNode()) and - source.asPathNode1() = sensitiveName and - sink.asPathNode1() = setCookieSink - or - BoolToNetHttpCookieTrackingFlow::flowPath(source.asPathNode2(), sink.asPathNode2()) and - source.getNode().getBoolValue() = false and - setCookieSink.getNode() = sink.getNode() - ) - ) -} - -/** - * Holds if there is gorilla cookie store creation to `Save` path and - * `HttpOnly` is set to `false` or not set (default value is used). - */ -predicate isGorillaSessionsCookieFlow( - GorillaTrackingFlow::PathNode source, GorillaTrackingFlow::PathNode sink -) { - exists( - GorillaCookieStoreSaveTrackingFlow::PathNode cookieStoreCreate, - GorillaCookieStoreSaveTrackingFlow::PathNode sessionSave - | - GorillaCookieStoreSaveTrackingFlow::flowPath(cookieStoreCreate, sessionSave) and - ( - not GorillaSessionOptionsTrackingFlow::flowTo(sink.getNode()) and - source.asPathNode1() = cookieStoreCreate and - sink.asPathNode1() = sessionSave - or - exists(GorillaTrackingFlow::PathNode options, GorillaTrackingFlow::PathNode sessionSave2 | - GorillaSessionOptionsTrackingFlow::flowPath(options.asPathNode2(), - sessionSave2.asPathNode2()) and - ( - not BoolToGorillaSessionOptionsTrackingFlow::flowTo(sink.getNode()) and - sink = sessionSave2 and - source = options and - sessionSave.getNode() = sessionSave2.getNode() - or - BoolToGorillaSessionOptionsTrackingFlow::flowPath(source.asPathNode3(), sink.asPathNode3()) and - source.getNode().getBoolValue() = false and - sink.getNode() = sessionSave.getNode() - ) - ) - ) - ) -} - -from MergedFlow::PathNode source, MergedFlow::PathNode sink -where - isNetHttpCookieFlow(source.asPathNode1(), sink.asPathNode1()) or - BoolToGinSetCookieTrackingFlow::flowPath(source.asPathNode2(), sink.asPathNode2()) or - isGorillaSessionsCookieFlow(source.asPathNode3(), sink.asPathNode3()) -select sink.getNode(), source, sink, "Cookie attribute 'HttpOnly' is not set to true." diff --git a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyBad.go b/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyBad.go deleted file mode 100644 index 852e2f3f3db5..000000000000 --- a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyBad.go +++ /dev/null @@ -1,17 +0,0 @@ -package main - -import ( - "net/http" -) - -func handler(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "session", - Value: "secret", - } - http.SetCookie(w, &c) -} - -func main() { - http.HandleFunc("/", handler) -} diff --git a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyGood.go b/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyGood.go deleted file mode 100644 index b0b505e2007d..000000000000 --- a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyGood.go +++ /dev/null @@ -1,18 +0,0 @@ -package main - -import ( - "net/http" -) - -func handler(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "session", - Value: "secret", - HttpOnly: true, - } - http.SetCookie(w, &c) -} - -func main() { - http.HandleFunc("/", handler) -} diff --git a/go/ql/src/experimental/CWE-327/CryptoLibraries.qll b/go/ql/src/experimental/CWE-327/CryptoLibraries.qll deleted file mode 100644 index 5518067b668b..000000000000 --- a/go/ql/src/experimental/CWE-327/CryptoLibraries.qll +++ /dev/null @@ -1,213 +0,0 @@ -/** - * Provides classes for modeling cryptographic libraries. - */ - -import go - -/** - * Names of cryptographic algorithms, separated into strong and weak variants. - * - * The names are normalized: upper-case, no spaces, dashes or underscores. - * - * The names are inspired by the names used in real world crypto libraries. - * - * The classification into strong and weak are based on OWASP and Wikipedia (2020). - * - * Sources (more links in qhelp file): - * https://en.wikipedia.org/wiki/Strong_cryptography#Cryptographically_strong_algorithms - * https://en.wikipedia.org/wiki/Strong_cryptography#Examples - * https://cheatsheetseries.owasp.org/cheatsheets/Cryptographic_Storage_Cheat_Sheet.html - */ -private module AlgorithmNames { - predicate isStrongHashingAlgorithm(string name) { - name = - [ - "DSA", "ED25519", "SHA256", "SHA384", "SHA512", "SHA3", "ES256", "ECDSA256", "ES384", - "ECDSA384", "ES512", "ECDSA512", "SHA2", "SHA224" - ] - } - - predicate isWeakHashingAlgorithm(string name) { - name = - [ - "HAVEL128", "MD2", "SHA1", "MD4", "MD5", "PANAMA", "RIPEMD", "RIPEMD128", "RIPEMD256", - "RIPEMD320", "SHA0" - ] - } - - predicate isStrongEncryptionAlgorithm(string name) { - name = ["AES", "AES128", "AES192", "AES256", "AES512", "RSA", "RABBIT", "BLOWFISH"] - } - - predicate isWeakEncryptionAlgorithm(string name) { - name = - [ - "DES", "3DES", "ARC5", "RC5", "TRIPLEDES", "TDEA", "TRIPLEDEA", "ARC2", "RC2", "ARC4", - "RC4", "ARCFOUR" - ] - } - - predicate isStrongPasswordHashingAlgorithm(string name) { - name = ["ARGON2", "PBKDF2", "BCRYPT", "SCRYPT"] - } - - predicate isWeakPasswordHashingAlgorithm(string name) { none() } -} - -private import AlgorithmNames - -/** - * A cryptographic algorithm. - */ -private newtype TCryptographicAlgorithm = - MkHashingAlgorithm(string name, boolean isWeak) { - isStrongHashingAlgorithm(name) and isWeak = false - or - isWeakHashingAlgorithm(name) and isWeak = true - } or - MkEncryptionAlgorithm(string name, boolean isWeak) { - isStrongEncryptionAlgorithm(name) and isWeak = false - or - isWeakEncryptionAlgorithm(name) and isWeak = true - } or - MkPasswordHashingAlgorithm(string name, boolean isWeak) { - isStrongPasswordHashingAlgorithm(name) and isWeak = false - or - isWeakPasswordHashingAlgorithm(name) and isWeak = true - } - -/** - * A cryptographic algorithm. - */ -abstract class CryptographicAlgorithm extends TCryptographicAlgorithm { - /** Gets a textual representation of this element. */ - string toString() { result = this.getName() } - - /** - * Gets the name of this algorithm. - */ - abstract string getName(); - - /** - * Holds if the name of this algorithm matches `name` modulo case, - * white space, dashes and underscores. - */ - bindingset[name] - predicate matchesName(string name) { - exists(name.regexpReplaceAll("[-_]", "").regexpFind("(?i)\\Q" + this.getName() + "\\E", _, _)) - } - - /** - * Holds if this algorithm is weak. - */ - abstract predicate isWeak(); -} - -/** - * A hashing algorithm such as `MD5` or `SHA512`. - */ -class HashingAlgorithm extends MkHashingAlgorithm, CryptographicAlgorithm { - string name; - boolean isWeak; - - HashingAlgorithm() { this = MkHashingAlgorithm(name, isWeak) } - - override string getName() { result = name } - - override predicate isWeak() { isWeak = true } -} - -/** - * An encryption algorithm such as `DES` or `AES512`. - */ -class EncryptionAlgorithm extends MkEncryptionAlgorithm, CryptographicAlgorithm { - string name; - boolean isWeak; - - EncryptionAlgorithm() { this = MkEncryptionAlgorithm(name, isWeak) } - - override string getName() { result = name } - - override predicate isWeak() { isWeak = true } -} - -/** - * A password hashing algorithm such as `PBKDF2` or `SCRYPT`. - */ -class PasswordHashingAlgorithm extends MkPasswordHashingAlgorithm, CryptographicAlgorithm { - string name; - boolean isWeak; - - PasswordHashingAlgorithm() { this = MkPasswordHashingAlgorithm(name, isWeak) } - - override string getName() { result = name } - - override predicate isWeak() { isWeak = true } -} - -/** - * An application of a cryptographic algorithm. - */ -abstract class CryptographicOperation extends DataFlow::Node { - /** - * Gets the input the algorithm is used on, e.g. the plain text input to be encrypted. - */ - abstract Expr getInput(); - - /** - * Gets the applied algorithm. - */ - abstract CryptographicAlgorithm getAlgorithm(); -} - -/** - * A cryptographic operation from the `crypto/md5` package. - */ -class Md5 extends CryptographicOperation, DataFlow::CallNode { - Md5() { this.getTarget().hasQualifiedName("crypto/md5", ["New", "Sum"]) } - - override Expr getInput() { result = this.getArgument(0).asExpr() } - - override CryptographicAlgorithm getAlgorithm() { - result.matchesName(this.getTarget().getPackage().getName()) - } -} - -/** - * A cryptographic operation from the `crypto/sha1` package. - */ -class Sha1 extends CryptographicOperation, DataFlow::CallNode { - Sha1() { this.getTarget().hasQualifiedName("crypto/sha1", ["New", "Sum"]) } - - override Expr getInput() { result = this.getArgument(0).asExpr() } - - override CryptographicAlgorithm getAlgorithm() { - result.matchesName(this.getTarget().getPackage().getName()) - } -} - -/** - * A cryptographic operation from the `crypto/des` package. - */ -class Des extends CryptographicOperation, DataFlow::CallNode { - Des() { this.getTarget().hasQualifiedName("crypto/des", ["NewCipher", "NewTripleDESCipher"]) } - - override Expr getInput() { result = this.getArgument(0).asExpr() } - - override CryptographicAlgorithm getAlgorithm() { - result.matchesName(this.getTarget().getPackage().getName()) - } -} - -/** - * A cryptographic operation from the `crypto/rc4` package. - */ -class Rc4 extends CryptographicOperation, DataFlow::CallNode { - Rc4() { this.getTarget().hasQualifiedName("crypto/rc4", "NewCipher") } - - override Expr getInput() { result = this.getArgument(0).asExpr() } - - override CryptographicAlgorithm getAlgorithm() { - result.matchesName(this.getTarget().getPackage().getName()) - } -} diff --git a/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithm.ql b/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithm.ql deleted file mode 100644 index ffaaae8e02a5..000000000000 --- a/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithm.ql +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @name Use of a weak cryptographic algorithm - * @description Using weak cryptographic algorithms can allow an attacker to compromise security. - * @kind path-problem - * @problem.severity error - * @id go/weak-crypto-algorithm - * @tags security - * experimental - * external/cwe/cwe-327 - * external/cwe/cwe-328 - */ - -import go -import WeakCryptoAlgorithmCustomizations -import WeakCryptoAlgorithm::Flow::PathGraph - -from WeakCryptoAlgorithm::Flow::PathNode source, WeakCryptoAlgorithm::Flow::PathNode sink -where WeakCryptoAlgorithm::Flow::flowPath(source, sink) -select sink.getNode(), source, sink, "$@ is used in a weak cryptographic algorithm.", - source.getNode(), "Sensitive data" diff --git a/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithmCustomizations.qll b/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithmCustomizations.qll deleted file mode 100644 index b9104f1fe096..000000000000 --- a/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithmCustomizations.qll +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Provides default sources, sinks and sanitizers for reasoning about - * sensitive information in weak cryptographic algorithms, - * as well as extension points for adding your own. - */ - -import go -private import semmle.go.security.SensitiveActions -private import CryptoLibraries - -/** - * Provides default sources, sinks and sanitizers for reasoning about - * sensitive information in weak cryptographic algorithms, - * as well as extension points for adding your own. - */ -module WeakCryptoAlgorithm { - /** - * A data flow source for sensitive information in weak cryptographic algorithms. - */ - abstract class Source extends DataFlow::Node { } - - /** - * A data flow sink for sensitive information in weak cryptographic algorithms. - */ - abstract class Sink extends DataFlow::Node { } - - /** - * A sanitizer for sensitive information in weak cryptographic algorithms. - */ - abstract class Sanitizer extends DataFlow::Node { } - - /** - * A sensitive source. - */ - class SensitiveSource extends Source { - SensitiveSource() { this.asExpr() instanceof SensitiveExpr } - } - - /** - * An expression used by a weak cryptographic algorithm. - */ - class WeakCryptographicOperationSink extends Sink { - WeakCryptographicOperationSink() { - exists(CryptographicOperation application | - application.getAlgorithm().isWeak() and - this.asExpr() = application.getInput() - ) - } - } - - private module Config implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof Source } - - predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } - - predicate observeDiffInformedIncrementalMode() { any() } - } - - /** - * Tracks taint flow from sensitive information to weak cryptographic - * algorithms. - */ - module Flow = TaintTracking::Global; -} diff --git a/go/ql/src/experimental/CWE-327/examples/Crypto.go b/go/ql/src/experimental/CWE-327/examples/Crypto.go deleted file mode 100644 index bc2b2fdeba44..000000000000 --- a/go/ql/src/experimental/CWE-327/examples/Crypto.go +++ /dev/null @@ -1,53 +0,0 @@ -package main - -import ( - "crypto/aes" - "crypto/des" - "crypto/md5" - "crypto/rc4" - "crypto/sha1" - "crypto/sha256" -) - -func main() { - public := []byte("hello") - - password := []byte("123456") - buf := password // testing dataflow by passing into different variable - - // BAD, des is a weak crypto algorithm and password is sensitive data - des.NewTripleDESCipher(buf) - - // BAD, md5 is a weak crypto algorithm and password is sensitive data - md5.Sum(buf) - - // BAD, rc4 is a weak crypto algorithm and password is sensitive data - rc4.NewCipher(buf) - - // BAD, sha1 is a weak crypto algorithm and password is sensitive data - sha1.Sum(buf) - - // GOOD, password is sensitive data but aes is a strong crypto algorithm - aes.NewCipher(buf) - - // GOOD, password is sensitive data but sha256 is a strong crypto algorithm - sha256.Sum256(buf) - - // GOOD, des is a weak crypto algorithm but public is not sensitive data - des.NewTripleDESCipher(public) - - // GOOD, md5 is a weak crypto algorithm but public is not sensitive data - md5.Sum(public) - - // GOOD, rc4 is a weak crypto algorithm but public is not sensitive data - rc4.NewCipher(public) - - // GOOD, sha1 is a weak crypto algorithm but public is not sensitive data - sha1.Sum(public) - - // GOOD, aes is a strong crypto algorithm and public is not sensitive data - aes.NewCipher(public) - - // GOOD, sha256 is a strong crypto algorithm and public is not sensitive data - sha256.Sum256(public) -} diff --git a/go/ql/src/experimental/CWE-918/validator.qll b/go/ql/src/experimental/CWE-918/validator.qll index 5b9840b8494c..2c9dc0592f36 100644 --- a/go/ql/src/experimental/CWE-918/validator.qll +++ b/go/ql/src/experimental/CWE-918/validator.qll @@ -24,7 +24,7 @@ class FieldWithTags extends FieldDecl { * For example: the tag `json:"word" binding:"required,alpha"` yields `key: "json", value: "word"` * and `key: "binding" values: "required","alpha"`. */ - predicate getTagByKeyValue(string key, string value) { + predicate hasTagKeyValue(string key, string value) { exists(string tag, string key_value, string values | this.getTag().toString() = tag and // Each key_value is like key:"value1,value2" @@ -50,7 +50,7 @@ class AlphanumericStructFieldRead extends DataFlow::Node { exists(FieldWithTags decl, Field field, string tag | this = field.getARead() and field.getDeclaration() = decl.getNameExpr(0) and - decl.getTagByKeyValue(key, tag) and + decl.hasTagKeyValue(key, tag) and isAlphanumericValidationKind(tag) ) } diff --git a/go/ql/src/experimental/frameworks/DecompressionBombsCustomizations.qll b/go/ql/src/experimental/frameworks/DecompressionBombsCustomizations.qll index 50fc7d06b567..063836b55134 100644 --- a/go/ql/src/experimental/frameworks/DecompressionBombsCustomizations.qll +++ b/go/ql/src/experimental/frameworks/DecompressionBombsCustomizations.qll @@ -511,7 +511,7 @@ module DecompressionBombs { } /** - * Provides decompression bomb sinks for packages that use some standard IO interfaces/methods for reading decompressed data + * A standard IO function for reading decompressed data. */ class GeneralReadIoSink extends Sink { GeneralReadIoSink() { diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 4a68e3757034..09af5091f680 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.4.8 +version: 1.5.2 groups: - go - queries diff --git a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected b/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected deleted file mode 100644 index 355c0a62b1b7..000000000000 --- a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected +++ /dev/null @@ -1,432 +0,0 @@ -edges -| CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | CookieWithoutHttpOnly.go:15:20:15:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | CookieWithoutHttpOnly.go:15:21:15:21 | c | provenance | | -| CookieWithoutHttpOnly.go:12:10:12:18 | "session" | CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:15:20:15:21 | &... [pointer] | CookieWithoutHttpOnly.go:15:20:15:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:15:21:15:21 | c | CookieWithoutHttpOnly.go:15:20:15:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:15:21:15:21 | c | CookieWithoutHttpOnly.go:15:20:15:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:21:24:21 | c | provenance | | -| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:21:24:21 | c | provenance | | -| CookieWithoutHttpOnly.go:20:13:20:21 | "session" | CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:22:13:22:17 | false | CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:24:21:24:21 | c | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:24:21:24:21 | c | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:24:21:24:21 | c | CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:24:21:24:21 | c | CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:21:33:21 | c | provenance | | -| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:21:33:21 | c | provenance | | -| CookieWithoutHttpOnly.go:29:13:29:21 | "session" | CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:31:13:31:16 | true | CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:33:21:33:21 | c | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:33:21:33:21 | c | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:33:21:33:21 | c | CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:33:21:33:21 | c | CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:21:42:21 | c | provenance | | -| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:21:42:21 | c | provenance | | -| CookieWithoutHttpOnly.go:38:10:38:18 | "session" | CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:41:15:41:18 | true | CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:42:21:42:21 | c | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:42:21:42:21 | c | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:42:21:42:21 | c | CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:42:21:42:21 | c | CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:21:51:21 | c | provenance | | -| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:21:51:21 | c | provenance | | -| CookieWithoutHttpOnly.go:47:10:47:18 | "session" | CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:50:15:50:19 | false | CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:51:21:51:21 | c | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:51:21:51:21 | c | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:51:21:51:21 | c | CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:51:21:51:21 | c | CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:55:2:55:4 | definition of val | CookieWithoutHttpOnly.go:59:13:59:15 | val | provenance | | -| CookieWithoutHttpOnly.go:55:9:55:13 | false | CookieWithoutHttpOnly.go:59:13:59:15 | val | provenance | | -| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:21:61:21 | c | provenance | | -| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:21:61:21 | c | provenance | | -| CookieWithoutHttpOnly.go:57:13:57:21 | "session" | CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:59:13:59:15 | val | CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:61:21:61:21 | c | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:61:21:61:21 | c | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:61:21:61:21 | c | CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:61:21:61:21 | c | CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:65:2:65:4 | definition of val | CookieWithoutHttpOnly.go:69:13:69:15 | val | provenance | | -| CookieWithoutHttpOnly.go:65:9:65:12 | true | CookieWithoutHttpOnly.go:69:13:69:15 | val | provenance | | -| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:21:71:21 | c | provenance | | -| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:21:71:21 | c | provenance | | -| CookieWithoutHttpOnly.go:67:13:67:21 | "session" | CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:69:13:69:15 | val | CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:71:21:71:21 | c | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:71:21:71:21 | c | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:71:21:71:21 | c | CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:71:21:71:21 | c | CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:75:2:75:4 | definition of val | CookieWithoutHttpOnly.go:80:15:80:17 | val | provenance | | -| CookieWithoutHttpOnly.go:75:9:75:12 | true | CookieWithoutHttpOnly.go:80:15:80:17 | val | provenance | | -| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:21:81:21 | c | provenance | | -| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:21:81:21 | c | provenance | | -| CookieWithoutHttpOnly.go:77:10:77:18 | "session" | CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:80:15:80:17 | val | CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:81:21:81:21 | c | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:81:21:81:21 | c | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:81:21:81:21 | c | CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:81:21:81:21 | c | CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:85:2:85:4 | definition of val | CookieWithoutHttpOnly.go:90:15:90:17 | val | provenance | | -| CookieWithoutHttpOnly.go:85:9:85:13 | false | CookieWithoutHttpOnly.go:90:15:90:17 | val | provenance | | -| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:21:91:21 | c | provenance | | -| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:21:91:21 | c | provenance | | -| CookieWithoutHttpOnly.go:87:10:87:18 | "session" | CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:90:15:90:17 | val | CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:91:21:91:21 | c | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:91:21:91:21 | c | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:91:21:91:21 | c | CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:91:21:91:21 | c | CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | CookieWithoutHttpOnly.go:100:20:100:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | CookieWithoutHttpOnly.go:100:21:100:21 | c | provenance | | -| CookieWithoutHttpOnly.go:99:15:99:19 | false | CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:100:20:100:21 | &... [pointer] | CookieWithoutHttpOnly.go:100:20:100:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:100:21:100:21 | c | CookieWithoutHttpOnly.go:100:20:100:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:100:21:100:21 | c | CookieWithoutHttpOnly.go:100:20:100:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:104:10:104:18 | "session" | CookieWithoutHttpOnly.go:106:10:106:13 | name | provenance | | -| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:21:110:21 | c | provenance | | -| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:21:110:21 | c | provenance | | -| CookieWithoutHttpOnly.go:106:10:106:13 | name | CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:109:15:109:19 | false | CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:110:21:110:21 | c | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:110:21:110:21 | c | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:110:21:110:21 | c | CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:110:21:110:21 | c | CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:114:13:114:24 | "login_name" | CookieWithoutHttpOnly.go:116:10:116:16 | session | provenance | | -| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:21:120:21 | c | provenance | | -| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:21:120:21 | c | provenance | | -| CookieWithoutHttpOnly.go:116:10:116:16 | session | CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:119:15:119:19 | false | CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:120:21:120:21 | c | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:120:21:120:21 | c | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:120:21:120:21 | c | CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:120:21:120:21 | c | CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | provenance | | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:126:16:126:20 | store | provenance | | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:134:16:134:20 | store | provenance | | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:146:16:146:20 | store | provenance | | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:158:16:158:20 | store | provenance | | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:170:16:170:20 | store | provenance | | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:183:16:183:20 | store | provenance | | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:195:16:195:20 | store | provenance | | -| CookieWithoutHttpOnly.go:126:2:126:43 | ... := ...[0] | CookieWithoutHttpOnly.go:129:2:129:8 | session | provenance | | -| CookieWithoutHttpOnly.go:126:16:126:20 | store | CookieWithoutHttpOnly.go:126:2:126:43 | ... := ...[0] | provenance | Config | -| CookieWithoutHttpOnly.go:133:2:133:9 | definition of httpOnly | CookieWithoutHttpOnly.go:139:13:139:20 | httpOnly | provenance | | -| CookieWithoutHttpOnly.go:133:14:133:18 | false | CookieWithoutHttpOnly.go:139:13:139:20 | httpOnly | provenance | | -| CookieWithoutHttpOnly.go:134:2:134:43 | ... := ...[0] | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | -| CookieWithoutHttpOnly.go:134:16:134:20 | store | CookieWithoutHttpOnly.go:134:2:134:43 | ... := ...[0] | provenance | Config | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | provenance | | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | provenance | | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] [pointer] | provenance | | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] [pointer] | provenance | | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] [pointer] | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] [pointer] | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | CookieWithoutHttpOnly.go:137:20:140:2 | &... | provenance | | -| CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | CookieWithoutHttpOnly.go:137:20:140:2 | &... | provenance | | -| CookieWithoutHttpOnly.go:139:13:139:20 | httpOnly | CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:146:2:146:43 | ... := ...[0] | CookieWithoutHttpOnly.go:153:2:153:8 | session | provenance | | -| CookieWithoutHttpOnly.go:146:16:146:20 | store | CookieWithoutHttpOnly.go:146:2:146:43 | ... := ...[0] | provenance | Config | -| CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:149:2:149:8 | session [postupdate] | provenance | | -| CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:149:2:149:8 | session [postupdate] [pointer] | provenance | | -| CookieWithoutHttpOnly.go:149:2:149:8 | session [postupdate] | CookieWithoutHttpOnly.go:153:2:153:8 | session | provenance | | -| CookieWithoutHttpOnly.go:149:2:149:8 | session [postupdate] [pointer] | CookieWithoutHttpOnly.go:153:2:153:8 | session | provenance | | -| CookieWithoutHttpOnly.go:149:20:151:2 | &... | CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:149:20:151:2 | &... | CookieWithoutHttpOnly.go:149:2:149:8 | session [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:149:21:151:2 | struct literal | CookieWithoutHttpOnly.go:149:20:151:2 | &... | provenance | | -| CookieWithoutHttpOnly.go:157:2:157:9 | definition of httpOnly | CookieWithoutHttpOnly.go:163:13:163:20 | httpOnly | provenance | | -| CookieWithoutHttpOnly.go:157:14:157:17 | true | CookieWithoutHttpOnly.go:163:13:163:20 | httpOnly | provenance | | -| CookieWithoutHttpOnly.go:158:2:158:43 | ... := ...[0] | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | -| CookieWithoutHttpOnly.go:158:16:158:20 | store | CookieWithoutHttpOnly.go:158:2:158:43 | ... := ...[0] | provenance | Config | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | provenance | | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | provenance | | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] [pointer] | provenance | | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] [pointer] | provenance | | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] [pointer] | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] [pointer] | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | CookieWithoutHttpOnly.go:161:20:164:2 | &... | provenance | | -| CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | CookieWithoutHttpOnly.go:161:20:164:2 | &... | provenance | | -| CookieWithoutHttpOnly.go:163:13:163:20 | httpOnly | CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:169:56:169:63 | argument corresponding to httpOnly | CookieWithoutHttpOnly.go:175:13:175:20 | httpOnly | provenance | | -| CookieWithoutHttpOnly.go:169:56:169:63 | definition of httpOnly | CookieWithoutHttpOnly.go:175:13:175:20 | httpOnly | provenance | | -| CookieWithoutHttpOnly.go:170:2:170:43 | ... := ...[0] | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | -| CookieWithoutHttpOnly.go:170:16:170:20 | store | CookieWithoutHttpOnly.go:170:2:170:43 | ... := ...[0] | provenance | Config | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | provenance | | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | provenance | | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] [pointer] | provenance | | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] [pointer] | provenance | | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] [pointer] | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] [pointer] | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | CookieWithoutHttpOnly.go:173:20:176:2 | &... | provenance | | -| CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | CookieWithoutHttpOnly.go:173:20:176:2 | &... | provenance | | -| CookieWithoutHttpOnly.go:175:13:175:20 | httpOnly | CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:183:2:183:43 | ... := ...[0] | CookieWithoutHttpOnly.go:191:19:191:25 | session | provenance | | -| CookieWithoutHttpOnly.go:183:16:183:20 | store | CookieWithoutHttpOnly.go:183:2:183:43 | ... := ...[0] | provenance | Config | -| CookieWithoutHttpOnly.go:195:2:195:43 | ... := ...[0] | CookieWithoutHttpOnly.go:202:19:202:25 | session | provenance | | -| CookieWithoutHttpOnly.go:195:16:195:20 | store | CookieWithoutHttpOnly.go:195:2:195:43 | ... := ...[0] | provenance | Config | -nodes -| CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:12:10:12:18 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:15:20:15:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:15:20:15:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:15:21:15:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:20:13:20:21 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:22:13:22:17 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:24:21:24:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:24:21:24:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:29:13:29:21 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:31:13:31:16 | true | semmle.label | true | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:33:21:33:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:33:21:33:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:38:10:38:18 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:41:15:41:18 | true | semmle.label | true | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:42:21:42:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:42:21:42:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:47:10:47:18 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:50:15:50:19 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:51:21:51:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:51:21:51:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:55:2:55:4 | definition of val | semmle.label | definition of val | -| CookieWithoutHttpOnly.go:55:9:55:13 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:57:13:57:21 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:59:13:59:15 | val | semmle.label | val | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:61:21:61:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:61:21:61:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:65:2:65:4 | definition of val | semmle.label | definition of val | -| CookieWithoutHttpOnly.go:65:9:65:12 | true | semmle.label | true | -| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:67:13:67:21 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:69:13:69:15 | val | semmle.label | val | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:71:21:71:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:71:21:71:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:75:2:75:4 | definition of val | semmle.label | definition of val | -| CookieWithoutHttpOnly.go:75:9:75:12 | true | semmle.label | true | -| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:77:10:77:18 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:80:15:80:17 | val | semmle.label | val | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:81:21:81:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:81:21:81:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:85:2:85:4 | definition of val | semmle.label | definition of val | -| CookieWithoutHttpOnly.go:85:9:85:13 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:87:10:87:18 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:90:15:90:17 | val | semmle.label | val | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:91:21:91:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:91:21:91:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:99:15:99:19 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:100:20:100:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:100:20:100:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:100:21:100:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:104:10:104:18 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:106:10:106:13 | name | semmle.label | name | -| CookieWithoutHttpOnly.go:109:15:109:19 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:110:21:110:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:110:21:110:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:114:13:114:24 | "login_name" | semmle.label | "login_name" | -| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:116:10:116:16 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:119:15:119:19 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:120:21:120:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:120:21:120:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | semmle.label | call to NewCookieStore | -| CookieWithoutHttpOnly.go:126:2:126:43 | ... := ...[0] | semmle.label | ... := ...[0] | -| CookieWithoutHttpOnly.go:126:16:126:20 | store | semmle.label | store | -| CookieWithoutHttpOnly.go:129:2:129:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:133:2:133:9 | definition of httpOnly | semmle.label | definition of httpOnly | -| CookieWithoutHttpOnly.go:133:14:133:18 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:134:2:134:43 | ... := ...[0] | semmle.label | ... := ...[0] | -| CookieWithoutHttpOnly.go:134:16:134:20 | store | semmle.label | store | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | semmle.label | session [postupdate] | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | semmle.label | session [postupdate] | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] [pointer] | semmle.label | session [postupdate] [pointer] | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] [pointer] | semmle.label | session [postupdate] [pointer] | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:139:13:139:20 | httpOnly | semmle.label | httpOnly | -| CookieWithoutHttpOnly.go:142:2:142:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:142:2:142:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:142:2:142:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:146:2:146:43 | ... := ...[0] | semmle.label | ... := ...[0] | -| CookieWithoutHttpOnly.go:146:16:146:20 | store | semmle.label | store | -| CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | -| CookieWithoutHttpOnly.go:149:2:149:8 | session [postupdate] | semmle.label | session [postupdate] | -| CookieWithoutHttpOnly.go:149:2:149:8 | session [postupdate] [pointer] | semmle.label | session [postupdate] [pointer] | -| CookieWithoutHttpOnly.go:149:20:151:2 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:149:21:151:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:153:2:153:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:153:2:153:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:157:2:157:9 | definition of httpOnly | semmle.label | definition of httpOnly | -| CookieWithoutHttpOnly.go:157:14:157:17 | true | semmle.label | true | -| CookieWithoutHttpOnly.go:158:2:158:43 | ... := ...[0] | semmle.label | ... := ...[0] | -| CookieWithoutHttpOnly.go:158:16:158:20 | store | semmle.label | store | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | semmle.label | session [postupdate] | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | semmle.label | session [postupdate] | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] [pointer] | semmle.label | session [postupdate] [pointer] | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] [pointer] | semmle.label | session [postupdate] [pointer] | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:163:13:163:20 | httpOnly | semmle.label | httpOnly | -| CookieWithoutHttpOnly.go:166:2:166:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:166:2:166:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:166:2:166:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:169:56:169:63 | argument corresponding to httpOnly | semmle.label | argument corresponding to httpOnly | -| CookieWithoutHttpOnly.go:169:56:169:63 | definition of httpOnly | semmle.label | definition of httpOnly | -| CookieWithoutHttpOnly.go:170:2:170:43 | ... := ...[0] | semmle.label | ... := ...[0] | -| CookieWithoutHttpOnly.go:170:16:170:20 | store | semmle.label | store | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | semmle.label | session [postupdate] | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | semmle.label | session [postupdate] | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] [pointer] | semmle.label | session [postupdate] [pointer] | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] [pointer] | semmle.label | session [postupdate] [pointer] | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:175:13:175:20 | httpOnly | semmle.label | httpOnly | -| CookieWithoutHttpOnly.go:178:2:178:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:178:2:178:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:178:2:178:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:183:2:183:43 | ... := ...[0] | semmle.label | ... := ...[0] | -| CookieWithoutHttpOnly.go:183:16:183:20 | store | semmle.label | store | -| CookieWithoutHttpOnly.go:191:19:191:25 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:195:2:195:43 | ... := ...[0] | semmle.label | ... := ...[0] | -| CookieWithoutHttpOnly.go:195:16:195:20 | store | semmle.label | store | -| CookieWithoutHttpOnly.go:202:19:202:25 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:214:66:214:70 | false | semmle.label | false | -subpaths -#select -| CookieWithoutHttpOnly.go:15:20:15:21 | &... | CookieWithoutHttpOnly.go:12:10:12:18 | "session" | CookieWithoutHttpOnly.go:15:20:15:21 | &... | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:22:13:22:17 | false | CookieWithoutHttpOnly.go:24:20:24:21 | &... | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:50:15:50:19 | false | CookieWithoutHttpOnly.go:51:20:51:21 | &... | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:55:9:55:13 | false | CookieWithoutHttpOnly.go:61:20:61:21 | &... | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:85:9:85:13 | false | CookieWithoutHttpOnly.go:91:20:91:21 | &... | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:109:15:109:19 | false | CookieWithoutHttpOnly.go:110:20:110:21 | &... | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:119:15:119:19 | false | CookieWithoutHttpOnly.go:120:20:120:21 | &... | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:129:2:129:8 | session | CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:129:2:129:8 | session | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:142:2:142:8 | session | CookieWithoutHttpOnly.go:133:14:133:18 | false | CookieWithoutHttpOnly.go:142:2:142:8 | session | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:153:2:153:8 | session | CookieWithoutHttpOnly.go:149:21:151:2 | struct literal | CookieWithoutHttpOnly.go:153:2:153:8 | session | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:191:19:191:25 | session | CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:191:19:191:25 | session | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:202:19:202:25 | session | CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:202:19:202:25 | session | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:214:66:214:70 | false | CookieWithoutHttpOnly.go:214:66:214:70 | false | CookieWithoutHttpOnly.go:214:66:214:70 | false | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.go b/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.go deleted file mode 100644 index 00be0bbf44aa..000000000000 --- a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.go +++ /dev/null @@ -1,219 +0,0 @@ -package main - -import ( - "net/http" - - "github.com/gin-gonic/gin" - "github.com/gorilla/sessions" -) - -func handler1(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "session", - Value: "secret", - } - http.SetCookie(w, &c) // BAD: HttpOnly set to false by default -} - -func handler2(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "session", - Value: "secret", - HttpOnly: false, - } - http.SetCookie(w, &c) // BAD: HttpOnly explicitly set to false -} - -func handler3(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "session", - Value: "secret", - HttpOnly: true, - } - http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true -} - -func handler4(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "session", - Value: "secret", - } - c.HttpOnly = true - http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true -} - -func handler5(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "session", - Value: "secret", - } - c.HttpOnly = false - http.SetCookie(w, &c) // BAD: HttpOnly explicitly set to false -} - -func handler6(w http.ResponseWriter, r *http.Request) { - val := false - c := http.Cookie{ - Name: "session", - Value: "secret", - HttpOnly: val, - } - http.SetCookie(w, &c) // BAD: HttpOnly explicitly set to false -} - -func handler7(w http.ResponseWriter, r *http.Request) { - val := true - c := http.Cookie{ - Name: "session", - Value: "secret", - HttpOnly: val, - } - http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true -} - -func handler8(w http.ResponseWriter, r *http.Request) { - val := true - c := http.Cookie{ - Name: "session", - Value: "secret", - } - c.HttpOnly = val - http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true -} - -func handler9(w http.ResponseWriter, r *http.Request) { - val := false - c := http.Cookie{ - Name: "session", - Value: "secret", - } - c.HttpOnly = val - http.SetCookie(w, &c) // BAD: HttpOnly explicitly set to false -} - -func handler10(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "consent", - Value: "1", - } - c.HttpOnly = false - http.SetCookie(w, &c) // GOOD: Name is not auth related -} - -func handler11(w http.ResponseWriter, r *http.Request) { - name := "session" - c := http.Cookie{ - Name: name, - Value: "secret", - } - c.HttpOnly = false - http.SetCookie(w, &c) // BAD: auth related name -} - -func handler12(w http.ResponseWriter, r *http.Request) { - session := "login_name" - c := http.Cookie{ - Name: session, - Value: "secret", - } - c.HttpOnly = false - http.SetCookie(w, &c) // BAD: auth related name -} - -var store = sessions.NewCookieStore([]byte("aa")) - -func handler13(w http.ResponseWriter, r *http.Request) { - session, _ := store.Get(r, "session-name") - session.Values["foo"] = "secret" - - session.Save(r, w) // BAD: Default options are set (false) -} - -func handler14(w http.ResponseWriter, r *http.Request) { - httpOnly := false - session, _ := store.Get(r, "session-name") - session.Values["foo"] = "secret" - - session.Options = &sessions.Options{ - MaxAge: -1, - HttpOnly: httpOnly, - } - - session.Save(r, w) // BAD: Explicitly set to false -} - -func handler15(w http.ResponseWriter, r *http.Request) { - session, _ := store.Get(r, "session-name") - session.Values["foo"] = "secret" - - session.Options = &sessions.Options{ - MaxAge: -1, - } - - session.Save(r, w) // BAD: default (false) is used -} - -func handler16(w http.ResponseWriter, r *http.Request) { - httpOnly := true - session, _ := store.Get(r, "session-name") - session.Values["foo"] = "secret" - - session.Options = &sessions.Options{ - MaxAge: -1, - HttpOnly: httpOnly, - } - - session.Save(r, w) // GOOD: value is true -} - -func handler17(w http.ResponseWriter, r *http.Request, httpOnly bool) { - session, _ := store.Get(r, "session-name") - session.Values["foo"] = "secret" - - session.Options = &sessions.Options{ - MaxAge: -1, - HttpOnly: httpOnly, - } - - session.Save(r, w) // GOOD: value is unknown -} - -func handler18(w http.ResponseWriter, r *http.Request) { - httpOnly := false - session, _ := store.Get(r, "session-name") - session.Values["foo"] = "secret" - - session.Options = &sessions.Options{ - MaxAge: -1, - HttpOnly: httpOnly, - } - - store.Save(r, w, session) // BAD: Explicitly set to false -} - -func handler19(w http.ResponseWriter, r *http.Request) { - session, _ := store.Get(r, "session-name") - session.Values["foo"] = "secret" - - session.Options = &sessions.Options{ - MaxAge: -1, - } - - store.Save(r, w, session) // BAD: default (false) is used -} - -func main() { - - router := gin.Default() - - router.GET("/cookie", func(c *gin.Context) { - - _, err := c.Cookie("session") - - if err != nil { - c.SetCookie("session", "test", 3600, "/", "localhost", false, false) // BAD: httpOnly set to false - } - }) - - router.Run() -} diff --git a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.qlref b/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.qlref deleted file mode 100644 index ca6a153038cf..000000000000 --- a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/CWE-1004/CookieWithoutHttpOnly.ql diff --git a/go/ql/test/experimental/CWE-1004/vendor/github.com/gorilla/sessions/stub.go b/go/ql/test/experimental/CWE-1004/vendor/github.com/gorilla/sessions/stub.go deleted file mode 100644 index 2ebc3858163f..000000000000 --- a/go/ql/test/experimental/CWE-1004/vendor/github.com/gorilla/sessions/stub.go +++ /dev/null @@ -1,75 +0,0 @@ -// Code generated by depstubber. DO NOT EDIT. -// This is a simple stub for github.com/gorilla/sessions, strictly for use in testing. - -// See the LICENSE file for information about the licensing of the original library. -// Source: github.com/gorilla/sessions (exports: CookieStore; functions: NewCookieStore) - -// Package sessions is a stub of github.com/gorilla/sessions, generated by depstubber. -package sessions - -import ( - http "net/http" -) - -type CookieStore struct { - Codecs []interface{} - Options *Options -} - -func (_ *CookieStore) Get(_ *http.Request, _ string) (*Session, error) { - return nil, nil -} - -func (_ *CookieStore) MaxAge(_ int) {} - -func (_ *CookieStore) New(_ *http.Request, _ string) (*Session, error) { - return nil, nil -} - -func (_ *CookieStore) Save(_ *http.Request, _ http.ResponseWriter, _ *Session) error { - return nil -} - -func NewCookieStore(_ ...[]byte) *CookieStore { - return nil -} - -type Options struct { - Path string - Domain string - MaxAge int - Secure bool - HttpOnly bool - SameSite http.SameSite -} - -type Session struct { - ID string - Values map[interface{}]interface{} - Options *Options - IsNew bool -} - -func (_ *Session) AddFlash(_ interface{}, _ ...string) {} - -func (_ *Session) Flashes(_ ...string) []interface{} { - return nil -} - -func (_ *Session) Name() string { - return "" -} - -func (_ *Session) Save(_ *http.Request, _ http.ResponseWriter) error { - return nil -} - -func (_ *Session) Store() Store { - return nil -} - -type Store interface { - Get(_ *http.Request, _ string) (*Session, error) - New(_ *http.Request, _ string) (*Session, error) - Save(_ *http.Request, _ http.ResponseWriter, _ *Session) error -} diff --git a/go/ql/test/experimental/CWE-1004/vendor/modules.txt b/go/ql/test/experimental/CWE-1004/vendor/modules.txt deleted file mode 100644 index f38695b1ffcb..000000000000 --- a/go/ql/test/experimental/CWE-1004/vendor/modules.txt +++ /dev/null @@ -1,6 +0,0 @@ -# github.com/gin-gonic/gin v1.7.1 -## explicit -github.com/gin-gonic/gin -# github.com/gorilla/sessions v1.2.1 -## explicit -github.com/gorilla/sessions diff --git a/go/ql/test/library-tests/semmle/go/dataflow/GlobalVariableSideEffects/Flows.ql b/go/ql/test/library-tests/semmle/go/dataflow/GlobalVariableSideEffects/Flows.ql index 171aee868248..e6ba4ce067b5 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/GlobalVariableSideEffects/Flows.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/GlobalVariableSideEffects/Flows.ql @@ -2,7 +2,6 @@ import go import utils.test.InlineFlowTest string getArgString(DataFlow::Node src, DataFlow::Node sink) { - exists(src) and result = "\"" + sink.toString() + " (from source " + src.(DataFlow::CallNode).getArgument(0).getExactValue() + ")\"" diff --git a/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.expected b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.expected new file mode 100644 index 000000000000..93988411db21 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.expected @@ -0,0 +1,139 @@ +#select +| CookieWithoutHttpOnly.go:14:2:14:22 | call to SetCookie | CookieWithoutHttpOnly.go:11:10:11:18 | "session" | CookieWithoutHttpOnly.go:14:20:14:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:11:10:11:18 | "session" | session | +| CookieWithoutHttpOnly.go:23:2:23:22 | call to SetCookie | CookieWithoutHttpOnly.go:19:13:19:21 | "session" | CookieWithoutHttpOnly.go:23:20:23:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:19:13:19:21 | "session" | session | +| CookieWithoutHttpOnly.go:50:2:50:22 | call to SetCookie | CookieWithoutHttpOnly.go:46:10:46:18 | "session" | CookieWithoutHttpOnly.go:50:20:50:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:46:10:46:18 | "session" | session | +| CookieWithoutHttpOnly.go:60:2:60:22 | call to SetCookie | CookieWithoutHttpOnly.go:56:13:56:21 | "session" | CookieWithoutHttpOnly.go:60:20:60:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:56:13:56:21 | "session" | session | +| CookieWithoutHttpOnly.go:90:2:90:22 | call to SetCookie | CookieWithoutHttpOnly.go:86:10:86:18 | "session" | CookieWithoutHttpOnly.go:90:20:90:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:86:10:86:18 | "session" | session | +| CookieWithoutHttpOnly.go:109:2:109:22 | call to SetCookie | CookieWithoutHttpOnly.go:103:10:103:18 | "session" | CookieWithoutHttpOnly.go:109:20:109:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:103:10:103:18 | "session" | session | +| CookieWithoutHttpOnly.go:119:2:119:22 | call to SetCookie | CookieWithoutHttpOnly.go:113:13:113:24 | "login_name" | CookieWithoutHttpOnly.go:119:20:119:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:113:13:113:24 | "login_name" | login_name | +| CookieWithoutHttpOnly.go:119:2:119:22 | call to SetCookie | CookieWithoutHttpOnly.go:115:10:115:16 | session | CookieWithoutHttpOnly.go:119:20:119:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:115:10:115:16 | session | session | +| CookieWithoutHttpOnly.go:131:4:131:71 | call to SetCookie | CookieWithoutHttpOnly.go:131:16:131:24 | "session" | CookieWithoutHttpOnly.go:131:16:131:24 | "session" | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:131:16:131:24 | "session" | session | +edges +| CookieWithoutHttpOnly.go:10:7:13:2 | struct literal | CookieWithoutHttpOnly.go:14:20:14:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:10:7:13:2 | struct literal | CookieWithoutHttpOnly.go:14:21:14:21 | c | provenance | | +| CookieWithoutHttpOnly.go:11:10:11:18 | "session" | CookieWithoutHttpOnly.go:10:7:13:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:14:20:14:21 | &... [pointer] | CookieWithoutHttpOnly.go:14:20:14:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:14:21:14:21 | c | CookieWithoutHttpOnly.go:14:20:14:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:14:21:14:21 | c | CookieWithoutHttpOnly.go:14:20:14:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:18:7:22:2 | struct literal | CookieWithoutHttpOnly.go:23:20:23:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:18:7:22:2 | struct literal | CookieWithoutHttpOnly.go:23:21:23:21 | c | provenance | | +| CookieWithoutHttpOnly.go:19:13:19:21 | "session" | CookieWithoutHttpOnly.go:18:7:22:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:23:20:23:21 | &... [pointer] | CookieWithoutHttpOnly.go:23:20:23:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:23:21:23:21 | c | CookieWithoutHttpOnly.go:23:20:23:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:23:21:23:21 | c | CookieWithoutHttpOnly.go:23:20:23:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:27:7:31:2 | struct literal | CookieWithoutHttpOnly.go:32:20:32:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:27:7:31:2 | struct literal | CookieWithoutHttpOnly.go:32:21:32:21 | c | provenance | | +| CookieWithoutHttpOnly.go:28:13:28:21 | "session" | CookieWithoutHttpOnly.go:27:7:31:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:32:20:32:21 | &... [pointer] | CookieWithoutHttpOnly.go:32:20:32:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:32:21:32:21 | c | CookieWithoutHttpOnly.go:32:20:32:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:32:21:32:21 | c | CookieWithoutHttpOnly.go:32:20:32:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:36:7:39:2 | struct literal | CookieWithoutHttpOnly.go:41:20:41:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:36:7:39:2 | struct literal | CookieWithoutHttpOnly.go:41:21:41:21 | c | provenance | | +| CookieWithoutHttpOnly.go:37:10:37:18 | "session" | CookieWithoutHttpOnly.go:36:7:39:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:41:20:41:21 | &... [pointer] | CookieWithoutHttpOnly.go:41:20:41:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:41:21:41:21 | c | CookieWithoutHttpOnly.go:41:20:41:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:41:21:41:21 | c | CookieWithoutHttpOnly.go:41:20:41:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:45:7:48:2 | struct literal | CookieWithoutHttpOnly.go:50:20:50:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:45:7:48:2 | struct literal | CookieWithoutHttpOnly.go:50:21:50:21 | c | provenance | | +| CookieWithoutHttpOnly.go:46:10:46:18 | "session" | CookieWithoutHttpOnly.go:45:7:48:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:50:20:50:21 | &... [pointer] | CookieWithoutHttpOnly.go:50:20:50:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:50:21:50:21 | c | CookieWithoutHttpOnly.go:50:20:50:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:50:21:50:21 | c | CookieWithoutHttpOnly.go:50:20:50:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:55:7:59:2 | struct literal | CookieWithoutHttpOnly.go:60:20:60:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:55:7:59:2 | struct literal | CookieWithoutHttpOnly.go:60:21:60:21 | c | provenance | | +| CookieWithoutHttpOnly.go:56:13:56:21 | "session" | CookieWithoutHttpOnly.go:55:7:59:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:60:20:60:21 | &... [pointer] | CookieWithoutHttpOnly.go:60:20:60:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:60:21:60:21 | c | CookieWithoutHttpOnly.go:60:20:60:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:60:21:60:21 | c | CookieWithoutHttpOnly.go:60:20:60:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:65:7:69:2 | struct literal | CookieWithoutHttpOnly.go:70:20:70:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:65:7:69:2 | struct literal | CookieWithoutHttpOnly.go:70:21:70:21 | c | provenance | | +| CookieWithoutHttpOnly.go:66:13:66:21 | "session" | CookieWithoutHttpOnly.go:65:7:69:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:70:20:70:21 | &... [pointer] | CookieWithoutHttpOnly.go:70:20:70:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:70:21:70:21 | c | CookieWithoutHttpOnly.go:70:20:70:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:70:21:70:21 | c | CookieWithoutHttpOnly.go:70:20:70:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:75:7:78:2 | struct literal | CookieWithoutHttpOnly.go:80:20:80:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:75:7:78:2 | struct literal | CookieWithoutHttpOnly.go:80:21:80:21 | c | provenance | | +| CookieWithoutHttpOnly.go:76:10:76:18 | "session" | CookieWithoutHttpOnly.go:75:7:78:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:80:20:80:21 | &... [pointer] | CookieWithoutHttpOnly.go:80:20:80:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:80:21:80:21 | c | CookieWithoutHttpOnly.go:80:20:80:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:80:21:80:21 | c | CookieWithoutHttpOnly.go:80:20:80:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:85:7:88:2 | struct literal | CookieWithoutHttpOnly.go:90:20:90:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:85:7:88:2 | struct literal | CookieWithoutHttpOnly.go:90:21:90:21 | c | provenance | | +| CookieWithoutHttpOnly.go:86:10:86:18 | "session" | CookieWithoutHttpOnly.go:85:7:88:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:90:20:90:21 | &... [pointer] | CookieWithoutHttpOnly.go:90:20:90:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:90:21:90:21 | c | CookieWithoutHttpOnly.go:90:20:90:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:90:21:90:21 | c | CookieWithoutHttpOnly.go:90:20:90:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:103:10:103:18 | "session" | CookieWithoutHttpOnly.go:105:10:105:13 | name | provenance | | +| CookieWithoutHttpOnly.go:104:7:107:2 | struct literal | CookieWithoutHttpOnly.go:109:20:109:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:104:7:107:2 | struct literal | CookieWithoutHttpOnly.go:109:21:109:21 | c | provenance | | +| CookieWithoutHttpOnly.go:105:10:105:13 | name | CookieWithoutHttpOnly.go:104:7:107:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:109:20:109:21 | &... [pointer] | CookieWithoutHttpOnly.go:109:20:109:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:109:21:109:21 | c | CookieWithoutHttpOnly.go:109:20:109:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:109:21:109:21 | c | CookieWithoutHttpOnly.go:109:20:109:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:113:13:113:24 | "login_name" | CookieWithoutHttpOnly.go:115:10:115:16 | session | provenance | | +| CookieWithoutHttpOnly.go:114:7:117:2 | struct literal | CookieWithoutHttpOnly.go:119:20:119:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:114:7:117:2 | struct literal | CookieWithoutHttpOnly.go:119:21:119:21 | c | provenance | | +| CookieWithoutHttpOnly.go:115:10:115:16 | session | CookieWithoutHttpOnly.go:114:7:117:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:119:20:119:21 | &... [pointer] | CookieWithoutHttpOnly.go:119:20:119:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:119:21:119:21 | c | CookieWithoutHttpOnly.go:119:20:119:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:119:21:119:21 | c | CookieWithoutHttpOnly.go:119:20:119:21 | &... [pointer] | provenance | | +nodes +| CookieWithoutHttpOnly.go:10:7:13:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:11:10:11:18 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:14:20:14:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:14:20:14:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:14:21:14:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:18:7:22:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:19:13:19:21 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:23:20:23:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:23:20:23:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:23:21:23:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:27:7:31:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:28:13:28:21 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:32:20:32:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:32:20:32:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:32:21:32:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:36:7:39:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:37:10:37:18 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:41:20:41:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:41:20:41:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:41:21:41:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:45:7:48:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:46:10:46:18 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:50:20:50:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:50:20:50:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:50:21:50:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:55:7:59:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:56:13:56:21 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:60:20:60:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:60:20:60:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:60:21:60:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:65:7:69:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:66:13:66:21 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:70:20:70:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:70:20:70:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:70:21:70:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:75:7:78:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:76:10:76:18 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:80:20:80:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:80:20:80:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:80:21:80:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:85:7:88:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:86:10:86:18 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:90:20:90:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:90:20:90:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:90:21:90:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:103:10:103:18 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:104:7:107:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:105:10:105:13 | name | semmle.label | name | +| CookieWithoutHttpOnly.go:109:20:109:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:109:20:109:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:109:21:109:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:113:13:113:24 | "login_name" | semmle.label | "login_name" | +| CookieWithoutHttpOnly.go:114:7:117:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:115:10:115:16 | session | semmle.label | session | +| CookieWithoutHttpOnly.go:119:20:119:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:119:20:119:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:119:21:119:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:131:16:131:24 | "session" | semmle.label | "session" | +subpaths diff --git a/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.go b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.go new file mode 100644 index 000000000000..6a7e6ffbfe82 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.go @@ -0,0 +1,136 @@ +package main + +import ( + "net/http" + + "github.com/gin-gonic/gin" +) + +func handler1(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + } + http.SetCookie(w, &c) // $ Alert // BAD: HttpOnly set to false by default +} + +func handler2(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + HttpOnly: false, + } + http.SetCookie(w, &c) // $ Alert // BAD: HttpOnly explicitly set to false +} + +func handler3(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + HttpOnly: true, + } + http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true +} + +func handler4(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + } + c.HttpOnly = true + http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true +} + +func handler5(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + } + c.HttpOnly = false + http.SetCookie(w, &c) // $ Alert // BAD: HttpOnly explicitly set to false +} + +func handler6(w http.ResponseWriter, r *http.Request) { + val := false + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + HttpOnly: val, + } + http.SetCookie(w, &c) // $ Alert // BAD: HttpOnly explicitly set to false +} + +func handler7(w http.ResponseWriter, r *http.Request) { + val := true + c := http.Cookie{ + Name: "session", + Value: "secret", + HttpOnly: val, + } + http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true +} + +func handler8(w http.ResponseWriter, r *http.Request) { + val := true + c := http.Cookie{ + Name: "session", + Value: "secret", + } + c.HttpOnly = val + http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true +} + +func handler9(w http.ResponseWriter, r *http.Request) { + val := false + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + } + c.HttpOnly = val + http.SetCookie(w, &c) // $ Alert //BAD: HttpOnly explicitly set to false +} + +func handler10(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "consent", + Value: "1", + } + c.HttpOnly = false + http.SetCookie(w, &c) // GOOD: Name is not auth related +} + +func handler11(w http.ResponseWriter, r *http.Request) { + name := "session" // $ Source + c := http.Cookie{ + Name: name, + Value: "secret", + } + c.HttpOnly = false + http.SetCookie(w, &c) // $ Alert // BAD: auth related name +} + +func handler12(w http.ResponseWriter, r *http.Request) { + session := "login_name" // $ Source + c := http.Cookie{ + Name: session, // $ Source + Value: "secret", + } + c.HttpOnly = false + http.SetCookie(w, &c) // $ Alert // BAD: auth related name +} + +func main() { + + router := gin.Default() + + router.GET("/cookie", func(c *gin.Context) { + + _, err := c.Cookie("session") + + if err != nil { + c.SetCookie("session", "test", 3600, "/", "localhost", false, false) // $ Alert // BAD: httpOnly set to false + } + }) + + router.Run() +} diff --git a/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.qlref b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.qlref new file mode 100644 index 000000000000..399174134bb2 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/go/ql/test/experimental/CWE-1004/go.mod b/go/ql/test/query-tests/Security/CWE-1004/go.mod similarity index 68% rename from go/ql/test/experimental/CWE-1004/go.mod rename to go/ql/test/query-tests/Security/CWE-1004/go.mod index 5ab32129a9b9..e0e296499fc0 100644 --- a/go/ql/test/experimental/CWE-1004/go.mod +++ b/go/ql/test/query-tests/Security/CWE-1004/go.mod @@ -4,5 +4,4 @@ go 1.14 require ( github.com/gin-gonic/gin v1.7.1 - github.com/gorilla/sessions v1.2.1 ) diff --git a/go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/LICENSE b/go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/LICENSE similarity index 100% rename from go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/LICENSE rename to go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/LICENSE diff --git a/go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/binding/stub.go b/go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/binding/stub.go similarity index 100% rename from go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/binding/stub.go rename to go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/binding/stub.go diff --git a/go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/stub.go b/go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/stub.go similarity index 100% rename from go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/stub.go rename to go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/stub.go diff --git a/go/ql/test/query-tests/Security/CWE-1004/vendor/modules.txt b/go/ql/test/query-tests/Security/CWE-1004/vendor/modules.txt new file mode 100644 index 000000000000..e80eedb5cae9 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-1004/vendor/modules.txt @@ -0,0 +1,3 @@ +# github.com/gin-gonic/gin v1.7.1 +## explicit +github.com/gin-gonic/gin diff --git a/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected b/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected new file mode 100644 index 000000000000..00eb67fea0ba --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected @@ -0,0 +1,29 @@ +| encryption.go:30:2:30:36 | call to Encrypt | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:34:2:34:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:38:2:38:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:42:2:42:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:46:2:46:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:50:2:50:47 | call to CryptBlocks | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:54:2:54:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:56:22:56:91 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:59:21:59:68 | &... [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:59:22:59:68 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:59:22:59:68 | struct literal [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:60:10:60:24 | ctrStreamWriter [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:65:2:65:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:69:2:69:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:76:2:76:32 | call to Encrypt | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:80:2:80:38 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:84:2:84:38 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:88:2:88:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:92:2:92:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:96:2:96:43 | call to CryptBlocks | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:100:2:100:41 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:102:22:102:87 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:105:21:105:68 | &... [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:105:22:105:68 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:105:22:105:68 | struct literal [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:106:10:106:24 | ctrStreamWriter [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:111:2:111:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:115:2:115:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:166:2:166:33 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:166:2:166:33 | call to XORKeyStream | The cryptographic algorithm RC4 | diff --git a/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.qlref b/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.qlref new file mode 100644 index 000000000000..a618df1ed20a --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.qlref @@ -0,0 +1,4 @@ +query: Security/CWE-327/BrokenCryptoAlgorithm.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/go/ql/test/query-tests/Security/CWE-327/Crypto.go b/go/ql/test/query-tests/Security/CWE-327/Crypto.go deleted file mode 100644 index 75229b020a86..000000000000 --- a/go/ql/test/query-tests/Security/CWE-327/Crypto.go +++ /dev/null @@ -1,53 +0,0 @@ -package main - -import ( - "crypto/aes" - "crypto/des" - "crypto/md5" - "crypto/rc4" - "crypto/sha1" - "crypto/sha256" -) - -func crypto() { - public := []byte("hello") - - password := []byte("123456") - buf := password // testing dataflow by passing into different variable - - // BAD, des is a weak crypto algorithm and password is sensitive data - des.NewTripleDESCipher(buf) - - // BAD, md5 is a weak crypto algorithm and password is sensitive data - md5.Sum(buf) - - // BAD, rc4 is a weak crypto algorithm and password is sensitive data - rc4.NewCipher(buf) - - // BAD, sha1 is a weak crypto algorithm and password is sensitive data - sha1.Sum(buf) - - // GOOD, password is sensitive data but aes is a strong crypto algorithm - aes.NewCipher(buf) - - // GOOD, password is sensitive data but sha256 is a strong crypto algorithm - sha256.Sum256(buf) - - // GOOD, des is a weak crypto algorithm but public is not sensitive data - des.NewTripleDESCipher(public) - - // GOOD, md5 is a weak crypto algorithm but public is not sensitive data - md5.Sum(public) - - // GOOD, rc4 is a weak crypto algorithm but public is not sensitive data - rc4.NewCipher(public) - - // GOOD, sha1 is a weak crypto algorithm but public is not sensitive data - sha1.Sum(public) - - // GOOD, aes is a strong crypto algorithm and public is not sensitive data - aes.NewCipher(public) - - // GOOD, sha256 is a strong crypto algorithm and public is not sensitive data - sha256.Sum256(public) -} diff --git a/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.expected b/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.expected new file mode 100644 index 000000000000..55e9aed2e93c --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.expected @@ -0,0 +1,2 @@ +testFailures +invalidModelRow diff --git a/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.ql b/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.ql new file mode 100644 index 000000000000..e3b7147be3ab --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.ql @@ -0,0 +1,39 @@ +import go +import ModelValidation +import utils.test.InlineExpectationsTest + +module Test implements TestSig { + string getARelevantTag() { result = "CryptographicOperation" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "CryptographicOperation" and + exists( + CryptographicOperation::Range ho, string algorithm, string initialization, string blockMode + | + algorithm = ho.getAlgorithm().toString() + "." and + ( + blockMode = " blockMode: " + ho.getBlockMode().toString() + "." + or + not exists(ho.getBlockMode()) and blockMode = "" + ) and + exists(int c | c = count(ho.getInitialization()) | + c = 0 and initialization = "" + or + c > 0 and + initialization = + " init from " + + strictconcat(DataFlow::Node init, int n | + init = ho.getInitialization() and + n = ho.getStartLine() - init.getStartLine() + | + n.toString(), "," + ) + " lines above." + ) and + ho.getLocation() = location and + element = ho.toString() and + value = "\"" + algorithm + blockMode + initialization + "\"" + ) + } +} + +import MakeTest diff --git a/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.expected b/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.expected deleted file mode 100644 index 53cfd40145d3..000000000000 --- a/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.expected +++ /dev/null @@ -1,17 +0,0 @@ -edges -| Crypto.go:16:9:16:16 | password | Crypto.go:19:25:19:27 | buf | provenance | | -| Crypto.go:16:9:16:16 | password | Crypto.go:22:10:22:12 | buf | provenance | | -| Crypto.go:16:9:16:16 | password | Crypto.go:25:16:25:18 | buf | provenance | | -| Crypto.go:16:9:16:16 | password | Crypto.go:28:11:28:13 | buf | provenance | | -nodes -| Crypto.go:16:9:16:16 | password | semmle.label | password | -| Crypto.go:19:25:19:27 | buf | semmle.label | buf | -| Crypto.go:22:10:22:12 | buf | semmle.label | buf | -| Crypto.go:25:16:25:18 | buf | semmle.label | buf | -| Crypto.go:28:11:28:13 | buf | semmle.label | buf | -subpaths -#select -| Crypto.go:19:25:19:27 | buf | Crypto.go:16:9:16:16 | password | Crypto.go:19:25:19:27 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:16:9:16:16 | password | Sensitive data | -| Crypto.go:22:10:22:12 | buf | Crypto.go:16:9:16:16 | password | Crypto.go:22:10:22:12 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:16:9:16:16 | password | Sensitive data | -| Crypto.go:25:16:25:18 | buf | Crypto.go:16:9:16:16 | password | Crypto.go:25:16:25:18 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:16:9:16:16 | password | Sensitive data | -| Crypto.go:28:11:28:13 | buf | Crypto.go:16:9:16:16 | password | Crypto.go:28:11:28:13 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:16:9:16:16 | password | Sensitive data | diff --git a/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.qlref b/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.qlref deleted file mode 100644 index 00d68df5a7c5..000000000000 --- a/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/CWE-327/WeakCryptoAlgorithm.ql diff --git a/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.expected b/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.expected new file mode 100644 index 000000000000..e2ee4bdd7a72 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.expected @@ -0,0 +1,24 @@ +#select +| hashing.go:22:8:22:22 | secretByteSlice | hashing.go:22:8:22:22 | secretByteSlice | hashing.go:22:8:22:22 | secretByteSlice | $@ is used in a hashing algorithm (MD5) that is insecure. | hashing.go:22:8:22:22 | secretByteSlice | Sensitive data (secret) | +| hashing.go:23:10:23:24 | secretByteSlice | hashing.go:23:10:23:24 | secretByteSlice | hashing.go:23:10:23:24 | secretByteSlice | $@ is used in a hashing algorithm (MD5) that is insecure. | hashing.go:23:10:23:24 | secretByteSlice | Sensitive data (secret) | +| hashing.go:24:20:24:31 | secretString | hashing.go:24:20:24:31 | secretString | hashing.go:24:20:24:31 | secretString | $@ is used in a hashing algorithm (MD5) that is insecure. | hashing.go:24:20:24:31 | secretString | Sensitive data (secret) | +| hashing.go:25:10:25:24 | secretByteSlice | hashing.go:25:10:25:24 | secretByteSlice | hashing.go:25:10:25:24 | secretByteSlice | $@ is used in a hashing algorithm (MD5) that is insecure. | hashing.go:25:10:25:24 | secretByteSlice | Sensitive data (secret) | +| hashing.go:27:17:27:31 | secretByteSlice | hashing.go:27:17:27:31 | secretByteSlice | hashing.go:27:17:27:31 | secretByteSlice | $@ is used in a hashing algorithm (SHA1) that is insecure. | hashing.go:27:17:27:31 | secretByteSlice | Sensitive data (secret) | +| hashing.go:28:11:28:25 | secretByteSlice | hashing.go:28:11:28:25 | secretByteSlice | hashing.go:28:11:28:25 | secretByteSlice | $@ is used in a hashing algorithm (SHA1) that is insecure. | hashing.go:28:11:28:25 | secretByteSlice | Sensitive data (secret) | +| hashing.go:30:16:30:30 | secretByteSlice | hashing.go:30:16:30:30 | secretByteSlice | hashing.go:30:16:30:30 | secretByteSlice | $@ is used in a hashing algorithm (MD4) that is insecure. | hashing.go:30:16:30:30 | secretByteSlice | Sensitive data (secret) | +| hashing.go:31:22:31:36 | secretByteSlice | hashing.go:31:22:31:36 | secretByteSlice | hashing.go:31:22:31:36 | secretByteSlice | $@ is used in a hashing algorithm (RIPEMD160) that is insecure. | hashing.go:31:22:31:36 | secretByteSlice | Sensitive data (secret) | +| hashing.go:82:23:82:38 | type conversion | hashing.go:82:30:82:37 | password | hashing.go:82:23:82:38 | type conversion | $@ is used in a hashing algorithm (SHA256) that is insecure for password hashing, since it is not a computationally expensive hash function. | hashing.go:82:30:82:37 | password | Sensitive data (password) | +edges +| hashing.go:82:30:82:37 | password | hashing.go:82:23:82:38 | type conversion | provenance | | +nodes +| hashing.go:22:8:22:22 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:23:10:23:24 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:24:20:24:31 | secretString | semmle.label | secretString | +| hashing.go:25:10:25:24 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:27:17:27:31 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:28:11:28:25 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:30:16:30:30 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:31:22:31:36 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:82:23:82:38 | type conversion | semmle.label | type conversion | +| hashing.go:82:30:82:37 | password | semmle.label | password | +subpaths diff --git a/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.qlref b/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.qlref new file mode 100644 index 000000000000..ec9ae0993a26 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.qlref @@ -0,0 +1,4 @@ +query: Security/CWE-327/WeakSensitiveDataHashing.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/go/ql/test/query-tests/Security/CWE-327/encryption.go b/go/ql/test/query-tests/Security/CWE-327/encryption.go new file mode 100644 index 000000000000..e6cc712474f4 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/encryption.go @@ -0,0 +1,167 @@ +package main + +import ( + "bytes" + "crypto/aes" + "crypto/cipher" + "crypto/des" + "crypto/rc4" + "io" + "os" +) + +var dst []byte = make([]byte, 16) +var secretByteSlice []byte = []byte("") + +const secretString string = "" + +var public []byte = []byte("") + +func getUserID() []byte { + return []byte("") +} + +// Note that we do not alert on decryption as we may need to decrypt legacy formats + +func BlockCipherDes() { + // BAD, des is a weak crypto algorithm + block, _ := des.NewCipher(nil) + + block.Encrypt(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from 2 lines above." + block.Decrypt(dst, secretByteSlice) + + gcm1, _ := cipher.NewGCM(block) + gcm1.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from 6 lines above." + gcm1.Open(nil, nil, secretByteSlice, nil) + + gcm2, _ := cipher.NewGCMWithNonceSize(block, 12) + gcm2.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from 10 lines above." + gcm2.Open(nil, nil, secretByteSlice, nil) + + gcm3, _ := cipher.NewGCMWithRandomNonce(block) + gcm3.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from 14 lines above." + gcm3.Open(nil, nil, secretByteSlice, nil) + + gcm4, _ := cipher.NewGCMWithTagSize(block, 12) + gcm4.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from 18 lines above." + gcm4.Open(nil, nil, secretByteSlice, nil) + + cbcEncrypter := cipher.NewCBCEncrypter(block, nil) + cbcEncrypter.CryptBlocks(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CBC. init from 1,22 lines above." + cipher.NewCBCDecrypter(block, nil).CryptBlocks(dst, secretByteSlice) + + ctrStream := cipher.NewCTR(block, nil) + ctrStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from 1,26 lines above." + + ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(secretByteSlice)} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from 28,3 lines above." + io.Copy(os.Stdout, ctrStreamReader) + + ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from 31,6 lines above." + io.Copy(ctrStreamWriter, bytes.NewReader(secretByteSlice)) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from 32,7 lines above." + + // deprecated + + cfbStream := cipher.NewCFBEncrypter(block, nil) + cfbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CFB. init from 1,37 lines above." + cipher.NewCFBDecrypter(block, nil).XORKeyStream(dst, secretByteSlice) + + ofbStream := cipher.NewOFB(block, nil) + ofbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: OFB. init from 1,41 lines above." +} + +func BlockCipherTripleDes() { + // BAD, triple des is a weak crypto algorithm and secretByteSlice is sensitive data + block, _ := des.NewTripleDESCipher(nil) + + block.Encrypt(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from 2 lines above." + block.Decrypt(dst, getUserID()) + + gcm1, _ := cipher.NewGCM(block) + gcm1.Seal(nil, nil, getUserID(), nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from 6 lines above." + gcm1.Open(nil, nil, getUserID(), nil) + + gcm2, _ := cipher.NewGCMWithNonceSize(block, 12) + gcm2.Seal(nil, nil, getUserID(), nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from 10 lines above." + gcm2.Open(nil, nil, getUserID(), nil) + + gcm3, _ := cipher.NewGCMWithRandomNonce(block) + gcm3.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from 14 lines above." + gcm3.Open(nil, nil, secretByteSlice, nil) + + gcm4, _ := cipher.NewGCMWithTagSize(block, 12) + gcm4.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from 18 lines above." + gcm4.Open(nil, nil, secretByteSlice, nil) + + cbcEncrypter := cipher.NewCBCEncrypter(block, nil) + cbcEncrypter.CryptBlocks(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CBC. init from 1,22 lines above." + cipher.NewCBCDecrypter(block, nil).CryptBlocks(dst, getUserID()) + + ctrStream := cipher.NewCTR(block, nil) + ctrStream.XORKeyStream(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from 1,26 lines above." + + ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(getUserID())} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from 28,3 lines above." + io.Copy(os.Stdout, ctrStreamReader) + + ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from 31,6 lines above." + io.Copy(ctrStreamWriter, bytes.NewReader(getUserID())) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from 32,7 lines above." + + // deprecated + + cfbStream := cipher.NewCFBEncrypter(block, nil) + cfbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CFB. init from 1,37 lines above." + cipher.NewCFBDecrypter(block, nil).XORKeyStream(dst, secretByteSlice) + + ofbStream := cipher.NewOFB(block, nil) + ofbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: OFB. init from 1,41 lines above." +} + +func BlockCipherAes() { + // GOOD, aes is a strong crypto algorithm + block, _ := aes.NewCipher(nil) + + block.Encrypt(dst, secretByteSlice) // $ CryptographicOperation="AES. init from 2 lines above." + block.Decrypt(dst, secretByteSlice) + + gcm1, _ := cipher.NewGCM(block) + gcm1.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from 6 lines above." + gcm1.Open(nil, nil, secretByteSlice, nil) + + gcm2, _ := cipher.NewGCMWithNonceSize(block, 12) + gcm2.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from 10 lines above." + gcm2.Open(nil, nil, secretByteSlice, nil) + + gcm3, _ := cipher.NewGCMWithRandomNonce(block) + gcm3.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from 14 lines above." + gcm3.Open(nil, nil, secretByteSlice, nil) + + gcm4, _ := cipher.NewGCMWithTagSize(block, 12) + gcm4.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from 18 lines above." + gcm4.Open(nil, nil, secretByteSlice, nil) + + cbcEncrypter := cipher.NewCBCEncrypter(block, nil) + cbcEncrypter.CryptBlocks(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: CBC. init from 1,22 lines above." + cipher.NewCBCDecrypter(block, nil).CryptBlocks(dst, secretByteSlice) + + ctrStream := cipher.NewCTR(block, nil) + ctrStream.XORKeyStream(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: CTR. init from 1,26 lines above." + + ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(secretByteSlice)} // $ CryptographicOperation="AES. blockMode: CTR. init from 28,3 lines above." + io.Copy(os.Stdout, ctrStreamReader) + + ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ CryptographicOperation="AES. blockMode: CTR. init from 31,6 lines above." + io.Copy(ctrStreamWriter, bytes.NewReader(secretByteSlice)) // $ CryptographicOperation="AES. blockMode: CTR. init from 32,7 lines above." + + // deprecated + + cfbStream := cipher.NewCFBEncrypter(block, nil) + cfbStream.XORKeyStream(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: CFB. init from 1,37 lines above." + cipher.NewCFBDecrypter(block, nil).XORKeyStream(dst, secretByteSlice) + + ofbStream := cipher.NewOFB(block, nil) + ofbStream.XORKeyStream(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: OFB. init from 1,41 lines above." +} + +func CipherRc4() { + c, _ := rc4.NewCipher(nil) + c.XORKeyStream(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="RC4. init from 0 lines above." +} diff --git a/go/ql/test/query-tests/Security/CWE-327/go.mod b/go/ql/test/query-tests/Security/CWE-327/go.mod new file mode 100644 index 000000000000..59c69723ef55 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/go.mod @@ -0,0 +1,5 @@ +module test + +go 1.24.0 + +require golang.org/x/crypto v0.43.0 diff --git a/go/ql/test/query-tests/Security/CWE-327/hashing.go b/go/ql/test/query-tests/Security/CWE-327/hashing.go new file mode 100644 index 000000000000..002e94568a2a --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/hashing.go @@ -0,0 +1,91 @@ +package main + +//go:generate depstubber -vendor golang.org/x/crypto/md4 "" New +//go:generate depstubber -vendor golang.org/x/crypto/ripemd160 "" New + +import ( + "crypto/md5" + "crypto/pbkdf2" + "crypto/rand" + "crypto/sha1" + "crypto/sha256" + "crypto/sha3" + "crypto/sha512" + "io" + + "golang.org/x/crypto/md4" + "golang.org/x/crypto/ripemd160" +) + +func WeakHashes() { + h := md5.New() + h.Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from 1 lines above." + h.Write(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from 2 lines above." + io.WriteString(h, secretString) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from 3 lines above." + md5.Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from 0 lines above." + + sha1.New().Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="SHA1. init from 0 lines above." + sha1.Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="SHA1. init from 0 lines above." + + md4.New().Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD4. init from 0 lines above." + ripemd160.New().Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="RIPEMD160. init from 0 lines above." + + // Only alert when sensitive data is hashed. + md5.New().Sum(public) // $ CryptographicOperation="MD5. init from 0 lines above." + md5.Sum(public) // $ CryptographicOperation="MD5. init from 0 lines above." + sha1.New().Sum(public) // $ CryptographicOperation="SHA1. init from 0 lines above." + sha1.Sum(public) // $ CryptographicOperation="SHA1. init from 0 lines above." +} + +func StrongHashes() { + sha256.New224().Sum(secretByteSlice) // $ CryptographicOperation="SHA224. init from 0 lines above." + sha256.Sum224(secretByteSlice) // $ CryptographicOperation="SHA224. init from 0 lines above." + + sha256.New().Sum(secretByteSlice) // $ CryptographicOperation="SHA256. init from 0 lines above." + sha256.Sum256(secretByteSlice) // $ CryptographicOperation="SHA256. init from 0 lines above." + + sha512.New().Sum(secretByteSlice) // $ CryptographicOperation="SHA512. init from 0 lines above." + sha512.Sum512(secretByteSlice) // $ CryptographicOperation="SHA512. init from 0 lines above." + + sha512.New384().Sum(secretByteSlice) // $ CryptographicOperation="SHA384. init from 0 lines above." + sha512.Sum384(secretByteSlice) // $ CryptographicOperation="SHA384. init from 0 lines above." + + sha512.New512_224().Sum(secretByteSlice) // $ CryptographicOperation="SHA512224. init from 0 lines above." + sha512.Sum512_224(secretByteSlice) // $ CryptographicOperation="SHA512224. init from 0 lines above." + + sha512.New512_256().Sum(secretByteSlice) // $ CryptographicOperation="SHA512256. init from 0 lines above." + sha512.Sum512_256(secretByteSlice) // $ CryptographicOperation="SHA512256. init from 0 lines above." + + sha3.New224().Sum(secretByteSlice) // $ CryptographicOperation="SHA3224. init from 0 lines above." + sha3.Sum224(secretByteSlice) // $ CryptographicOperation="SHA3224. init from 0 lines above." + + sha3.New256().Sum(secretByteSlice) // $ CryptographicOperation="SHA3256. init from 0 lines above." + sha3.Sum256(secretByteSlice) // $ CryptographicOperation="SHA3256. init from 0 lines above." + + sha3.New384().Sum(secretByteSlice) // $ CryptographicOperation="SHA3384. init from 0 lines above." + sha3.Sum384(secretByteSlice) // $ CryptographicOperation="SHA3384. init from 0 lines above." + + sha3.New512().Sum(secretByteSlice) // $ CryptographicOperation="SHA3512. init from 0 lines above." + sha3.Sum512(secretByteSlice) // $ CryptographicOperation="SHA3512. init from 0 lines above." + + sha3.NewSHAKE128().Write(secretByteSlice) // $ CryptographicOperation="SHAKE128. init from 0 lines above." + sha3.NewCSHAKE128(nil, nil).Write(secretByteSlice) // $ CryptographicOperation="SHAKE128. init from 0 lines above." + sha3.SumSHAKE128(secretByteSlice, 100) // $ CryptographicOperation="SHAKE128. init from 0 lines above." + + sha3.NewSHAKE256().Write(secretByteSlice) // $ CryptographicOperation="SHAKE256. init from 0 lines above." + sha3.NewCSHAKE256(nil, nil).Write(secretByteSlice) // $ CryptographicOperation="SHAKE256. init from 0 lines above." + sha3.SumSHAKE256(secretByteSlice, 100) // $ CryptographicOperation="SHAKE256. init from 0 lines above." +} + +func GetPasswordHashBad(password string) [32]byte { + // BAD, SHA256 is a strong hashing algorithm but it is not computationally expensive + return sha256.Sum256([]byte(password)) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="SHA256. init from 0 lines above." +} + +func GetPasswordHashGood(password string) []byte { + // GOOD, PBKDF2 is a strong hashing algorithm and it is computationally expensive + salt := make([]byte, 16) + rand.Read(salt) + key, _ := pbkdf2.Key(sha512.New, password, salt, 4096, 32) + return key +} diff --git a/go/ql/test/query-tests/Security/CWE-327/vendor/golang.org/x/crypto/md4/stub.go b/go/ql/test/query-tests/Security/CWE-327/vendor/golang.org/x/crypto/md4/stub.go new file mode 100644 index 000000000000..777cc50c0c1c --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/vendor/golang.org/x/crypto/md4/stub.go @@ -0,0 +1,16 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for golang.org/x/crypto/md4, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: golang.org/x/crypto/md4 (exports: ; functions: New) + +// Package md4 is a stub of golang.org/x/crypto/md4, generated by depstubber. +package md4 + +import ( + hash "hash" +) + +func New() hash.Hash { + return nil +} diff --git a/go/ql/test/query-tests/Security/CWE-327/vendor/golang.org/x/crypto/ripemd160/stub.go b/go/ql/test/query-tests/Security/CWE-327/vendor/golang.org/x/crypto/ripemd160/stub.go new file mode 100644 index 000000000000..995d3339d8cd --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/vendor/golang.org/x/crypto/ripemd160/stub.go @@ -0,0 +1,16 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for golang.org/x/crypto/ripemd160, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: golang.org/x/crypto/ripemd160 (exports: ; functions: New) + +// Package ripemd160 is a stub of golang.org/x/crypto/ripemd160, generated by depstubber. +package ripemd160 + +import ( + hash "hash" +) + +func New() hash.Hash { + return nil +} diff --git a/go/ql/test/query-tests/Security/CWE-327/vendor/modules.txt b/go/ql/test/query-tests/Security/CWE-327/vendor/modules.txt new file mode 100644 index 000000000000..1927762821ca --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/vendor/modules.txt @@ -0,0 +1,4 @@ +# golang.org/x/crypto v0.43.0 +## explicit +golang.org/x/crypto/md4 +golang.org/x/crypto/ripemd160 diff --git a/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.expected b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.expected new file mode 100644 index 000000000000..1695d82a4f75 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.expected @@ -0,0 +1,6 @@ +| CookieWithoutSecure.go:14:2:14:22 | call to SetCookie | Cookie does not set Secure attribute to true. | +| CookieWithoutSecure.go:23:2:23:22 | call to SetCookie | Cookie does not set Secure attribute to true. | +| CookieWithoutSecure.go:50:2:50:22 | call to SetCookie | Cookie does not set Secure attribute to true. | +| CookieWithoutSecure.go:60:2:60:22 | call to SetCookie | Cookie does not set Secure attribute to true. | +| CookieWithoutSecure.go:90:2:90:22 | call to SetCookie | Cookie does not set Secure attribute to true. | +| CookieWithoutSecure.go:102:4:102:71 | call to SetCookie | Cookie does not set Secure attribute to true. | diff --git a/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.go b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.go new file mode 100644 index 000000000000..41ed48c0ba12 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.go @@ -0,0 +1,107 @@ +package main + +import ( + "net/http" + + "github.com/gin-gonic/gin" +) + +func handler1(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + } + http.SetCookie(w, &c) // $ Alert // BAD: Secure set to false by default +} + +func handler2(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + Secure: false, + } + http.SetCookie(w, &c) // $ Alert // BAD: Secure explicitly set to false +} + +func handler3(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + Secure: true, + } + http.SetCookie(w, &c) // GOOD: Secure explicitly set to true +} + +func handler4(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + } + c.Secure = true + http.SetCookie(w, &c) // GOOD: Secure explicitly set to true +} + +func handler5(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + } + c.Secure = false + http.SetCookie(w, &c) // $ Alert // BAD: Secure explicitly set to false +} + +func handler6(w http.ResponseWriter, r *http.Request) { + val := false + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + Secure: val, + } + http.SetCookie(w, &c) // $ Alert // BAD: Secure explicitly set to false +} + +func handler7(w http.ResponseWriter, r *http.Request) { + val := true + c := http.Cookie{ + Name: "session", + Value: "secret", + Secure: val, + } + http.SetCookie(w, &c) // GOOD: Secure explicitly set to true +} + +func handler8(w http.ResponseWriter, r *http.Request) { + val := true + c := http.Cookie{ + Name: "session", + Value: "secret", + } + c.Secure = val + http.SetCookie(w, &c) // GOOD: Secure explicitly set to true +} + +func handler9(w http.ResponseWriter, r *http.Request) { + val := false + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + } + c.Secure = val + http.SetCookie(w, &c) // $ Alert //BAD: Secure explicitly set to false +} + +func main() { + + router := gin.Default() + + router.GET("/cookie", func(c *gin.Context) { + + _, err := c.Cookie("session") + + if err != nil { + c.SetCookie("session", "test", 3600, "/", "localhost", false, false) // $ Alert // BAD: Secure set to false + } + }) + + router.Run() +} diff --git a/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.qlref b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.qlref new file mode 100644 index 000000000000..9b6762358be3 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/go/ql/test/query-tests/Security/CWE-614/go.mod b/go/ql/test/query-tests/Security/CWE-614/go.mod new file mode 100644 index 000000000000..e0e296499fc0 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/go.mod @@ -0,0 +1,7 @@ +module example.com/m + +go 1.14 + +require ( + github.com/gin-gonic/gin v1.7.1 + ) diff --git a/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/LICENSE b/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/LICENSE new file mode 100644 index 000000000000..1ff7f3706055 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Manuel Martínez-Almeida + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/binding/stub.go b/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/binding/stub.go new file mode 100644 index 000000000000..43fd634edcd3 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/binding/stub.go @@ -0,0 +1,12 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for github.com/gin-gonic/gin/binding, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: github.com/gin-gonic/gin/binding (exports: ; functions: YAML) + +// Package binding is a stub of github.com/gin-gonic/gin/binding, generated by depstubber. +package binding + +import () + +var YAML interface{} = nil diff --git a/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/stub.go b/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/stub.go new file mode 100644 index 000000000000..e343d5f2aa08 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/stub.go @@ -0,0 +1,677 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for github.com/gin-gonic/gin, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: github.com/gin-gonic/gin (exports: Context; functions: Default) + +// Package gin is a stub of github.com/gin-gonic/gin, generated by depstubber. +package gin + +import ( + bufio "bufio" + template "html/template" + io "io" + multipart "mime/multipart" + net "net" + http "net/http" + time "time" +) + +type Context struct { + Request *http.Request + Writer ResponseWriter + Params Params + Keys map[string]interface{} + Errors interface{} + Accepted []string +} + +func (_ *Context) Abort() {} + +func (_ *Context) AbortWithError(_ int, _ error) *Error { + return nil +} + +func (_ *Context) AbortWithStatus(_ int) {} + +func (_ *Context) AbortWithStatusJSON(_ int, _ interface{}) {} + +func (_ *Context) AsciiJSON(_ int, _ interface{}) {} + +func (_ *Context) Bind(_ interface{}) error { + return nil +} + +func (_ *Context) BindHeader(_ interface{}) error { + return nil +} + +func (_ *Context) BindJSON(_ interface{}) error { + return nil +} + +func (_ *Context) BindQuery(_ interface{}) error { + return nil +} + +func (_ *Context) BindUri(_ interface{}) error { + return nil +} + +func (_ *Context) BindWith(_ interface{}, _ interface{}) error { + return nil +} + +func (_ *Context) BindXML(_ interface{}) error { + return nil +} + +func (_ *Context) BindYAML(_ interface{}) error { + return nil +} + +func (_ *Context) ClientIP() string { + return "" +} + +func (_ *Context) ContentType() string { + return "" +} + +func (_ *Context) Cookie(_ string) (string, error) { + return "", nil +} + +func (_ *Context) Copy() *Context { + return nil +} + +func (_ *Context) Data(_ int, _ string, _ []byte) {} + +func (_ *Context) DataFromReader(_ int, _ int64, _ string, _ io.Reader, _ map[string]string) {} + +func (_ *Context) Deadline() (time.Time, bool) { + return time.Time{}, false +} + +func (_ *Context) DefaultPostForm(_ string, _ string) string { + return "" +} + +func (_ *Context) DefaultQuery(_ string, _ string) string { + return "" +} + +func (_ *Context) Done() <-chan struct{} { + return nil +} + +func (_ *Context) Err() error { + return nil +} + +func (_ *Context) Error(_ error) *Error { + return nil +} + +func (_ *Context) File(_ string) {} + +func (_ *Context) FileAttachment(_ string, _ string) {} + +func (_ *Context) FileFromFS(_ string, _ http.FileSystem) {} + +func (_ *Context) FormFile(_ string) (*multipart.FileHeader, error) { + return nil, nil +} + +func (_ *Context) FullPath() string { + return "" +} + +func (_ *Context) Get(_ string) (interface{}, bool) { + return nil, false +} + +func (_ *Context) GetBool(_ string) bool { + return false +} + +func (_ *Context) GetDuration(_ string) time.Duration { + return 0 +} + +func (_ *Context) GetFloat64(_ string) float64 { + return 0 +} + +func (_ *Context) GetHeader(_ string) string { + return "" +} + +func (_ *Context) GetInt(_ string) int { + return 0 +} + +func (_ *Context) GetInt64(_ string) int64 { + return 0 +} + +func (_ *Context) GetPostForm(_ string) (string, bool) { + return "", false +} + +func (_ *Context) GetPostFormArray(_ string) ([]string, bool) { + return nil, false +} + +func (_ *Context) GetPostFormMap(_ string) (map[string]string, bool) { + return nil, false +} + +func (_ *Context) GetQuery(_ string) (string, bool) { + return "", false +} + +func (_ *Context) GetQueryArray(_ string) ([]string, bool) { + return nil, false +} + +func (_ *Context) GetQueryMap(_ string) (map[string]string, bool) { + return nil, false +} + +func (_ *Context) GetRawData() ([]byte, error) { + return nil, nil +} + +func (_ *Context) GetString(_ string) string { + return "" +} + +func (_ *Context) GetStringMap(_ string) map[string]interface{} { + return nil +} + +func (_ *Context) GetStringMapString(_ string) map[string]string { + return nil +} + +func (_ *Context) GetStringMapStringSlice(_ string) map[string][]string { + return nil +} + +func (_ *Context) GetStringSlice(_ string) []string { + return nil +} + +func (_ *Context) GetTime(_ string) time.Time { + return time.Time{} +} + +func (_ *Context) GetUint(_ string) uint { + return 0 +} + +func (_ *Context) GetUint64(_ string) uint64 { + return 0 +} + +func (_ *Context) HTML(_ int, _ string, _ interface{}) {} + +func (_ *Context) Handler() HandlerFunc { + return nil +} + +func (_ *Context) HandlerName() string { + return "" +} + +func (_ *Context) HandlerNames() []string { + return nil +} + +func (_ *Context) Header(_ string, _ string) {} + +func (_ *Context) IndentedJSON(_ int, _ interface{}) {} + +func (_ *Context) IsAborted() bool { + return false +} + +func (_ *Context) IsWebsocket() bool { + return false +} + +func (_ *Context) JSON(_ int, _ interface{}) {} + +func (_ *Context) JSONP(_ int, _ interface{}) {} + +func (_ *Context) MultipartForm() (*multipart.Form, error) { + return nil, nil +} + +func (_ *Context) MustBindWith(_ interface{}, _ interface{}) error { + return nil +} + +func (_ *Context) MustGet(_ string) interface{} { + return nil +} + +func (_ *Context) Negotiate(_ int, _ Negotiate) {} + +func (_ *Context) NegotiateFormat(_ ...string) string { + return "" +} + +func (_ *Context) Next() {} + +func (_ *Context) Param(_ string) string { + return "" +} + +func (_ *Context) PostForm(_ string) string { + return "" +} + +func (_ *Context) PostFormArray(_ string) []string { + return nil +} + +func (_ *Context) PostFormMap(_ string) map[string]string { + return nil +} + +func (_ *Context) ProtoBuf(_ int, _ interface{}) {} + +func (_ *Context) PureJSON(_ int, _ interface{}) {} + +func (_ *Context) Query(_ string) string { + return "" +} + +func (_ *Context) QueryArray(_ string) []string { + return nil +} + +func (_ *Context) QueryMap(_ string) map[string]string { + return nil +} + +func (_ *Context) Redirect(_ int, _ string) {} + +func (_ *Context) RemoteIP() (net.IP, bool) { + return nil, false +} + +func (_ *Context) Render(_ int, _ interface{}) {} + +func (_ *Context) SSEvent(_ string, _ interface{}) {} + +func (_ *Context) SaveUploadedFile(_ *multipart.FileHeader, _ string) error { + return nil +} + +func (_ *Context) SecureJSON(_ int, _ interface{}) {} + +func (_ *Context) Set(_ string, _ interface{}) {} + +func (_ *Context) SetAccepted(_ ...string) {} + +func (_ *Context) SetCookie(_ string, _ string, _ int, _ string, _ string, _ bool, _ bool) {} + +func (_ *Context) SetSameSite(_ http.SameSite) {} + +func (_ *Context) ShouldBind(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindBodyWith(_ interface{}, _ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindHeader(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindJSON(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindQuery(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindUri(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindWith(_ interface{}, _ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindXML(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindYAML(_ interface{}) error { + return nil +} + +func (_ *Context) Status(_ int) {} + +func (_ *Context) Stream(_ func(io.Writer) bool) bool { + return false +} + +func (_ *Context) String(_ int, _ string, _ ...interface{}) {} + +func (_ *Context) Value(_ interface{}) interface{} { + return nil +} + +func (_ *Context) XML(_ int, _ interface{}) {} + +func (_ *Context) YAML(_ int, _ interface{}) {} + +func Default() *Engine { + return nil +} + +type Engine struct { + RouterGroup RouterGroup + RedirectTrailingSlash bool + RedirectFixedPath bool + HandleMethodNotAllowed bool + ForwardedByClientIP bool + RemoteIPHeaders []string + TrustedProxies []string + AppEngine bool + UseRawPath bool + UnescapePathValues bool + MaxMultipartMemory int64 + RemoveExtraSlash bool + HTMLRender interface{} + FuncMap template.FuncMap +} + +func (_ *Engine) Any(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) BasePath() string { + return "" +} + +func (_ *Engine) DELETE(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) Delims(_ string, _ string) *Engine { + return nil +} + +func (_ *Engine) GET(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) Group(_ string, _ ...HandlerFunc) *RouterGroup { + return nil +} + +func (_ *Engine) HEAD(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) Handle(_ string, _ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) HandleContext(_ *Context) {} + +func (_ *Engine) LoadHTMLFiles(_ ...string) {} + +func (_ *Engine) LoadHTMLGlob(_ string) {} + +func (_ *Engine) NoMethod(_ ...HandlerFunc) {} + +func (_ *Engine) NoRoute(_ ...HandlerFunc) {} + +func (_ *Engine) OPTIONS(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) PATCH(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) POST(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) PUT(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) Routes() RoutesInfo { + return nil +} + +func (_ *Engine) Run(_ ...string) error { + return nil +} + +func (_ *Engine) RunFd(_ int) error { + return nil +} + +func (_ *Engine) RunListener(_ net.Listener) error { + return nil +} + +func (_ *Engine) RunTLS(_ string, _ string, _ string) error { + return nil +} + +func (_ *Engine) RunUnix(_ string) error { + return nil +} + +func (_ *Engine) SecureJsonPrefix(_ string) *Engine { + return nil +} + +func (_ *Engine) ServeHTTP(_ http.ResponseWriter, _ *http.Request) {} + +func (_ *Engine) SetFuncMap(_ template.FuncMap) {} + +func (_ *Engine) SetHTMLTemplate(_ *template.Template) {} + +func (_ *Engine) Static(_ string, _ string) IRoutes { + return nil +} + +func (_ *Engine) StaticFS(_ string, _ http.FileSystem) IRoutes { + return nil +} + +func (_ *Engine) StaticFile(_ string, _ string) IRoutes { + return nil +} + +func (_ *Engine) Use(_ ...HandlerFunc) IRoutes { + return nil +} + +type Error struct { + Err error + Type ErrorType + Meta interface{} +} + +func (_ Error) Error() string { + return "" +} + +func (_ *Error) IsType(_ ErrorType) bool { + return false +} + +func (_ *Error) JSON() interface{} { + return nil +} + +func (_ *Error) MarshalJSON() ([]byte, error) { + return nil, nil +} + +func (_ *Error) SetMeta(_ interface{}) *Error { + return nil +} + +func (_ *Error) SetType(_ ErrorType) *Error { + return nil +} + +func (_ *Error) Unwrap() error { + return nil +} + +type ErrorType uint64 + +type HandlerFunc func(*Context) + +type HandlersChain []HandlerFunc + +func (_ HandlersChain) Last() HandlerFunc { + return nil +} + +type IRoutes interface { + Any(_ string, _ ...HandlerFunc) IRoutes + DELETE(_ string, _ ...HandlerFunc) IRoutes + GET(_ string, _ ...HandlerFunc) IRoutes + HEAD(_ string, _ ...HandlerFunc) IRoutes + Handle(_ string, _ string, _ ...HandlerFunc) IRoutes + OPTIONS(_ string, _ ...HandlerFunc) IRoutes + PATCH(_ string, _ ...HandlerFunc) IRoutes + POST(_ string, _ ...HandlerFunc) IRoutes + PUT(_ string, _ ...HandlerFunc) IRoutes + Static(_ string, _ string) IRoutes + StaticFS(_ string, _ http.FileSystem) IRoutes + StaticFile(_ string, _ string) IRoutes + Use(_ ...HandlerFunc) IRoutes +} + +type Negotiate struct { + Offered []string + HTMLName string + HTMLData interface{} + JSONData interface{} + XMLData interface{} + YAMLData interface{} + Data interface{} +} + +type Param struct { + Key string + Value string +} + +type Params []Param + +func (_ Params) ByName(_ string) string { + return "" +} + +func (_ Params) Get(_ string) (string, bool) { + return "", false +} + +type ResponseWriter interface { + CloseNotify() <-chan bool + Flush() + Header() http.Header + Hijack() (net.Conn, *bufio.ReadWriter, error) + Pusher() http.Pusher + Size() int + Status() int + Write(_ []byte) (int, error) + WriteHeader(_ int) + WriteHeaderNow() + WriteString(_ string) (int, error) + Written() bool +} + +type RouteInfo struct { + Method string + Path string + Handler string + HandlerFunc HandlerFunc +} + +type RouterGroup struct { + Handlers HandlersChain +} + +func (_ *RouterGroup) Any(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) BasePath() string { + return "" +} + +func (_ *RouterGroup) DELETE(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) GET(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) Group(_ string, _ ...HandlerFunc) *RouterGroup { + return nil +} + +func (_ *RouterGroup) HEAD(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) Handle(_ string, _ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) OPTIONS(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) PATCH(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) POST(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) PUT(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) Static(_ string, _ string) IRoutes { + return nil +} + +func (_ *RouterGroup) StaticFS(_ string, _ http.FileSystem) IRoutes { + return nil +} + +func (_ *RouterGroup) StaticFile(_ string, _ string) IRoutes { + return nil +} + +func (_ *RouterGroup) Use(_ ...HandlerFunc) IRoutes { + return nil +} + +type RoutesInfo []RouteInfo diff --git a/go/ql/test/query-tests/Security/CWE-614/vendor/modules.txt b/go/ql/test/query-tests/Security/CWE-614/vendor/modules.txt new file mode 100644 index 000000000000..e80eedb5cae9 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/vendor/modules.txt @@ -0,0 +1,3 @@ +# github.com/gin-gonic/gin v1.7.1 +## explicit +github.com/gin-gonic/gin diff --git a/java/ql/integration-tests/java/maven-add-exports-module-flags/pom.xml b/java/ql/integration-tests/java/maven-add-exports-module-flags/pom.xml new file mode 100644 index 000000000000..94f5f90981e1 --- /dev/null +++ b/java/ql/integration-tests/java/maven-add-exports-module-flags/pom.xml @@ -0,0 +1,41 @@ + + + + 4.0.0 + + com.example + maven-add-exports-module-flags + 1.0-SNAPSHOT + + maven-add-exports-module-flags + Test case: Project using --add-exports. Autobuilder should detect this and use --source/--target. + + + UTF-8 + 11 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + ${java.version} + ${java.version} + + --add-exports + jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED + --add-exports + jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED + --add-exports + jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED + --add-exports + jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED + + + + + + diff --git a/java/ql/integration-tests/java/maven-add-exports-module-flags/source_archive.expected b/java/ql/integration-tests/java/maven-add-exports-module-flags/source_archive.expected new file mode 100644 index 000000000000..3d84bfa09ab3 --- /dev/null +++ b/java/ql/integration-tests/java/maven-add-exports-module-flags/source_archive.expected @@ -0,0 +1,3 @@ +pom.xml +src/main/java/com/example/CompilerUser.java +target/maven-archiver/pom.properties diff --git a/java/ql/integration-tests/java/maven-add-exports-module-flags/src/main/java/com/example/CompilerUser.java b/java/ql/integration-tests/java/maven-add-exports-module-flags/src/main/java/com/example/CompilerUser.java new file mode 100644 index 000000000000..13685d097a48 --- /dev/null +++ b/java/ql/integration-tests/java/maven-add-exports-module-flags/src/main/java/com/example/CompilerUser.java @@ -0,0 +1,15 @@ +package com.example; + +import com.sun.tools.javac.api.JavacTool; + +/** + * Simple class that uses JDK compiler internals. + * This requires --add-exports flags to compile. + */ +public class CompilerUser { + public static void main(String[] args) { + // Use JavacTool from jdk.compiler module + JavacTool tool = JavacTool.create(); + System.out.println("Compiler tool: " + tool.getClass().getName()); + } +} diff --git a/java/ql/integration-tests/java/maven-add-exports-module-flags/test.py b/java/ql/integration-tests/java/maven-add-exports-module-flags/test.py new file mode 100644 index 000000000000..73c4b1415a11 --- /dev/null +++ b/java/ql/integration-tests/java/maven-add-exports-module-flags/test.py @@ -0,0 +1,2 @@ +def test(codeql, java, actions_toolchains_file): + codeql.database.create(_env={"LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": str(actions_toolchains_file)}) diff --git a/java/ql/integration-tests/java/maven-execution-specific-java-version/pom.xml b/java/ql/integration-tests/java/maven-execution-specific-java-version/pom.xml new file mode 100644 index 000000000000..fca47a5ba6d8 --- /dev/null +++ b/java/ql/integration-tests/java/maven-execution-specific-java-version/pom.xml @@ -0,0 +1,51 @@ + + + + 4.0.0 + + com.example + maven-execution-specific-java-version + 1.0-SNAPSHOT + + maven-execution-specific-java-version + Test case: Project with execution-specific Java versions (Java 11 for main, Java 17 for test). Maven.java should detect the highest version (17) and use it for compilation. + + + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + default-compile + compile + + compile + + + 11 + + + + + + default-testCompile + test-compile + + testCompile + + + 17 + + + + + + + diff --git a/java/ql/integration-tests/java/maven-execution-specific-java-version/source_archive.expected b/java/ql/integration-tests/java/maven-execution-specific-java-version/source_archive.expected new file mode 100644 index 000000000000..16e83f3a7f6c --- /dev/null +++ b/java/ql/integration-tests/java/maven-execution-specific-java-version/source_archive.expected @@ -0,0 +1,4 @@ +pom.xml +src/main/java/com/example/App.java +src/test/java/com/example/AppTest.java +target/maven-archiver/pom.properties diff --git a/java/ql/integration-tests/java/maven-execution-specific-java-version/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-execution-specific-java-version/src/main/java/com/example/App.java new file mode 100644 index 000000000000..74ddfe583487 --- /dev/null +++ b/java/ql/integration-tests/java/maven-execution-specific-java-version/src/main/java/com/example/App.java @@ -0,0 +1,12 @@ +package com.example; + +public class App { + public static void main(String[] args) { + var message = "Hello World! Running on Java " + System.getProperty("java.version"); + System.out.println(message); + } + + public String getMessage() { + return "Hello from App"; + } +} diff --git a/java/ql/integration-tests/java/maven-execution-specific-java-version/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-execution-specific-java-version/src/test/java/com/example/AppTest.java new file mode 100644 index 000000000000..4f8e04f7d78b --- /dev/null +++ b/java/ql/integration-tests/java/maven-execution-specific-java-version/src/test/java/com/example/AppTest.java @@ -0,0 +1,11 @@ +package com.example; + +public class AppTest { + public static void main(String[] args) { + var text = """ + Hello + World + """; + System.out.println(text.strip()); + } +} diff --git a/java/ql/integration-tests/java/maven-execution-specific-java-version/test.py b/java/ql/integration-tests/java/maven-execution-specific-java-version/test.py new file mode 100644 index 000000000000..73c4b1415a11 --- /dev/null +++ b/java/ql/integration-tests/java/maven-execution-specific-java-version/test.py @@ -0,0 +1,2 @@ +def test(codeql, java, actions_toolchains_file): + codeql.database.create(_env={"LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": str(actions_toolchains_file)}) diff --git a/java/ql/integration-tests/java/maven-java16-with-higher-jdk/pom.xml b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/pom.xml new file mode 100644 index 000000000000..e6a09518d8f2 --- /dev/null +++ b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/pom.xml @@ -0,0 +1,30 @@ + + + + 4.0.0 + + com.example + maven-java16-with-higher-jdk + 1.0-SNAPSHOT + + maven-java16-with-higher-jdk + Test case: Java 16 target when only Java 17+ is available. + + + UTF-8 + 16 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + ${java.version} + + + + + diff --git a/java/ql/integration-tests/java/maven-java16-with-higher-jdk/source_archive.expected b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/source_archive.expected new file mode 100644 index 000000000000..eb5dbc368eea --- /dev/null +++ b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/source_archive.expected @@ -0,0 +1,3 @@ +pom.xml +src/main/java/com/example/App.java +target/maven-archiver/pom.properties diff --git a/java/ql/integration-tests/java/maven-java16-with-higher-jdk/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/src/main/java/com/example/App.java new file mode 100644 index 000000000000..707e579ad68e --- /dev/null +++ b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/src/main/java/com/example/App.java @@ -0,0 +1,15 @@ +package com.example; + +import java.util.List; + +/** + * Simple class using Java 16 features (e.g.,records). + */ +public class App { + public static void main(String[] args) { + Person person = new Person("Bob", 42); + System.out.println(person); + } +} + +record Person(String name, int age) {} diff --git a/java/ql/integration-tests/java/maven-java16-with-higher-jdk/test.py b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/test.py new file mode 100644 index 000000000000..73c4b1415a11 --- /dev/null +++ b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/test.py @@ -0,0 +1,2 @@ +def test(codeql, java, actions_toolchains_file): + codeql.database.create(_env={"LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": str(actions_toolchains_file)}) diff --git a/java/ql/integration-tests/java/maven-java8-java11-dependency/pom.xml b/java/ql/integration-tests/java/maven-java8-java11-dependency/pom.xml new file mode 100644 index 000000000000..f50a3aadd235 --- /dev/null +++ b/java/ql/integration-tests/java/maven-java8-java11-dependency/pom.xml @@ -0,0 +1,41 @@ + + + + 4.0.0 + + com.example + maven-java8-java11-dependency + 1.0-SNAPSHOT + + maven-java8-java11-dependency + Test case: Java 8 project with dependency requiring Java 11+ + + + UTF-8 + 1.8 + 1.8 + + + + + + org.testng + testng + 7.7.0 + test + + + + + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + + diff --git a/java/ql/integration-tests/java/maven-java8-java11-dependency/source_archive.expected b/java/ql/integration-tests/java/maven-java8-java11-dependency/source_archive.expected new file mode 100644 index 000000000000..5088f76cc380 --- /dev/null +++ b/java/ql/integration-tests/java/maven-java8-java11-dependency/source_archive.expected @@ -0,0 +1,4 @@ +pom.xml +src/main/java/com/example/Calculator.java +src/test/java/com/example/CalculatorTest.java +target/maven-archiver/pom.properties diff --git a/java/ql/integration-tests/java/maven-java8-java11-dependency/src/main/java/com/example/Calculator.java b/java/ql/integration-tests/java/maven-java8-java11-dependency/src/main/java/com/example/Calculator.java new file mode 100644 index 000000000000..4cc529e4f0f2 --- /dev/null +++ b/java/ql/integration-tests/java/maven-java8-java11-dependency/src/main/java/com/example/Calculator.java @@ -0,0 +1,11 @@ +package com.example; + +public class Calculator { + public int add(int a, int b) { + return a + b; + } + + public int multiply(int a, int b) { + return a * b; + } +} diff --git a/java/ql/integration-tests/java/maven-java8-java11-dependency/src/test/java/com/example/CalculatorTest.java b/java/ql/integration-tests/java/maven-java8-java11-dependency/src/test/java/com/example/CalculatorTest.java new file mode 100644 index 000000000000..821330a32ccb --- /dev/null +++ b/java/ql/integration-tests/java/maven-java8-java11-dependency/src/test/java/com/example/CalculatorTest.java @@ -0,0 +1,21 @@ +package com.example; + +import org.testng.Assert; +import org.testng.annotations.Test; + +/** + * Test class using TestNG 7.7.0 which requires Java 11+. + */ +public class CalculatorTest { + @Test + public void testAdd() { + Calculator calc = new Calculator(); + Assert.assertEquals(calc.add(2, 3), 5); + } + + @Test + public void testMultiply() { + Calculator calc = new Calculator(); + Assert.assertEquals(calc.multiply(3, 4), 12); + } +} diff --git a/java/ql/integration-tests/java/maven-java8-java11-dependency/test.py b/java/ql/integration-tests/java/maven-java8-java11-dependency/test.py new file mode 100644 index 000000000000..73c4b1415a11 --- /dev/null +++ b/java/ql/integration-tests/java/maven-java8-java11-dependency/test.py @@ -0,0 +1,2 @@ +def test(codeql, java, actions_toolchains_file): + codeql.database.create(_env={"LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": str(actions_toolchains_file)}) diff --git a/java/ql/integration-tests/java/maven-multimodule-test-java-version/main-module/pom.xml b/java/ql/integration-tests/java/maven-multimodule-test-java-version/main-module/pom.xml new file mode 100644 index 000000000000..39586e4e0aba --- /dev/null +++ b/java/ql/integration-tests/java/maven-multimodule-test-java-version/main-module/pom.xml @@ -0,0 +1,10 @@ + + + 4.0.0 + + com.example + maven-multimodule-test-java-version + 1.0 + + main-module + diff --git a/java/ql/integration-tests/java/maven-multimodule-test-java-version/main-module/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-multimodule-test-java-version/main-module/src/main/java/com/example/App.java new file mode 100644 index 000000000000..d2397803d550 --- /dev/null +++ b/java/ql/integration-tests/java/maven-multimodule-test-java-version/main-module/src/main/java/com/example/App.java @@ -0,0 +1,7 @@ +package com.example; + +public class App { + public static void main(String[] args) { + System.out.println("Hello World!"); + } +} \ No newline at end of file diff --git a/java/ql/integration-tests/java/maven-multimodule-test-java-version/pom.xml b/java/ql/integration-tests/java/maven-multimodule-test-java-version/pom.xml new file mode 100644 index 000000000000..ea5f8b5b03b3 --- /dev/null +++ b/java/ql/integration-tests/java/maven-multimodule-test-java-version/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + com.example + maven-multimodule-test-java-version + 1.0 + pom + + + 17 + + + + main-module + test-module + + diff --git a/java/ql/integration-tests/java/maven-multimodule-test-java-version/source_archive.expected b/java/ql/integration-tests/java/maven-multimodule-test-java-version/source_archive.expected new file mode 100644 index 000000000000..08385ca91a0a --- /dev/null +++ b/java/ql/integration-tests/java/maven-multimodule-test-java-version/source_archive.expected @@ -0,0 +1,7 @@ +main-module/pom.xml +main-module/src/main/java/com/example/App.java +main-module/target/maven-archiver/pom.properties +pom.xml +test-module/pom.xml +test-module/src/main/java/com/example/tests/TestUtils.java +test-module/target/maven-archiver/pom.properties diff --git a/java/ql/integration-tests/java/maven-multimodule-test-java-version/test-module/pom.xml b/java/ql/integration-tests/java/maven-multimodule-test-java-version/test-module/pom.xml new file mode 100644 index 000000000000..5895a91b2c19 --- /dev/null +++ b/java/ql/integration-tests/java/maven-multimodule-test-java-version/test-module/pom.xml @@ -0,0 +1,14 @@ + + + 4.0.0 + + com.example + maven-multimodule-test-java-version + 1.0 + + test-module + + + 21 + + diff --git a/java/ql/integration-tests/java/maven-multimodule-test-java-version/test-module/src/main/java/com/example/tests/TestUtils.java b/java/ql/integration-tests/java/maven-multimodule-test-java-version/test-module/src/main/java/com/example/tests/TestUtils.java new file mode 100644 index 000000000000..30e83856200f --- /dev/null +++ b/java/ql/integration-tests/java/maven-multimodule-test-java-version/test-module/src/main/java/com/example/tests/TestUtils.java @@ -0,0 +1,12 @@ +package com.example.tests; + +// Requires Java 21: switch with pattern matching and guards +public class TestUtils { + public static String analyze(Object obj) { + return switch (obj) { + case String s when s.length() > 5 -> "long"; + case String s -> "short"; + default -> "other"; + }; + } +} \ No newline at end of file diff --git a/java/ql/integration-tests/java/maven-multimodule-test-java-version/test.py b/java/ql/integration-tests/java/maven-multimodule-test-java-version/test.py new file mode 100644 index 000000000000..73c4b1415a11 --- /dev/null +++ b/java/ql/integration-tests/java/maven-multimodule-test-java-version/test.py @@ -0,0 +1,2 @@ +def test(codeql, java, actions_toolchains_file): + codeql.database.create(_env={"LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": str(actions_toolchains_file)}) diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index e261dbee59e9..ee076ba77a75 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,21 @@ +## 7.8.2 + +No user-facing changes. + +## 7.8.1 + +No user-facing changes. + +## 7.8.0 + +### Deprecated APIs + +* The SSA interface has been updated and all classes and several predicates have been renamed. See the qldoc for more specific migration information. + +## 7.7.4 + +No user-facing changes. + ## 7.7.3 No user-facing changes. diff --git a/java/ql/lib/change-notes/released/7.7.4.md b/java/ql/lib/change-notes/released/7.7.4.md new file mode 100644 index 000000000000..47cd244f7892 --- /dev/null +++ b/java/ql/lib/change-notes/released/7.7.4.md @@ -0,0 +1,3 @@ +## 7.7.4 + +No user-facing changes. diff --git a/java/ql/lib/change-notes/released/7.8.0.md b/java/ql/lib/change-notes/released/7.8.0.md new file mode 100644 index 000000000000..aa7501b1ff1e --- /dev/null +++ b/java/ql/lib/change-notes/released/7.8.0.md @@ -0,0 +1,5 @@ +## 7.8.0 + +### Deprecated APIs + +* The SSA interface has been updated and all classes and several predicates have been renamed. See the qldoc for more specific migration information. diff --git a/java/ql/lib/change-notes/released/7.8.1.md b/java/ql/lib/change-notes/released/7.8.1.md new file mode 100644 index 000000000000..c59551a0409a --- /dev/null +++ b/java/ql/lib/change-notes/released/7.8.1.md @@ -0,0 +1,3 @@ +## 7.8.1 + +No user-facing changes. diff --git a/java/ql/lib/change-notes/released/7.8.2.md b/java/ql/lib/change-notes/released/7.8.2.md new file mode 100644 index 000000000000..8b7244cb0b69 --- /dev/null +++ b/java/ql/lib/change-notes/released/7.8.2.md @@ -0,0 +1,3 @@ +## 7.8.2 + +No user-facing changes. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 6856106e7719..40a3d24f296a 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.7.3 +lastReleaseVersion: 7.8.2 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 91cc6414a839..065d8e1cd6c6 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.7.3 +version: 7.8.2 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/lib/semmle/code/java/Expr.qll b/java/ql/lib/semmle/code/java/Expr.qll index 282d90eaeee0..4b03375c69ee 100644 --- a/java/ql/lib/semmle/code/java/Expr.qll +++ b/java/ql/lib/semmle/code/java/Expr.qll @@ -1808,6 +1808,52 @@ class VariableAssign extends VariableUpdate { } } +private newtype TVariableWrite = + TParamInit(Parameter p) or + TVarWriteExpr(VariableUpdate u) + +/** + * A write to a variable. This is either a local variable declaration, + * including parameter declarations, or an update to a variable. + */ +class VariableWrite extends TVariableWrite { + /** Gets the expression representing this write, if any. */ + Expr asExpr() { this = TVarWriteExpr(result) } + + /** + * Gets the expression with the value being written, if any. + * + * This can be the same expression as returned by `asExpr()`, which is the + * case for, for example, `++x` and `x += e`. For simple assignments like + * `x = e`, `asExpr()` gets the whole assignment expression while + * `getValue()` gets the right-hand side `e`. Post-crement operations like + * `x++` do not have an expression with the value being written. + */ + Expr getValue() { + this.asExpr().(VariableAssign).getSource() = result or + this.asExpr().(AssignOp) = result or + this.asExpr().(PreIncExpr) = result or + this.asExpr().(PreDecExpr) = result + } + + /** Holds if this write is an initialization of parameter `p`. */ + predicate isParameterInit(Parameter p) { this = TParamInit(p) } + + /** Gets a textual representation of this write. */ + string toString() { + exists(Parameter p | this = TParamInit(p) and result = p.toString()) + or + result = this.asExpr().toString() + } + + /** Gets the location of this write. */ + Location getLocation() { + exists(Parameter p | this = TParamInit(p) and result = p.getLocation()) + or + result = this.asExpr().getLocation() + } +} + /** A type literal. For example, `String.class`. */ class TypeLiteral extends Expr, @typeliteral { /** Gets the access to the type whose class is accessed. */ diff --git a/java/ql/lib/semmle/code/java/JDK.qll b/java/ql/lib/semmle/code/java/JDK.qll index bdc2fb92fa05..f965fbfe6ba6 100644 --- a/java/ql/lib/semmle/code/java/JDK.qll +++ b/java/ql/lib/semmle/code/java/JDK.qll @@ -321,12 +321,7 @@ class WriteObjectMethod extends Method { class ReadObjectMethod extends Method { ReadObjectMethod() { this.getDeclaringType() instanceof TypeObjectInputStream and - ( - this.hasName("readObject") or - this.hasName("readObjectOverride") or - this.hasName("readUnshared") or - this.hasName("resolveObject") - ) + this.hasName(["readObject", "readObjectOverride", "readUnshared", "resolveObject"]) } } diff --git a/java/ql/lib/semmle/code/java/NumberFormatException.qll b/java/ql/lib/semmle/code/java/NumberFormatException.qll index 83f66d1a709d..96174cd1ddca 100644 --- a/java/ql/lib/semmle/code/java/NumberFormatException.qll +++ b/java/ql/lib/semmle/code/java/NumberFormatException.qll @@ -46,12 +46,7 @@ private class SpecialClassInstanceExpr extends ClassInstanceExpr { } predicate throwsNfe() { - this.isStringConstructor("Byte") or - this.isStringConstructor("Short") or - this.isStringConstructor("Integer") or - this.isStringConstructor("Long") or - this.isStringConstructor("Float") or - this.isStringConstructor("Double") + this.isStringConstructor(["Byte", "Short", "Integer", "Long", "Float", "Double"]) } } diff --git a/java/ql/lib/semmle/code/java/Overlay.qll b/java/ql/lib/semmle/code/java/Overlay.qll index b5f7264eb3df..b73f2283cadf 100644 --- a/java/ql/lib/semmle/code/java/Overlay.qll +++ b/java/ql/lib/semmle/code/java/Overlay.qll @@ -5,6 +5,7 @@ overlay[local?] module; import java +private import internal.OverlayXml /** * A local predicate that always holds for the overlay variant and @@ -18,7 +19,7 @@ predicate isOverlay() { databaseMetadata("isOverlay", "true") } overlay[local] string getRawFile(@locatable el) { exists(@location loc, @file file | - (hasLocation(el, loc) or xmllocations(el, loc)) and + hasLocation(el, loc) and locations_default(loc, file, _, _, _, _) and files(file, result) ) @@ -102,31 +103,3 @@ private predicate discardBaseConfigLocatable(@configLocatable el) { // property files than those included in overlayChangedFiles. overlayConfigExtracted(baseConfigLocatable(el)) } - -/** - * An `@xmllocatable` that should be discarded in the base variant if its file is - * extracted in the overlay variant. - */ -overlay[local] -abstract class DiscardableXmlLocatable extends @xmllocatable { - /** Gets the raw file for an xmllocatable in base. */ - string getRawFileInBase() { not isOverlay() and result = getRawFile(this) } - - /** Gets a textual representation of this discardable xmllocatable. */ - string toString() { none() } -} - -overlay[local] -private predicate overlayXmlExtracted(string file) { - isOverlay() and - exists(@xmllocatable el | not files(el, _) and not xmlNs(el, _, _, _) and file = getRawFile(el)) -} - -overlay[discard_entity] -private predicate discardXmlLocatable(@xmllocatable el) { - overlayChangedFiles(el.(DiscardableXmlLocatable).getRawFileInBase()) - or - // The XML extractor is currently not incremental and may extract more - // XML files than those included in overlayChangedFiles. - overlayXmlExtracted(el.(DiscardableXmlLocatable).getRawFileInBase()) -} diff --git a/java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll b/java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll index 9fe6b9b0b1df..2b8353a6b078 100644 --- a/java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll +++ b/java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll @@ -6,11 +6,12 @@ module; import java private import codeql.controlflow.ControlFlowReachability -private import semmle.code.java.dataflow.SSA as SSA +private import semmle.code.java.dataflow.SSA private import semmle.code.java.controlflow.Guards as Guards private module ControlFlowInput implements InputSig { private import java as J + import Ssa AstNode getEnclosingAstNode(ControlFlowNode node) { node.getAstNode() = result } @@ -27,23 +28,6 @@ private module ControlFlowInput implements InputSig { private import java as J - private import semmle.code.java.dataflow.internal.BaseSSA + private import semmle.code.java.dataflow.internal.BaseSSA as Base private import semmle.code.java.dataflow.NullGuards as NullGuards class NormalExitNode = ControlFlow::NormalExitNode; @@ -211,10 +211,10 @@ private module GuardsInput implements SharedGuards::InputSig 0 or - exists(SsaVariable v | + exists(SsaDefinition v | // A use of an array variable is non-empty if... - result = v.getAUse() and + result = v.getARead() and v.getSourceVariable().getType() instanceof Array | // ...its definition is non-empty... - v.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() = nonEmptyExpr() + v.(SsaExplicitWrite).getValue() = nonEmptyExpr() or // ...or it is guarded by a condition proving its length to be non-zero. exists(ConditionBlock cond, boolean branch, FieldAccess length | cond.controls(result.getBasicBlock(), branch) and cond.getCondition() = nonZeroGuard(length, branch) and length.getField().hasName("length") and - length.getQualifier() = v.getAUse() + length.getQualifier() = v.getARead() ) ) or - exists(SsaVariable v | + exists(SsaDefinition v | // A use of a Collection variable is non-empty if... - result = v.getAUse() and + result = v.getARead() and v.getSourceVariable().getType() instanceof CollectionType and exists(ConditionBlock cond, boolean branch, Expr c | // ...it is guarded by a condition... @@ -216,13 +216,13 @@ private Expr nonEmptyExpr() { // ...and the condition proves that it is non-empty, either by using the `isEmpty` method... c.(MethodCall).getMethod().hasName("isEmpty") and branch = false and - c.(MethodCall).getQualifier() = v.getAUse() + c.(MethodCall).getQualifier() = v.getARead() or // ...or a check on its `size`. exists(MethodCall size | c = nonZeroGuard(size, branch) and size.getMethod().hasName("size") and - size.getQualifier() = v.getAUse() + size.getQualifier() = v.getARead() ) ) ) @@ -249,9 +249,9 @@ private predicate impossibleEdge(BasicBlock bb1, BasicBlock bb2) { } private module NullnessConfig implements ControlFlowReachability::ConfigSig { - predicate source(ControlFlowNode node, SsaVariable def) { varMaybeNull(def, node, _, _) } + predicate source(ControlFlowNode node, SsaDefinition def) { varMaybeNull(def, node, _, _) } - predicate sink(ControlFlowNode node, SsaVariable def) { varDereference(def, _) = node } + predicate sink(ControlFlowNode node, SsaDefinition def) { varDereference(def, _) = node } predicate barrierValue(GuardValue gv) { gv.isNullness(false) } @@ -266,7 +266,7 @@ private module NullnessFlow = ControlFlowReachability::Flow; * Holds if the dereference of `v` at `va` might be `null`. */ predicate nullDeref(SsaSourceVariable v, VarAccess va, string msg, Expr reason) { - exists(SsaVariable origin, SsaVariable ssa, ControlFlowNode src, ControlFlowNode sink | + exists(SsaDefinition origin, SsaDefinition ssa, ControlFlowNode src, ControlFlowNode sink | varMaybeNull(origin, src, msg, reason) and NullnessFlow::flow(src, origin, sink, ssa) and ssa.getSourceVariable() = v and @@ -278,9 +278,9 @@ predicate nullDeref(SsaSourceVariable v, VarAccess va, string msg, Expr reason) * A dereference of a variable that is always `null`. */ predicate alwaysNullDeref(SsaSourceVariable v, VarAccess va) { - exists(BasicBlock bb, SsaVariable ssa | - forall(SsaVariable def | def = ssa.getAnUltimateDefinition() | - def.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() = alwaysNullExpr() + exists(BasicBlock bb, SsaDefinition ssa | + forall(SsaDefinition def | def = ssa.getAnUltimateDefinition() | + def.(SsaExplicitWrite).getValue() = alwaysNullExpr() ) or nullGuardControls(ssa, true, bb) and diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll index f65e15d1c61b..ac43590e4dc8 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll @@ -242,17 +242,17 @@ module Sem implements Semantic { Type getSsaType(SsaVariable var) { result = var.getSourceVariable().getType() } - final private class FinalSsaVariable = SSA::SsaVariable; + final private class FinalSsaVariable = SSA::SsaDefinition; class SsaVariable extends FinalSsaVariable { - Expr getAUse() { result = super.getAUse() } + Expr getAUse() { result = super.getARead() } } - class SsaPhiNode extends SsaVariable instanceof SSA::SsaPhiNode { + class SsaPhiNode extends SsaVariable instanceof SSA::SsaPhiDefinition { predicate hasInputFromBlock(SsaVariable inp, BasicBlock bb) { super.hasInputFromBlock(inp, bb) } } - class SsaExplicitUpdate extends SsaVariable instanceof SSA::SsaExplicitUpdate { + class SsaExplicitUpdate extends SsaVariable instanceof SSA::SsaExplicitWrite { Expr getDefiningExpr() { result = super.getDefiningExpr() } } diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll index efd7bcd80889..6985053735c5 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll @@ -30,17 +30,17 @@ predicate eqFlowCond = U::eqFlowCond/5; * only other input to `phi` is a `null` value. * * Note that the declared type of `phi` is `SsaVariable` instead of - * `SsaPhiNode` in order for the reflexive case of `nonNullSsaFwdStep*(..)` to - * have non-`SsaPhiNode` results. + * `SsaPhiDefinition` in order for the reflexive case of `nonNullSsaFwdStep*(..)` to + * have non-`SsaPhiDefinition` results. */ -private predicate nonNullSsaFwdStep(SsaVariable v, SsaVariable phi) { - exists(SsaExplicitUpdate vnull, SsaPhiNode phi0 | phi0 = phi | - 2 = strictcount(phi0.getAPhiInput()) and - vnull = phi0.getAPhiInput() and - v = phi0.getAPhiInput() and +private predicate nonNullSsaFwdStep(SsaDefinition v, SsaDefinition phi) { + exists(SsaExplicitWrite vnull, SsaPhiDefinition phi0 | phi0 = phi | + 2 = strictcount(phi0.getAnInput()) and + vnull = phi0.getAnInput() and + v = phi0.getAnInput() and not backEdge(phi0, v, _) and vnull != v and - vnull.getDefiningExpr().(VariableAssign).getSource() instanceof NullLiteral + vnull.getValue() instanceof NullLiteral ) } @@ -56,13 +56,13 @@ private predicate nonNullDefStep(Expr e1, Expr e2) { * explicit `ArrayCreationExpr` definition and that the definition does not go * through a back edge. */ -ArrayCreationExpr getArrayDef(SsaVariable v) { +ArrayCreationExpr getArrayDef(SsaDefinition v) { exists(Expr src | - v.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() = src and + v.(SsaExplicitWrite).getValue() = src and nonNullDefStep*(result, src) ) or - exists(SsaVariable mid | + exists(SsaDefinition mid | result = getArrayDef(mid) and nonNullSsaFwdStep(mid, v) ) @@ -74,9 +74,9 @@ ArrayCreationExpr getArrayDef(SsaVariable v) { * `arrlen` without going through a back edge. */ private predicate arrayLengthDef(FieldRead arrlen, ArrayCreationExpr def) { - exists(SsaVariable arr | + exists(SsaDefinition arr | arrlen.getField() instanceof ArrayLengthField and - arrlen.getQualifier() = arr.getAUse() and + arrlen.getQualifier() = arr.getARead() and def = getArrayDef(arr) ) } @@ -86,9 +86,11 @@ pragma[nomagic] private predicate constantIntegerExpr(Expr e, int val) { e.(CompileTimeConstantExpr).getIntValue() = val or - exists(SsaExplicitUpdate v, Expr src | - e = v.getAUse() and - src = v.getDefiningExpr().(VariableAssign).getSource() and + e.(LongLiteral).getValue().toInt() = val + or + exists(SsaExplicitWrite v, Expr src | + e = v.getARead() and + src = v.getValue() and constantIntegerExpr(src, val) ) or @@ -112,9 +114,9 @@ pragma[nomagic] private predicate constantBooleanExpr(Expr e, boolean val) { e.(CompileTimeConstantExpr).getBooleanValue() = val or - exists(SsaExplicitUpdate v, Expr src | - e = v.getAUse() and - src = v.getDefiningExpr().(VariableAssign).getSource() and + exists(SsaExplicitWrite v, Expr src | + e = v.getARead() and + src = v.getValue() and constantBooleanExpr(src, val) ) or @@ -125,9 +127,9 @@ pragma[nomagic] private predicate constantStringExpr(Expr e, string val) { e.(CompileTimeConstantExpr).getStringValue() = val or - exists(SsaExplicitUpdate v, Expr src | - e = v.getAUse() and - src = v.getDefiningExpr().(VariableAssign).getSource() and + exists(SsaExplicitWrite v, Expr src | + e = v.getARead() and + src = v.getValue() and constantStringExpr(src, val) ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index 40da9a4e94d1..a627904174b6 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -5,16 +5,16 @@ * `ControlFlowNode` at which it is defined. Each SSA variable is defined * either by a phi node, an implicit initial value (for parameters and fields), * an explicit update, or an implicit update (for fields). - * An implicit update occurs either at a `Call` that might modify a field, at - * another update that can update the qualifier of a field, or at a `FieldRead` - * of the field in case the field is not amenable to a non-trivial SSA - * representation. + * An implicit update occurs either at a `Call` that might modify a field, or + * at another update that can update the qualifier of a field. */ overlay[local?] module; import java private import internal.SsaImpl +import internal.SsaImpl::Ssa as Ssa +import Ssa /** * A fully qualified variable in the context of a `Callable` in which it is @@ -105,7 +105,7 @@ class SsaSourceVariable extends TSsaSourceVariable { SsaSourceVariable getQualifier() { this = TQualifiedField(_, result, _) } /** Gets an SSA variable that has this variable as its underlying source variable. */ - SsaVariable getAnSsaVariable() { result.getSourceVariable() = this } + SsaDefinition getAnSsaVariable() { result.getSourceVariable() = this } } /** @@ -138,22 +138,76 @@ class SsaSourceField extends SsaSourceVariable { } } +/** An SSA definition in a closure that captures a variable. */ +class SsaCapturedDefinition extends SsaImplicitEntryDefinition { + SsaCapturedDefinition() { captures(this, _) } + + override string toString() { result = "SSA capture def(" + this.getSourceVariable() + ")" } + + /** Holds if this definition captures the value of `capturedvar`. */ + predicate captures(SsaDefinition capturedvar) { captures(this, capturedvar) } + + /** + * Gets a definition that ultimately defines the captured variable and is not itself a phi node. + */ + SsaDefinition getAnUltimateCapturedDefinition() { + exists(SsaDefinition capturedvar | + captures(this, capturedvar) and result = capturedvar.getAnUltimateDefinition() + ) + } +} + +/** + * An SSA definition representing the potential definition of a variable + * via a call. + */ +class SsaImplicitCallDefinition extends SsaImplicitWrite { + SsaImplicitCallDefinition() { isNonLocal(this) and not hasQualifierUpdate(this) } + + override string toString() { result = "SSA call def(" + this.getSourceVariable() + ")" } + + /** + * Gets a reachable `FieldWrite` that might represent this ssa update, if any. + */ + overlay[global] + FieldWrite getANonLocalUpdate() { result = getANonLocalUpdate(this) } +} + +/** An SSA definition due to an update of the qualifier. */ +class SsaImplicitQualifierDefinition extends SsaImplicitWrite { + SsaImplicitQualifierDefinition() { hasQualifierUpdate(this) } + + override string toString() { result = "SSA qualifier def(" + this.getSourceVariable() + ")" } +} + /** + * Gets an access of the SSA source variable underlying this SSA variable + * that can be reached from this SSA variable without passing through any + * other uses, but potentially through phi nodes and uncertain implicit + * updates. + */ +VarRead ssaGetAFirstUse(SsaDefinition def) { firstUse(def, result) } + +/** + * DEPRECATED: use `SsaDefinition` instead. + * * An SSA variable. */ -class SsaVariable extends Definition { +deprecated class SsaVariable extends Definition { /** Gets the SSA source variable underlying this SSA variable. */ SsaSourceVariable getSourceVariable() { result = super.getSourceVariable() } - /** Gets the `ControlFlowNode` at which this SSA variable is defined. */ + /** + * DEPRECATED: Use `getControlFlowNode()` instead. + * + * Gets the `ControlFlowNode` at which this SSA variable is defined. + */ pragma[nomagic] - ControlFlowNode getCfgNode() { - exists(BasicBlock bb, int i, int j | + deprecated ControlFlowNode getCfgNode() { + exists(BasicBlock bb, int i | this.definesAt(_, bb, i) and - // untracked definitions are inserted just before reads - (if this instanceof UntrackedDef then j = i + 1 else j = i) and // phi nodes are inserted at position `-1` - result = bb.getNode(0.maximum(j)) + result = bb.getNode(0.maximum(i)) ) } @@ -166,10 +220,16 @@ class SsaVariable extends Definition { /** Gets the `BasicBlock` in which this SSA variable is defined. */ BasicBlock getBasicBlock() { result = super.getBasicBlock() } - /** Gets an access of this SSA variable. */ - VarRead getAUse() { result = getAUse(this) } + /** + * DEPRECATED: Use `getARead()` instead. + * + * Gets an access of this SSA variable. + */ + deprecated VarRead getAUse() { result = getAUse(this) } /** + * DEPRECATED: Use `ssaGetAFirstUse(SsaDefinition)` instead. + * * Gets an access of the SSA source variable underlying this SSA variable * that can be reached from this SSA variable without passing through any * other uses, but potentially through phi nodes and uncertain implicit @@ -178,35 +238,50 @@ class SsaVariable extends Definition { * Subsequent uses can be found by following the steps defined by * `adjacentUseUse`. */ - VarRead getAFirstUse() { firstUse(this, result) } + deprecated VarRead getAFirstUse() { firstUse(this, result) } /** Holds if this SSA variable is live at the end of `b`. */ predicate isLiveAtEndOfBlock(BasicBlock b) { ssaDefReachesEndOfBlock(b, this) } /** + * DEPRECATED. + * * Gets an SSA variable whose value can flow to this one in one step. This * includes inputs to phi nodes, the prior definition of uncertain updates, * and the captured ssa variable for a closure variable. */ - SsaVariable getAPhiInputOrPriorDef() { + deprecated SsaVariable getAPhiInputOrPriorDef() { result = this.(SsaPhiNode).getAPhiInput() or result = this.(SsaUncertainImplicitUpdate).getPriorDef() or this.(SsaImplicitInit).captures(result) } - /** Gets a definition that ultimately defines this variable and is not itself a phi node. */ - SsaVariable getAnUltimateDefinition() { + /** + * DEPRECATED: Use `SsaCapturedDefinition::getAnUltimateCapturedDefinition()` + * and/or `SsaDefinition::getAnUltimateDefinition()` instead. + * + * Gets a definition that ultimately defines this variable and is not itself a phi node. + */ + deprecated SsaVariable getAnUltimateDefinition() { result = this.getAPhiInputOrPriorDef*() and not result instanceof SsaPhiNode } } -/** An SSA variable that either explicitly or implicitly updates the variable. */ -class SsaUpdate extends SsaVariable instanceof WriteDefinition { +/** + * DEPRECATED: use `SsaWriteDefinition` instead. + * + * An SSA variable that either explicitly or implicitly updates the variable. + */ +deprecated class SsaUpdate extends SsaVariable instanceof WriteDefinition { SsaUpdate() { not this instanceof SsaImplicitInit } } -/** An SSA variable that is defined by a `VariableUpdate`. */ -class SsaExplicitUpdate extends SsaUpdate { +/** + * DEPRECATED: Use `SsaExplicitWrite` instead. + * + * An SSA variable that is defined by a `VariableUpdate`. + */ +deprecated class SsaExplicitUpdate extends SsaUpdate { private VariableUpdate upd; SsaExplicitUpdate() { ssaExplicitUpdate(this, upd) } @@ -218,12 +293,14 @@ class SsaExplicitUpdate extends SsaUpdate { } /** + * DEPRECATED: Use `SsaImplicitWrite` instead. + * * An SSA variable that represents any sort of implicit update. This can be a * `Call` that might reach a non-local update of the field, an explicit or * implicit update of the qualifier of the field, or the implicit update that * occurs just prior to a `FieldRead` of an untracked field. */ -class SsaImplicitUpdate extends SsaUpdate { +deprecated class SsaImplicitUpdate extends SsaUpdate { SsaImplicitUpdate() { not this instanceof SsaExplicitUpdate } override string toString() { @@ -246,73 +323,93 @@ class SsaImplicitUpdate extends SsaUpdate { } private string getKind() { - this instanceof UntrackedDef and result = "untracked" - or this.hasExplicitQualifierUpdate() and - result = "explicit qualifier" + result = "explicit qualifier" // -> SSA qualifier def or if this.hasImplicitQualifierUpdate() then if isNonLocal(this) - then result = "nonlocal + nonlocal qualifier" - else result = "nonlocal qualifier" + then result = "nonlocal + nonlocal qualifier" // -> SSA qualifier def + else result = "nonlocal qualifier" // -> SSA qualifier def else ( - isNonLocal(this) and result = "nonlocal" + isNonLocal(this) and result = "nonlocal" // -> SSA call def ) } /** + * DEPRECATED: Use `SsaImplicitCallDefinition.getANonLocalUpdate()` instead. + * * Gets a reachable `FieldWrite` that might represent this ssa update, if any. */ overlay[global] - FieldWrite getANonLocalUpdate() { - exists(SsaSourceField f, Callable setter | - relevantFieldUpdate(setter, f.getField(), result) and - defUpdatesNamedField(this, f, setter) - ) - } + deprecated FieldWrite getANonLocalUpdate() { result = getANonLocalUpdate(this) } /** + * DEPRECATED: Use `SsaImplicitQualifierDefinition` instead. + * * Holds if this ssa variable might change the value to something unknown. * * Examples include updates that might change the value of the qualifier, or * reads from untracked variables, for example those where the field or one * of its qualifiers is volatile. */ - predicate assignsUnknownValue() { - this instanceof UntrackedDef - or + deprecated predicate assignsUnknownValue() { this.hasExplicitQualifierUpdate() or this.hasImplicitQualifierUpdate() } } +private predicate hasQualifierUpdate(SsaImplicitWrite def) { + exists(SsaWriteDefinition qdef, BasicBlock bb, int i | + qdef.definesAt(def.getSourceVariable().getQualifier(), bb, i) and + def.definesAt(_, bb, i) and + not qdef instanceof SsaImplicitEntryDefinition + ) +} + +/** + * Gets a reachable `FieldWrite` that might represent this ssa update, if any. + */ overlay[global] -private predicate isNonLocalImpl(SsaImplicitUpdate su) { exists(su.getANonLocalUpdate()) } +private FieldWrite getANonLocalUpdate(SsaImplicitWrite calldef) { + exists(SsaSourceField f, Callable setter | + relevantFieldUpdate(setter, f.getField(), result) and + defUpdatesNamedField(calldef, f, setter) + ) +} -private predicate isNonLocal(SsaImplicitUpdate su) = forceLocal(isNonLocalImpl/1)(su) +overlay[global] +private predicate isNonLocalImpl(SsaImplicitWrite calldef) { exists(getANonLocalUpdate(calldef)) } + +private predicate isNonLocal(SsaImplicitWrite calldef) = forceLocal(isNonLocalImpl/1)(calldef) /** + * DEPRECATED: Use `SsaUncertainWrite` instead. + * * An SSA variable that represents an uncertain implicit update of the value. * This is a `Call` that might reach a non-local update of the field or one of * its qualifiers. */ -class SsaUncertainImplicitUpdate extends SsaImplicitUpdate { +deprecated class SsaUncertainImplicitUpdate extends SsaImplicitUpdate { SsaUncertainImplicitUpdate() { ssaUncertainImplicitUpdate(this) } /** + * DEPRECATED: Use `getPriorDefinition()` instead. + * * Gets the immediately preceding definition. Since this update is uncertain * the value from the preceding definition might still be valid. */ - SsaVariable getPriorDef() { ssaDefReachesUncertainDef(result, this) } + deprecated SsaVariable getPriorDef() { ssaDefReachesUncertainDef(result, this) } } /** + * DEPRECATED: Use `SsaParameterInit`, `SsaImplicitEntryDefinition`, or `SsaCapturedDefinition` instead. + * * An SSA variable that is defined by its initial value in the callable. This * includes initial values of parameters, fields, and closure variables. */ -class SsaImplicitInit extends SsaVariable instanceof WriteDefinition { +deprecated class SsaImplicitInit extends SsaVariable instanceof WriteDefinition { SsaImplicitInit() { ssaImplicitInit(this) } override string toString() { result = "SSA init(" + this.getSourceVariable() + ")" } @@ -321,20 +418,30 @@ class SsaImplicitInit extends SsaVariable instanceof WriteDefinition { predicate captures(SsaVariable capturedvar) { captures(this, capturedvar) } /** + * DEPRECATED: Use `SsaParameterInit::getParameter()` instead. + * * Holds if the SSA variable is a parameter defined by its initial value in the callable. */ - predicate isParameterDefinition(Parameter p) { + deprecated predicate isParameterDefinition(Parameter p) { this.getSourceVariable() = TLocalVar(p.getCallable(), p) and p.getCallable().getBody().getControlFlowNode() = this.getCfgNode() } } -/** An SSA phi node. */ -class SsaPhiNode extends SsaVariable instanceof PhiNode { +/** + * DEPRECATED: Use `SsaPhiDefinition` instead. + * + * An SSA phi node. + */ +deprecated class SsaPhiNode extends SsaVariable instanceof PhiNode { override string toString() { result = "SSA phi(" + this.getSourceVariable() + ")" } - /** Gets an input to the phi node defining the SSA variable. */ - SsaVariable getAPhiInput() { this.hasInputFromBlock(result, _) } + /** + * DEPRECATED: Use `getAnInput()` instead. + * + * Gets an input to the phi node defining the SSA variable. + */ + deprecated SsaVariable getAPhiInput() { this.hasInputFromBlock(result, _) } /** Gets an input to the phi node defining the SSA variable. */ SsaVariable getAnInput() { this.hasInputFromBlock(result, _) } @@ -357,10 +464,10 @@ private class RefTypeCastingExpr extends CastingExpr { * * The `VarAccess` represents the access to `v` that `result` has the same value as. */ -Expr sameValue(SsaVariable v, VarAccess va) { - result = v.getAUse() and result = va +Expr sameValue(SsaDefinition v, VarAccess va) { + result = v.getARead() and result = va or - result.(AssignExpr).getDest() = va and result = v.(SsaExplicitUpdate).getDefiningExpr() + result.(AssignExpr).getDest() = va and result = v.(SsaExplicitWrite).getDefiningExpr() or result.(AssignExpr).getSource() = sameValue(v, va) or diff --git a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll index 8ce9b1b91202..21cfc54fdf8a 100644 --- a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll @@ -12,7 +12,7 @@ module; import java as J private import semmle.code.java.dispatch.VirtualDispatch -private import semmle.code.java.dataflow.internal.BaseSSA +private import semmle.code.java.dataflow.internal.BaseSSA as Base private import semmle.code.java.controlflow.Guards private import codeql.typeflow.TypeFlow private import codeql.typeflow.UniversalFlow as UniversalFlow @@ -27,7 +27,7 @@ private RefType boxIfNeeded(J::Type t) { module FlowStepsInput implements UniversalFlow::UniversalFlowInput { private newtype TFlowNode = TField(Field f) { not f.getType() instanceof PrimitiveType } or - TSsa(BaseSsaVariable ssa) { not ssa.getSourceVariable().getType() instanceof PrimitiveType } or + TSsa(Base::SsaDefinition ssa) { not ssa.getSourceVariable().getType() instanceof PrimitiveType } or TExpr(Expr e) or TMethod(Method m) { not m.getReturnType() instanceof PrimitiveType } @@ -55,7 +55,7 @@ module FlowStepsInput implements UniversalFlow::UniversalFlowInput { Field asField() { this = TField(result) } /** Gets the SSA variable corresponding to this node, if any. */ - BaseSsaVariable asSsa() { this = TSsa(result) } + Base::SsaDefinition asSsa() { this = TSsa(result) } /** Gets the expression corresponding to this node, if any. */ Expr asExpr() { this = TExpr(result) } @@ -107,7 +107,7 @@ module FlowStepsInput implements UniversalFlow::UniversalFlowInput { not e.(FieldAccess).getField() = f ) or - n2.asSsa().(BaseSsaPhiNode).getAnUltimateLocalDefinition() = n1.asSsa() + n2.asSsa().(Base::SsaPhiDefinition).getAnUltimateDefinition() = n1.asSsa() or exists(ReturnStmt ret | n2.asMethod() = ret.getEnclosingCallable() and ret.getResult() = n1.asExpr() @@ -118,14 +118,14 @@ module FlowStepsInput implements UniversalFlow::UniversalFlowInput { exists(Argument arg, Parameter p | privateParamArg(p, arg) and n1.asExpr() = arg and - n2.asSsa().(BaseSsaImplicitInit).isParameterDefinition(p) and + n2.asSsa().(Base::SsaParameterInit).getParameter() = p and // skip trivial recursion - not arg = n2.asSsa().getAUse() + not arg = n2.asSsa().getARead() ) or n2.asExpr() = n1.asField().getAnAccess() or - n2.asExpr() = n1.asSsa().getAUse() + n2.asExpr() = n1.asSsa().getARead() or n2.asExpr().(CastingExpr).getExpr() = n1.asExpr() and not n2.asExpr().getType() instanceof PrimitiveType @@ -133,9 +133,9 @@ module FlowStepsInput implements UniversalFlow::UniversalFlowInput { n2.asExpr().(AssignExpr).getSource() = n1.asExpr() and not n2.asExpr().getType() instanceof PrimitiveType or - n2.asSsa().(BaseSsaUpdate).getDefiningExpr().(VariableAssign).getSource() = n1.asExpr() + n2.asSsa().(Base::SsaExplicitWrite).getDefiningExpr().(VariableAssign).getSource() = n1.asExpr() or - n2.asSsa().(BaseSsaImplicitInit).captures(n1.asSsa()) + n2.asSsa().(Base::SsaCapturedDefinition).captures(n1.asSsa()) or n2.asExpr().(NotNullExpr).getExpr() = n1.asExpr() } @@ -147,7 +147,7 @@ module FlowStepsInput implements UniversalFlow::UniversalFlowInput { n.asExpr() instanceof NullLiteral or exists(LocalVariableDeclExpr decl | - n.asSsa().(BaseSsaUpdate).getDefiningExpr() = decl and + n.asSsa().(Base::SsaExplicitWrite).getDefiningExpr() = decl and not decl.hasImplicitInit() and not exists(decl.getInitOrPatternSource()) ) @@ -216,7 +216,9 @@ private module Input implements TypeFlowInput { ) } - private predicate upcastEnhancedForStmtAux(BaseSsaUpdate v, RefType t, RefType t1, RefType t2) { + private predicate upcastEnhancedForStmtAux( + Base::SsaExplicitWrite v, RefType t, RefType t1, RefType t2 + ) { exists(EnhancedForStmt for | for.getVariable() = v.getDefiningExpr() and v.getSourceVariable().getType().getErasure() = t2 and @@ -230,7 +232,7 @@ private module Input implements TypeFlowInput { * the type of the elements being iterated over, and this type is more precise * than the type of `v`. */ - private predicate upcastEnhancedForStmt(BaseSsaUpdate v, RefType t) { + private predicate upcastEnhancedForStmt(Base::SsaExplicitWrite v, RefType t) { exists(RefType t1, RefType t2 | upcastEnhancedForStmtAux(v, t, t1, t2) and t1.getASourceSupertype+() = t2 @@ -238,9 +240,9 @@ private module Input implements TypeFlowInput { } private predicate downcastSuccessorAux( - CastingExpr cast, BaseSsaVariable v, RefType t, RefType t1, RefType t2 + CastingExpr cast, Base::SsaDefinition v, RefType t, RefType t1, RefType t2 ) { - cast.getExpr() = v.getAUse() and + cast.getExpr() = v.getARead() and t = cast.getType() and t1 = t.getErasure() and t2 = v.getSourceVariable().getType().getErasure() @@ -250,10 +252,10 @@ private module Input implements TypeFlowInput { * Holds if `va` is an access to a value that has previously been downcast to `t`. */ private predicate downcastSuccessor(VarAccess va, RefType t) { - exists(CastingExpr cast, BaseSsaVariable v, RefType t1, RefType t2 | + exists(CastingExpr cast, Base::SsaDefinition v, RefType t1, RefType t2 | downcastSuccessorAux(pragma[only_bind_into](cast), v, t, t1, t2) and t1.getASourceSupertype+() = t2 and - va = v.getAUse() and + va = v.getARead() and dominates(cast.getControlFlowNode(), va.getControlFlowNode()) and dominates(cast.getControlFlowNode().getANormalSuccessor(), va.getControlFlowNode()) ) @@ -263,9 +265,9 @@ private module Input implements TypeFlowInput { * Holds if `va` is an access to a value that is guarded by `instanceof t` or `case e t`. */ private predicate typeTestGuarded(VarAccess va, RefType t) { - exists(Guard typeTest, BaseSsaVariable v | - typeTest.appliesTypeTest(v.getAUse(), t, _) and - va = v.getAUse() and + exists(Guard typeTest, Base::SsaDefinition v | + typeTest.appliesTypeTest(v.getARead(), t, _) and + va = v.getARead() and guardControls_v1(typeTest, va.getBasicBlock(), true) ) } @@ -274,12 +276,12 @@ private module Input implements TypeFlowInput { * Holds if `aa` is an access to a value that is guarded by `instanceof t` or `case e t`. */ private predicate arrayTypeTestGuarded(ArrayAccess aa, RefType t) { - exists(Guard typeTest, BaseSsaVariable v1, BaseSsaVariable v2, ArrayAccess aa1 | + exists(Guard typeTest, Base::SsaDefinition v1, Base::SsaDefinition v2, ArrayAccess aa1 | typeTest.appliesTypeTest(aa1, t, _) and - aa1.getArray() = v1.getAUse() and - aa1.getIndexExpr() = v2.getAUse() and - aa.getArray() = v1.getAUse() and - aa.getIndexExpr() = v2.getAUse() and + aa1.getArray() = v1.getARead() and + aa1.getIndexExpr() = v2.getARead() and + aa.getArray() = v1.getARead() and + aa.getIndexExpr() = v2.getARead() and guardControls_v1(typeTest, aa.getBasicBlock(), true) ) } @@ -321,14 +323,14 @@ private module Input implements TypeFlowInput { * Holds if `ioe` checks `v`, its true-successor is `bb`, and `bb` has multiple * predecessors. */ - private predicate instanceofDisjunct(InstanceOfExpr ioe, BasicBlock bb, BaseSsaVariable v) { - ioe.getExpr() = v.getAUse() and + private predicate instanceofDisjunct(InstanceOfExpr ioe, BasicBlock bb, Base::SsaDefinition v) { + ioe.getExpr() = v.getARead() and strictcount(bb.getAPredecessor()) > 1 and exists(ConditionBlock cb | cb.getCondition() = ioe and cb.getTestSuccessor(true) = bb) } /** Holds if `bb` is disjunctively guarded by multiple `instanceof` tests on `v`. */ - private predicate instanceofDisjunction(BasicBlock bb, BaseSsaVariable v) { + private predicate instanceofDisjunction(BasicBlock bb, Base::SsaDefinition v) { strictcount(InstanceOfExpr ioe | instanceofDisjunct(ioe, bb, v)) = strictcount(bb.getAPredecessor()) } @@ -338,10 +340,10 @@ private module Input implements TypeFlowInput { * `instanceof t_i` where `t` is one of those `t_i`. */ predicate instanceofDisjunctionGuarded(TypeFlowNode n, RefType t) { - exists(BasicBlock bb, InstanceOfExpr ioe, BaseSsaVariable v, VarAccess va | + exists(BasicBlock bb, InstanceOfExpr ioe, Base::SsaDefinition v, VarAccess va | instanceofDisjunction(bb, v) and bb.dominates(va.getBasicBlock()) and - va = v.getAUse() and + va = v.getARead() and instanceofDisjunct(ioe, bb, v) and t = ioe.getSyntacticCheckedType() and n.asExpr() = va diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll index 5a818d18b850..e373340d7d7c 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll @@ -25,7 +25,8 @@ private module BaseSsaStage { predicate backref() { (exists(TLocalVar(_, _)) implies any()) and (exists(any(BaseSsaSourceVariable v).getAnAccess()) implies any()) and - (exists(getAUse(_)) implies any()) + (exists(any(SsaDefinition def).getARead()) implies any()) and + (captures(_, _) implies any()) } } @@ -157,7 +158,7 @@ private module BaseSsaImpl { private import BaseSsaImpl -private module SsaInput implements SsaImplCommon::InputSig { +private module SsaImplInput implements SsaImplCommon::InputSig { class SourceVariable = BaseSsaSourceVariable; /** @@ -169,7 +170,7 @@ private module SsaInput implements SsaImplCommon::InputSig certain = true or hasEntryDef(v, bb) and - i = 0 and + i = -1 and certain = true } @@ -189,67 +190,46 @@ private module SsaInput implements SsaImplCommon::InputSig } } -private module Impl = SsaImplCommon::Make; +private module Impl = SsaImplCommon::Make; -private import Cached +private module SsaInput implements Impl::SsaInputSig { + private import java as J -cached -private module Cached { - cached - VarRead getAUse(Impl::Definition def) { - BaseSsaStage::ref() and - exists(BaseSsaSourceVariable v, BasicBlock bb, int i | - Impl::ssaDefReachesRead(v, def, bb, i) and - result.getControlFlowNode() = bb.getNode(i) and - result = v.getAnAccess() - ) - } + class Expr = J::Expr; - cached - predicate ssaDefReachesEndOfBlock(BasicBlock bb, Impl::Definition def) { - Impl::ssaDefReachesEndOfBlock(bb, def, _) - } + class Parameter = J::Parameter; - cached - predicate firstUse(Impl::Definition def, VarRead use) { - exists(BasicBlock bb, int i | - Impl::firstUse(def, bb, i, _) and - use.getControlFlowNode() = bb.getNode(i) - ) - } + class VariableWrite = J::VariableWrite; - cached - predicate ssaUpdate(Impl::Definition def, VariableUpdate upd) { - exists(BaseSsaSourceVariable v, BasicBlock bb, int i | - def.definesAt(v, bb, i) and - variableUpdate(v, upd.getControlFlowNode(), bb, i) and - getDestVar(upd) = v + predicate explicitWrite(VariableWrite w, BasicBlock bb, int i, BaseSsaSourceVariable v) { + variableUpdate(v, w.asExpr().getControlFlowNode(), bb, i) + or + exists(Parameter p, Callable c | + c = p.getCallable() and + v = TLocalVar(c, p) and + w.isParameterInit(p) and + c.getBody().getBasicBlock() = bb and + i = -1 ) } +} - cached - predicate ssaImplicitInit(Impl::WriteDefinition def) { - exists(BaseSsaSourceVariable v, BasicBlock bb, int i | - def.definesAt(v, bb, i) and - hasEntryDef(v, bb) and - i = 0 - ) - } +module Ssa = Impl::MakeSsa; + +import Ssa +private import Cached +cached +private module Cached { /** Holds if `init` is a closure variable that captures the value of `capturedvar`. */ cached - predicate captures(BaseSsaImplicitInit init, BaseSsaVariable capturedvar) { + predicate captures(SsaImplicitEntryDefinition init, SsaDefinition capturedvar) { exists(BasicBlock bb, int i | - Impl::ssaDefReachesRead(_, capturedvar, bb, i) and + Ssa::ssaDefReachesUncertainRead(_, capturedvar, bb, i) and variableCapture(capturedvar.getSourceVariable(), init.getSourceVariable(), bb, i) ) } - cached - predicate phiHasInputFromBlock(Impl::PhiNode phi, Impl::Definition inp, BasicBlock bb) { - Impl::phiHasInputFromBlock(phi, inp, bb) - } - cached module SsaPublic { /** @@ -285,36 +265,73 @@ private module Cached { import SsaPublic +/** An SSA definition in a closure that captures a variable. */ +class SsaCapturedDefinition extends SsaImplicitEntryDefinition { + SsaCapturedDefinition() { captures(this, _) } + + override string toString() { result = "SSA capture def(" + this.getSourceVariable() + ")" } + + /** Holds if this definition captures the value of `capturedvar`. */ + predicate captures(SsaDefinition capturedvar) { captures(this, capturedvar) } + + /** + * Gets a definition that ultimately defines the captured variable and is not itself a phi node. + */ + SsaDefinition getAnUltimateCapturedDefinition() { + exists(SsaDefinition capturedvar | + captures(this, capturedvar) and result = capturedvar.getAnUltimateDefinition() + ) + } +} + +deprecated private predicate ssaUpdate(Impl::Definition def, VariableUpdate upd) { + exists(BaseSsaSourceVariable v, BasicBlock bb, int i | + def.definesAt(v, bb, i) and + variableUpdate(v, upd.getControlFlowNode(), bb, i) and + getDestVar(upd) = v + ) +} + +deprecated private predicate ssaImplicitInit(Impl::WriteDefinition def) { + exists(BaseSsaSourceVariable v, BasicBlock bb, int i | + def.definesAt(v, bb, i) and + hasEntryDef(v, bb) and + i = -1 + ) +} + /** + * DEPRECATED: Use `SsaDefinition` instead. + * * An SSA variable. */ -class BaseSsaVariable extends Impl::Definition { - /** Gets the `ControlFlowNode` at which this SSA variable is defined. */ - ControlFlowNode getCfgNode() { - exists(BasicBlock bb, int i | this.definesAt(_, bb, i) and result = bb.getNode(0.maximum(i))) - } - - /** Gets an access of this SSA variable. */ - VarRead getAUse() { result = getAUse(this) } +deprecated class BaseSsaVariable extends Impl::Definition { + /** + * DEPRECATED: Use `getControlFlowNode()` instead. + * + * Gets the `ControlFlowNode` at which this SSA variable is defined. + */ + deprecated ControlFlowNode getCfgNode() { result = this.(SsaDefinition).getControlFlowNode() } /** - * Gets an access of the SSA source variable underlying this SSA variable - * that can be reached from this SSA variable without passing through any - * other uses, but potentially through phi nodes. + * DEPRECATED: Use `getARead()` instead. * - * Subsequent uses can be found by following the steps defined by - * `baseSsaAdjacentUseUse`. + * Gets an access of this SSA variable. */ - VarRead getAFirstUse() { firstUse(this, result) } + deprecated VarRead getAUse() { result = this.(SsaDefinition).getARead() } /** Holds if this SSA variable is live at the end of `b`. */ - predicate isLiveAtEndOfBlock(BasicBlock b) { ssaDefReachesEndOfBlock(b, this) } + predicate isLiveAtEndOfBlock(BasicBlock b) { this.(SsaDefinition).isLiveAtEndOfBlock(b) } /** Gets an input to the phi node defining the SSA variable. */ - private BaseSsaVariable getAPhiInput() { result = this.(BaseSsaPhiNode).getAPhiInput() } + private BaseSsaVariable getAPhiInput() { result = this.(BaseSsaPhiNode).getAnInput() } - /** Gets a definition in the same callable that ultimately defines this variable and is not itself a phi node. */ - BaseSsaVariable getAnUltimateLocalDefinition() { + /** + * DEPRECATED: Use `SsaDefinition::getAnUltimateDefinition()` instead. + * + * Gets a definition in the same callable that ultimately defines this variable and is not itself a phi node. + */ + deprecated BaseSsaVariable getAnUltimateLocalDefinition() { result = this.getAPhiInput*() and not result instanceof BaseSsaPhiNode } @@ -324,18 +341,27 @@ class BaseSsaVariable extends Impl::Definition { * variable. */ private BaseSsaVariable getAPhiInputOrCapturedVar() { - result = this.(BaseSsaPhiNode).getAPhiInput() or + result = this.(BaseSsaPhiNode).getAnInput() or this.(BaseSsaImplicitInit).captures(result) } - /** Gets a definition that ultimately defines this variable and is not itself a phi node. */ - BaseSsaVariable getAnUltimateDefinition() { + /** + * DEPRECATED: Use `SsaCapturedDefinition::getAnUltimateCapturedDefinition()` + * and/or `SsaDefinition::getAnUltimateDefinition()` instead. + * + * Gets a definition that ultimately defines this variable and is not itself a phi node. + */ + deprecated BaseSsaVariable getAnUltimateDefinition() { result = this.getAPhiInputOrCapturedVar*() and not result instanceof BaseSsaPhiNode } } -/** An SSA variable that is defined by a `VariableUpdate`. */ -class BaseSsaUpdate extends BaseSsaVariable instanceof Impl::WriteDefinition { +/** + * DEPRECATED: Use `SsaExplicitWrite` instead. + * + * An SSA variable that is defined by a `VariableUpdate`. + */ +deprecated class BaseSsaUpdate extends BaseSsaVariable instanceof Impl::WriteDefinition { BaseSsaUpdate() { ssaUpdate(this, _) } /** Gets the `VariableUpdate` defining the SSA variable. */ @@ -343,34 +369,46 @@ class BaseSsaUpdate extends BaseSsaVariable instanceof Impl::WriteDefinition { } /** + * DEPRECATED: Use `SsaParameterInit` or `SsaCapturedDefinition` instead. + * * An SSA variable that is defined by its initial value in the callable. This * includes initial values of parameters, fields, and closure variables. */ -class BaseSsaImplicitInit extends BaseSsaVariable instanceof Impl::WriteDefinition { +deprecated class BaseSsaImplicitInit extends BaseSsaVariable instanceof Impl::WriteDefinition { BaseSsaImplicitInit() { ssaImplicitInit(this) } /** Holds if this is a closure variable that captures the value of `capturedvar`. */ predicate captures(BaseSsaVariable capturedvar) { captures(this, capturedvar) } /** + * DEPRECATED: Use `SsaParameterInit::getParameter()` instead. + * * Holds if the SSA variable is a parameter defined by its initial value in the callable. */ - predicate isParameterDefinition(Parameter p) { + deprecated predicate isParameterDefinition(Parameter p) { this.getSourceVariable() = TLocalVar(p.getCallable(), p) and p.getCallable().getBody().getControlFlowNode() = this.getCfgNode() } } -/** An SSA phi node. */ -class BaseSsaPhiNode extends BaseSsaVariable instanceof Impl::PhiNode { - /** Gets an input to the phi node defining the SSA variable. */ - BaseSsaVariable getAPhiInput() { this.hasInputFromBlock(result, _) } +/** + * DEPRECATED: Use `SsaPhiDefinition` instead. + * + * An SSA phi node. + */ +deprecated class BaseSsaPhiNode extends BaseSsaVariable instanceof Impl::PhiNode { + /** + * DEPRECATED: Use `getAnInput()` instead. + * + * Gets an input to the phi node defining the SSA variable. + */ + deprecated BaseSsaVariable getAPhiInput() { this.hasInputFromBlock(result, _) } /** Gets an input to the phi node defining the SSA variable. */ BaseSsaVariable getAnInput() { this.hasInputFromBlock(result, _) } /** Holds if `inp` is an input to the phi node along the edge originating in `bb`. */ predicate hasInputFromBlock(BaseSsaVariable inp, BasicBlock bb) { - phiHasInputFromBlock(this, inp, bb) + this.(SsaPhiDefinition).hasInputFromBlock(inp, bb) } } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll b/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll index 5af246424772..1e6156aaa6f6 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll @@ -460,12 +460,12 @@ predicate arrayStoreStep(Node node1, Node node2) { } private predicate enhancedForStmtStep(Node node1, Node node2, Type containerType) { - exists(EnhancedForStmt for, Expr e, SsaExplicitUpdate v | + exists(EnhancedForStmt for, Expr e, SsaExplicitWrite v | for.getExpr() = e and node1.asExpr() = e and containerType = e.getType() and v.getDefiningExpr() = for.getVariable() and - v.getAFirstUse() = node2.asExpr() + ssaGetAFirstUse(v) = node2.asExpr() ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll index 674c2380a5f5..9786286389c8 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll @@ -29,7 +29,7 @@ private predicate deadcode(Expr e) { module SsaFlow { module Impl = SsaImpl::DataFlowIntegration; - private predicate ssaDefAssigns(SsaExplicitUpdate def, Expr value) { + private predicate ssaDefAssigns(SsaExplicitWrite def, Expr value) { exists(VariableUpdate upd | upd = def.getDefiningExpr() | value = upd.(VariableAssign).getSource() or value = upd.(AssignOp) or @@ -46,7 +46,7 @@ module SsaFlow { or exists(Parameter p | n = TExplicitParameterNode(p) and - result.(Impl::WriteDefSourceNode).getDefinition().(SsaImplicitInit).isParameterDefinition(p) + result.(Impl::WriteDefSourceNode).getDefinition().(SsaParameterInit).getParameter() = p ) or ssaDefAssigns(result.(Impl::WriteDefSourceNode).getDefinition(), n.asExpr()) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll index 1721569e45a9..3dcdc1887614 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll @@ -62,10 +62,10 @@ private predicate fieldStep(Node node1, Node node2) { private predicate closureFlowStep(Expr e1, Expr e2) { simpleAstFlowStep(e1, e2) or - exists(SsaVariable v | - v.getAUse() = e2 and - v.getAnUltimateDefinition().(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() = - e1 + exists(SsaDefinition v, SsaExplicitWrite def | v.getARead() = e2 and def.getValue() = e1 | + v.getAnUltimateDefinition() = def + or + v.(SsaCapturedDefinition).getAnUltimateCapturedDefinition() = def ) } @@ -395,13 +395,13 @@ class CastNode extends ExprNode { CastNode() { this.getExpr() instanceof CastingExpr or - exists(SsaExplicitUpdate upd | + exists(SsaExplicitWrite upd | upd.getDefiningExpr().(VariableAssign).getSource() = [ any(SwitchStmt ss).getExpr(), any(SwitchExpr se).getExpr(), any(InstanceOfExpr ioe).getExpr() ] and - this.asExpr() = upd.getAFirstUse() + this.asExpr() = ssaGetAFirstUse(upd) ) } } @@ -531,9 +531,9 @@ class NodeRegion instanceof BasicBlock { private predicate constantBooleanExpr(Expr e, boolean val) { e.(CompileTimeConstantExpr).getBooleanValue() = val or - exists(SsaExplicitUpdate v, Expr src | - e = v.getAUse() and - src = v.getDefiningExpr().(VariableAssign).getSource() and + exists(SsaExplicitWrite v, Expr src | + e = v.getARead() and + src = v.getValue() and constantBooleanExpr(src, val) ) } @@ -551,15 +551,15 @@ private class ConstantBooleanArgumentNode extends ArgumentNode, ExprNode { */ predicate isUnreachableInCall(NodeRegion nr, DataFlowCall call) { exists( - ExplicitParameterNode paramNode, ConstantBooleanArgumentNode arg, SsaImplicitInit param, + ExplicitParameterNode paramNode, ConstantBooleanArgumentNode arg, SsaParameterInit param, Guard guard | // get constant bool argument and parameter for this call viableParamArg(call, pragma[only_bind_into](paramNode), arg) and // get the ssa variable definition for this parameter - param.isParameterDefinition(paramNode.getParameter()) and + param.getParameter() = paramNode.getParameter() and // which is used in a guard - param.getAUse() = guard and + param.getARead() = guard and // which controls `n` with the opposite value of `arg` guard .controls(nr, diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll index 23e9f680c974..00e7d15ee8b8 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll @@ -99,11 +99,12 @@ predicate localExprFlow(Expr e1, Expr e2) { localFlow(exprNode(e1), exprNode(e2) * updates. */ predicate hasNonlocalValue(FieldRead fr) { - not exists(SsaVariable v | v.getAUse() = fr) + not exists(SsaDefinition v | v.getARead() = fr) or - exists(SsaVariable v, SsaVariable def | v.getAUse() = fr and def = v.getAnUltimateDefinition() | - def instanceof SsaImplicitInit or - def instanceof SsaImplicitUpdate + exists(SsaDefinition v, SsaDefinition def | + v.getARead() = fr and + def = v.getAnUltimateDefinition() and + def instanceof SsaImplicitWrite ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll index 275a0afafc08..624f82fd341d 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll @@ -82,13 +82,6 @@ private module TrackedVariablesImpl { private import TrackedVariablesImpl -private predicate untrackedFieldWrite(BasicBlock bb, int i, SsaSourceVariable v) { - v = - any(SsaSourceField nf | - bb.getNode(i + 1) = nf.getAnAccess().(FieldRead).getControlFlowNode() and not trackField(nf) - ) -} - /** Gets the definition point of a nested class in the parent scope. */ private ControlFlowNode parentDef(NestedClass nc) { nc.(AnonymousClass).getClassInstanceExpr().getControlFlowNode() = result or @@ -171,7 +164,7 @@ private predicate uncertainVariableUpdateImpl(TrackedVar v, ControlFlowNode n, B predicate uncertainVariableUpdate(TrackedVar v, ControlFlowNode n, BasicBlock b, int i) = forceLocal(uncertainVariableUpdateImpl/4)(v, n, b, i) -private module SsaInput implements SsaImplCommon::InputSig { +private module SsaImplInput implements SsaImplCommon::InputSig { class SourceVariable = SsaSourceVariable; /** @@ -184,11 +177,8 @@ private module SsaInput implements SsaImplCommon::InputSig certainVariableUpdate(v, _, bb, i) and certain = true or - untrackedFieldWrite(bb, i, v) and - certain = true - or hasEntryDef(v, bb) and - i = 0 and + i = -1 and certain = true or uncertainVariableUpdate(v, _, bb, i) and @@ -204,7 +194,10 @@ private module SsaInput implements SsaImplCommon::InputSig hasDominanceInformation(bb) and ( exists(VarRead use | - v.getAnAccess() = use and bb.getNode(i) = use.getControlFlowNode() and certain = true + v instanceof TrackedVar and + v.getAnAccess() = use and + bb.getNode(i) = use.getControlFlowNode() and + certain = true ) or variableCapture(v, _, bb, i) and @@ -213,7 +206,35 @@ private module SsaInput implements SsaImplCommon::InputSig } } -import SsaImplCommon::Make as Impl +import SsaImplCommon::Make as Impl + +private module SsaInput implements Impl::SsaInputSig { + private import java as J + + class Expr = J::Expr; + + class Parameter = J::Parameter; + + class VariableWrite = J::VariableWrite; + + predicate explicitWrite(VariableWrite w, BasicBlock bb, int i, SsaSourceVariable v) { + exists(VariableUpdate upd | + upd = w.asExpr() and + certainVariableUpdate(v, upd.getControlFlowNode(), bb, i) and + getDestVar(upd) = v + ) + or + exists(Parameter p, Callable c | + c = p.getCallable() and + v = TLocalVar(c, p) and + w.isParameterInit(p) and + c.getBody().getBasicBlock() = bb and + i = -1 + ) + } +} + +module Ssa = Impl::MakeSsa; final class Definition = Impl::Definition; @@ -223,14 +244,51 @@ final class UncertainWriteDefinition = Impl::UncertainWriteDefinition; final class PhiNode = Impl::PhiNode; -class UntrackedDef extends Definition { - private VarRead read; +deprecated predicate ssaExplicitUpdate(SsaUpdate def, VariableUpdate upd) { + exists(SsaSourceVariable v, BasicBlock bb, int i | + def.definesAt(v, bb, i) and + certainVariableUpdate(v, upd.getControlFlowNode(), bb, i) and + getDestVar(upd) = def.getSourceVariable() + ) +} - UntrackedDef() { ssaUntrackedDef(this, read) } +deprecated predicate ssaUncertainImplicitUpdate(SsaImplicitUpdate def) { + exists(SsaSourceVariable v, BasicBlock bb, int i | + def.definesAt(v, bb, i) and + uncertainVariableUpdate(v, _, bb, i) + ) +} + +deprecated predicate ssaImplicitInit(WriteDefinition def) { + exists(SsaSourceVariable v, BasicBlock bb, int i | + def.definesAt(v, bb, i) and + hasEntryDef(v, bb) and + i = -1 + ) +} - string toString() { result = read.toString() } +/** + * Holds if the SSA definition of `v` at `def` reaches `redef` without crossing another + * SSA definition of `v`. + */ +deprecated predicate ssaDefReachesUncertainDef(TrackedSsaDef def, SsaUncertainImplicitUpdate redef) { + Impl::uncertainWriteDefinitionInput(redef, def) +} + +deprecated VarRead getAUse(Definition def) { + exists(SsaSourceVariable v, BasicBlock bb, int i | + Impl::ssaDefReachesRead(v, def, bb, i) and + result.getControlFlowNode() = bb.getNode(i) and + result = v.getAnAccess() + ) +} + +deprecated predicate ssaDefReachesEndOfBlock(BasicBlock bb, Definition def) { + Impl::ssaDefReachesEndOfBlock(bb, def, _) +} - Location getLocation() { result = read.getLocation() } +deprecated predicate phiHasInputFromBlock(PhiNode phi, Definition inp, BasicBlock bb) { + Impl::phiHasInputFromBlock(phi, inp, bb) } cached @@ -247,24 +305,6 @@ private module Cached { result.getAnAccess() = upd.(UnaryAssignExpr).getExpr() } - cached - predicate ssaExplicitUpdate(SsaUpdate def, VariableUpdate upd) { - exists(SsaSourceVariable v, BasicBlock bb, int i | - def.definesAt(v, bb, i) and - certainVariableUpdate(v, upd.getControlFlowNode(), bb, i) and - getDestVar(upd) = def.getSourceVariable() - ) - } - - cached - predicate ssaUntrackedDef(Definition def, VarRead read) { - exists(SsaSourceVariable v, BasicBlock bb, int i | - def.definesAt(v, bb, i) and - untrackedFieldWrite(bb, i, v) and - read.getControlFlowNode() = bb.getNode(i + 1) - ) - } - /* * The SSA construction for a field `f` relies on implicit update nodes at * every call site that conceivably could reach an update of the field. @@ -484,46 +524,20 @@ private module Cached { overlay[global] cached - predicate defUpdatesNamedField(SsaImplicitUpdate def, TrackedField f, Callable setter) { - f = def.getSourceVariable() and - updatesNamedField0(def.getCfgNode().asCall(), f, setter) - } - - cached - predicate ssaUncertainImplicitUpdate(SsaImplicitUpdate def) { - exists(SsaSourceVariable v, BasicBlock bb, int i | - def.definesAt(v, bb, i) and - uncertainVariableUpdate(v, _, bb, i) - ) - } - - cached - predicate ssaImplicitInit(WriteDefinition def) { - exists(SsaSourceVariable v, BasicBlock bb, int i | - def.definesAt(v, bb, i) and - hasEntryDef(v, bb) and - i = 0 - ) + predicate defUpdatesNamedField(SsaImplicitWrite calldef, TrackedField f, Callable setter) { + f = calldef.getSourceVariable() and + updatesNamedField0(calldef.getControlFlowNode().asCall(), f, setter) } /** Holds if `init` is a closure variable that captures the value of `capturedvar`. */ cached - predicate captures(SsaImplicitInit init, SsaVariable capturedvar) { + predicate captures(SsaImplicitEntryDefinition init, SsaDefinition capturedvar) { exists(BasicBlock bb, int i | - Impl::ssaDefReachesRead(_, capturedvar, bb, i) and + Ssa::ssaDefReachesUncertainRead(_, capturedvar, bb, i) and variableCapture(capturedvar.getSourceVariable(), init.getSourceVariable(), bb, i) ) } - /** - * Holds if the SSA definition of `v` at `def` reaches `redef` without crossing another - * SSA definition of `v`. - */ - cached - predicate ssaDefReachesUncertainDef(TrackedSsaDef def, SsaUncertainImplicitUpdate redef) { - Impl::uncertainWriteDefinitionInput(redef, def) - } - /** * Holds if the value defined at `def` can reach `use` without passing through * any other uses, but possibly through phi nodes and uncertain implicit updates. @@ -536,25 +550,6 @@ private module Cached { ) } - cached - VarRead getAUse(Definition def) { - exists(SsaSourceVariable v, BasicBlock bb, int i | - Impl::ssaDefReachesRead(v, def, bb, i) and - result.getControlFlowNode() = bb.getNode(i) and - result = v.getAnAccess() - ) - } - - cached - predicate ssaDefReachesEndOfBlock(BasicBlock bb, Definition def) { - Impl::ssaDefReachesEndOfBlock(bb, def, _) - } - - cached - predicate phiHasInputFromBlock(PhiNode phi, Definition inp, BasicBlock bb) { - Impl::phiHasInputFromBlock(phi, inp, bb) - } - cached module DataFlowIntegration { import DataFlowIntegrationImpl @@ -664,14 +659,12 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu } } - Expr getARead(Definition def) { result = getAUse(def) } + Expr getARead(Definition def) { result = def.(SsaDefinition).getARead() } - predicate ssaDefHasSource(WriteDefinition def) { - def instanceof SsaExplicitUpdate or def.(SsaImplicitInit).isParameterDefinition(_) - } + predicate ssaDefHasSource(WriteDefinition def) { def instanceof SsaExplicitWrite } predicate allowFlowIntoUncertainDef(UncertainWriteDefinition def) { - def instanceof SsaUncertainImplicitUpdate + def instanceof SsaUncertainWrite } class GuardValue = Guards::GuardValue; diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll index a1c690b7df4c..cd85883f7bc4 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll @@ -8,7 +8,10 @@ private import java as J private import semmle.code.java.dataflow.SSA as Ssa private import semmle.code.java.dataflow.RangeUtils as RU -class SsaVariable = Ssa::SsaVariable; +class SsaVariable extends Ssa::SsaDefinition { + /** Gets a use of this variable. */ + Expr getAUse() { result = super.getARead() } +} class Expr = J::Expr; diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll index e124b8f71378..e0968c9cf175 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll @@ -11,9 +11,11 @@ module Private { class BasicBlock = BB::BasicBlock; - class SsaVariable = Ssa::SsaVariable; + class SsaVariable extends Ssa::SsaDefinition { + Expr getAUse() { result = super.getARead() } + } - class SsaPhiNode = Ssa::SsaPhiNode; + class SsaPhiNode = Ssa::SsaPhiDefinition; class Expr = J::Expr; diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll index 6363b8f7ed35..4a4181604770 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll @@ -17,9 +17,9 @@ module Private { class Guard = G::Guards_v2::Guard; - class SsaVariable = Ssa::SsaVariable; + class SsaVariable = Ssa::SsaDefinition; - class SsaPhiNode = Ssa::SsaPhiNode; + class SsaPhiNode = Ssa::SsaPhiDefinition; class VarAccess = J::VarAccess; @@ -240,8 +240,8 @@ private module Impl { } /** Returns the underlying variable update of the explicit SSA variable `v`. */ - VariableUpdate getExplicitSsaAssignment(SsaVariable v) { - result = v.(SsaExplicitUpdate).getDefiningExpr() + VariableUpdate getExplicitSsaAssignment(SsaDefinition v) { + result = v.(SsaExplicitWrite).getDefiningExpr() } /** Returns the assignment of the variable update `def`. */ @@ -267,13 +267,12 @@ private module Impl { } /** Gets the variable underlying the implicit SSA variable `v`. */ - Variable getImplicitSsaDeclaration(SsaVariable v) { - result = v.(SsaImplicitUpdate).getSourceVariable().getVariable() or - result = v.(SsaImplicitInit).getSourceVariable().getVariable() + Variable getImplicitSsaDeclaration(SsaDefinition v) { + result = v.(SsaImplicitWrite).getSourceVariable().getVariable() } /** Holds if the variable underlying the implicit SSA variable `v` is not a field. */ - predicate nonFieldImplicitSsaDefinition(SsaImplicitInit v) { v.isParameterDefinition(_) } + predicate nonFieldImplicitSsaDefinition(SsaParameterInit v) { any() } /** Returned an expression that is assigned to `f`. */ Expr getAssignedValueToField(Field f) { @@ -324,7 +323,7 @@ private module Impl { result = e.(CastingExpr).getExpr() } - Expr getARead(SsaVariable v) { result = v.getAUse() } + Expr getARead(SsaDefinition v) { result = v.getARead() } Field getField(FieldAccess fa) { result = fa.getField() } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll index dbd7736acde4..f826f192dcaf 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll @@ -8,14 +8,14 @@ private import semmle.code.java.dataflow.SSA as Ssa private import semmle.code.java.controlflow.BasicBlocks as BB private import SsaReadPositionCommon -class SsaVariable = Ssa::SsaVariable; +class SsaVariable = Ssa::SsaDefinition; -class SsaPhiNode = Ssa::SsaPhiNode; +class SsaPhiNode = Ssa::SsaPhiDefinition; class BasicBlock = BB::BasicBlock; /** Gets a basic block in which SSA variable `v` is read. */ -BasicBlock getAReadBasicBlock(SsaVariable v) { result = v.getAUse().getBasicBlock() } +BasicBlock getAReadBasicBlock(SsaVariable v) { result = v.getARead().getBasicBlock() } private predicate id(BB::ExprParent x, BB::ExprParent y) { x = y } diff --git a/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll b/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll index bd293eed6b3a..2af5df281070 100644 --- a/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll +++ b/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll @@ -8,7 +8,7 @@ import java private import VirtualDispatch -private import semmle.code.java.dataflow.internal.BaseSSA +private import semmle.code.java.dataflow.internal.BaseSSA as Base private import semmle.code.java.dataflow.internal.DataFlowUtil as DataFlow private import semmle.code.java.dataflow.internal.DataFlowPrivate as DataFlowPrivate private import semmle.code.java.dataflow.InstanceAccess @@ -162,14 +162,28 @@ private module TypeTrackingSteps { storeContents = loadContents } + /** + * Holds if `n` is a read of an SSA variable that is ultimately defined by `def`. + * + * This includes reads of captured variables even though they are not technically + * local steps, but treating them as local is useful for type tracking purposes. + */ + private predicate readsSsa(Node n, Base::SsaDefinition def) { + exists(Base::SsaDefinition v | + v.getAnUltimateDefinition() = def or + v.(Base::SsaCapturedDefinition).getAnUltimateCapturedDefinition() = def + | + v.getARead() = n.asExpr() + ) + } + predicate simpleLocalSmallStep(Node n1, Node n2) { - exists(BaseSsaVariable v, BaseSsaVariable def | - def.(BaseSsaUpdate).getDefiningExpr().(VariableAssign).getSource() = n1.asExpr() + exists(Base::SsaDefinition def | + def.(Base::SsaExplicitWrite).getDefiningExpr().(VariableAssign).getSource() = n1.asExpr() or - def.(BaseSsaImplicitInit).isParameterDefinition(n1.asParameter()) + def.(Base::SsaParameterInit).getParameter() = n1.asParameter() | - v.getAnUltimateDefinition() = def and - v.getAUse() = n2.asExpr() + readsSsa(n2, def) ) or exists(Callable c | n1.(DataFlow::InstanceParameterNode).getCallable() = c | @@ -220,11 +234,10 @@ private module TypeTrackingSteps { n2.asExpr() = get ) or - exists(EnhancedForStmt for, BaseSsaVariable ssa, BaseSsaVariable def | - for.getVariable() = def.(BaseSsaUpdate).getDefiningExpr() and + exists(EnhancedForStmt for, Base::SsaDefinition def | + for.getVariable() = def.(Base::SsaExplicitWrite).getDefiningExpr() and for.getExpr() = v.getAnAccess() and - ssa.getAnUltimateDefinition() = def and - ssa.getAUse() = n2.asExpr() + readsSsa(n2, def) ) ) } @@ -259,16 +272,15 @@ private module TypeTrackingSteps { } predicate loadStep(Node n1, LocalSourceNode n2, Content f) { - exists(BaseSsaVariable v, BaseSsaVariable def | + exists(Base::SsaDefinition def | exists(EnhancedForStmt for | - for.getVariable() = def.(BaseSsaUpdate).getDefiningExpr() and + for.getVariable() = def.(Base::SsaExplicitWrite).getDefiningExpr() and for.getExpr() = n1.asExpr() and n1.getType() instanceof Array and f = ContentArray() ) | - v.getAnUltimateDefinition() = def and - v.getAUse() = n2.asExpr() + readsSsa(n2, def) ) or n2.asExpr().(ArrayAccess).getArray() = n1.asExpr() diff --git a/java/ql/lib/semmle/code/java/dispatch/ObjFlow.qll b/java/ql/lib/semmle/code/java/dispatch/ObjFlow.qll index a3da9118acc7..239f4dd0fbc1 100644 --- a/java/ql/lib/semmle/code/java/dispatch/ObjFlow.qll +++ b/java/ql/lib/semmle/code/java/dispatch/ObjFlow.qll @@ -10,7 +10,7 @@ import java private import VirtualDispatch private import semmle.code.java.controlflow.Guards -private import semmle.code.java.dataflow.internal.BaseSSA +private import semmle.code.java.dataflow.internal.BaseSSA as Base private import semmle.code.java.dataflow.internal.DataFlowUtil private import semmle.code.java.dataflow.internal.DataFlowPrivate private import semmle.code.java.dataflow.internal.ContainerFlow @@ -71,21 +71,24 @@ private predicate callFlowStep(Node n1, Node n2) { * flow, calls, returns, fields, array reads or writes, or container taint steps. */ private predicate step(Node n1, Node n2) { - exists(BaseSsaVariable v, BaseSsaVariable def | - def.(BaseSsaUpdate).getDefiningExpr().(VariableAssign).getSource() = n1.asExpr() + exists(Base::SsaDefinition v, Base::SsaDefinition def | + def.(Base::SsaExplicitWrite).getDefiningExpr().(VariableAssign).getSource() = n1.asExpr() or - def.(BaseSsaImplicitInit).isParameterDefinition(n1.asParameter()) + def.(Base::SsaParameterInit).getParameter() = n1.asParameter() or exists(EnhancedForStmt for | - for.getVariable() = def.(BaseSsaUpdate).getDefiningExpr() and + for.getVariable() = def.(Base::SsaExplicitWrite).getDefiningExpr() and for.getExpr() = n1.asExpr() ) | - v.getAnUltimateDefinition() = def and - v.getAUse() = n2.asExpr() + ( + v.(Base::SsaCapturedDefinition).getAnUltimateCapturedDefinition() = def or + v.getAnUltimateDefinition() = def + ) and + v.getARead() = n2.asExpr() ) or - baseSsaAdjacentUseUse(n1.asExpr(), n2.asExpr()) + Base::baseSsaAdjacentUseUse(n1.asExpr(), n2.asExpr()) or exists(Callable c | n1.(InstanceParameterNode).getCallable() = c | exists(InstanceAccess ia | diff --git a/java/ql/lib/semmle/code/java/dispatch/VirtualDispatch.qll b/java/ql/lib/semmle/code/java/dispatch/VirtualDispatch.qll index 78bf1ad0bdc1..0119930caf43 100644 --- a/java/ql/lib/semmle/code/java/dispatch/VirtualDispatch.qll +++ b/java/ql/lib/semmle/code/java/dispatch/VirtualDispatch.qll @@ -7,7 +7,7 @@ import java import semmle.code.java.dataflow.TypeFlow private import DispatchFlow as DispatchFlow private import ObjFlow as ObjFlow -private import semmle.code.java.dataflow.internal.BaseSSA +private import semmle.code.java.dataflow.internal.BaseSSA as Base private import semmle.code.java.controlflow.Guards private import semmle.code.java.dispatch.internal.Unification @@ -194,10 +194,10 @@ private module Dispatch { */ private predicate impossibleDispatchTarget(MethodCall source, Method tgt) { tgt = viableImpl_v1_cand(source) and - exists(Guard typeTest, BaseSsaVariable v, Expr q, RefType t | + exists(Guard typeTest, Base::SsaDefinition v, Expr q, RefType t | source.getQualifier() = q and - v.getAUse() = q and - typeTest.appliesTypeTest(v.getAUse(), t, false) and + v.getARead() = q and + typeTest.appliesTypeTest(v.getARead(), t, false) and guardControls_v1(typeTest, q.getBasicBlock(), false) and tgt.getDeclaringType().getSourceDeclaration().getASourceSupertype*() = t.getErasure() ) diff --git a/java/ql/lib/semmle/code/java/frameworks/InputStream.qll b/java/ql/lib/semmle/code/java/frameworks/InputStream.qll index f6097e8c4492..782d46df89d1 100644 --- a/java/ql/lib/semmle/code/java/frameworks/InputStream.qll +++ b/java/ql/lib/semmle/code/java/frameworks/InputStream.qll @@ -41,11 +41,13 @@ private class InputStreamWrapperCapturedJumpStep extends AdditionalTaintStep { */ private class InputStreamWrapperCapturedLocalStep extends AdditionalTaintStep { override predicate step(DataFlow::Node n1, DataFlow::Node n2) { - exists(InputStreamRead m, NestedClass wrapper, SsaVariable captured, SsaImplicitInit capturer | + exists( + InputStreamRead m, NestedClass wrapper, SsaDefinition captured, SsaCapturedDefinition capturer + | wrapper.getASourceSupertype+() instanceof TypeInputStream and m.getDeclaringType() = wrapper and capturer.captures(captured) and - TaintTracking::localTaint(DataFlow::exprNode(capturer.getAFirstUse()), + TaintTracking::localTaint(DataFlow::exprNode(ssaGetAFirstUse(capturer)), any(DataFlow::PostUpdateNode pun | pun.getPreUpdateNode().asExpr() = m.getParameter(0).getAnAccess() )) and @@ -55,9 +57,9 @@ private class InputStreamWrapperCapturedLocalStep extends AdditionalTaintStep { .getASourceSupertype*() .getSourceDeclaration() = wrapper | - n1.asExpr() = captured.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() + n1.asExpr() = captured.(SsaExplicitWrite).getDefiningExpr().(VariableAssign).getSource() or - captured.(SsaImplicitInit).isParameterDefinition(n1.asParameter()) + captured.(SsaParameterInit).getParameter() = n1.asParameter() ) } } diff --git a/java/ql/lib/semmle/code/java/frameworks/JAXB.qll b/java/ql/lib/semmle/code/java/frameworks/JAXB.qll index 96075bbccf3c..1283aa3d21e2 100644 --- a/java/ql/lib/semmle/code/java/frameworks/JAXB.qll +++ b/java/ql/lib/semmle/code/java/frameworks/JAXB.qll @@ -107,10 +107,7 @@ class XmlAccessType extends EnumConstant { */ class JaxbMemberAnnotation extends JaxbAnnotationType { JaxbMemberAnnotation() { - this.hasName("XmlElement") or - this.hasName("XmlAttribute") or - this.hasName("XmlElementRefs") or - this.hasName("XmlElements") + this.hasName(["XmlElement", "XmlAttribute", "XmlElementRefs", "XmlElements"]) } } diff --git a/java/ql/lib/semmle/code/java/frameworks/android/Intent.qll b/java/ql/lib/semmle/code/java/frameworks/android/Intent.qll index c3b58873d1f0..3df890c95f41 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/Intent.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/Intent.qll @@ -262,10 +262,10 @@ private predicate reaches(Expr src, Argument arg) { any(StartComponentMethodCall ma).getIntentArg() = arg and src = arg or - exists(Expr mid, BaseSsa::BaseSsaVariable ssa, BaseSsa::BaseSsaUpdate upd | + exists(Expr mid, BaseSsa::SsaDefinition ssa, BaseSsa::SsaExplicitWrite upd | reaches(mid, arg) and - mid = ssa.getAUse() and - upd = ssa.getAnUltimateLocalDefinition() and + mid = ssa.getARead() and + upd = ssa.getAnUltimateDefinition() and src = upd.getDefiningExpr().(VariableAssign).getSource() ) or diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJB.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJB.qll index d59976c0c6c8..a866d84df21d 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJB.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJB.qll @@ -677,7 +677,7 @@ Type inheritsMatchingMethodExceptThrows(SessionEjb ejb, Method m) { } /** - * Holds if `ejb` inherits an `ejbCreate` or `@Init` method matching `create` method `m`. + * Holds if `ejb` inherits an `ejbCreate` or `@Init` method matching `create` method `icm`. * (Ignores `throws` clauses.) */ predicate inheritsMatchingCreateMethodIgnoreThrows( @@ -704,7 +704,7 @@ predicate inheritsMatchingCreateMethodIgnoreThrows( } /** - * If `ejb` inherits an `ejbCreate` or `@Init` method matching `create` method `m` except for the `throws` clause, + * If `ejb` inherits an `ejbCreate` or `@Init` method matching `create` method `icm` except for the `throws` clause, * then return any type in the `throws` clause that does not match. */ Type inheritsMatchingCreateMethodExceptThrows(StatefulSessionEjb ejb, EjbInterfaceCreateMethod icm) { diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringController.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringController.qll index ee00433da129..a444dc96d5a4 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringController.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringController.qll @@ -187,13 +187,10 @@ class SpringServletInputAnnotation extends Annotation { a = this.getType() and a.getPackage().getName() = "org.springframework.web.bind.annotation" | - a.hasName("MatrixVariable") or - a.hasName("RequestParam") or - a.hasName("RequestHeader") or - a.hasName("CookieValue") or - a.hasName("RequestPart") or - a.hasName("PathVariable") or - a.hasName("RequestBody") + a.hasName([ + "MatrixVariable", "RequestParam", "RequestHeader", "CookieValue", "RequestPart", + "PathVariable", "RequestBody" + ]) ) } } diff --git a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsActions.qll b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsActions.qll index 641fb0c6e6f4..729268d4008a 100644 --- a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsActions.qll +++ b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsActions.qll @@ -40,12 +40,7 @@ class Struts2ActionClass extends Class { getStrutsMapperClass(this) = "org.apache.struts2.dispatcher.mapper.RestfulActionMapper" then // The "Restful" action mapper maps rest APIs to specific methods - result.hasName("index") or - result.hasName("create") or - result.hasName("editNew") or - result.hasName("view") or - result.hasName("remove") or - result.hasName("update") + result.hasName(["index", "create", "editNew", "view", "remove", "update"]) else if getStrutsMapperClass(this) = "org.apache.struts2.rest.RestActionMapper" or @@ -53,13 +48,7 @@ class Struts2ActionClass extends Class { then // The "Rest" action mapper is provided with the rest plugin, and maps rest APIs to specific // methods based on a "ruby-on-rails" style. - result.hasName("index") or - result.hasName("show") or - result.hasName("edit") or - result.hasName("editNew") or - result.hasName("create") or - result.hasName("update") or - result.hasName("destroy") + result.hasName(["index", "show", "edit", "editNew", "create", "update", "destroy"]) else if exists(getStrutsMapperClass(this)) then diff --git a/java/ql/lib/semmle/code/java/internal/OverlayXml.qll b/java/ql/lib/semmle/code/java/internal/OverlayXml.qll new file mode 100644 index 000000000000..95d49f2d6110 --- /dev/null +++ b/java/ql/lib/semmle/code/java/internal/OverlayXml.qll @@ -0,0 +1,46 @@ +overlay[local] +module; + +/** + * A local predicate that always holds for the overlay variant and never holds for the base variant. + * This is used to define local predicates that behave differently for the base and overlay variant. + */ +private predicate isOverlay() { databaseMetadata("isOverlay", "true") } + +private string getXmlFile(@xmllocatable locatable) { + exists(@location_default location, @file file | xmllocations(locatable, location) | + locations_default(location, file, _, _, _, _) and + files(file, result) + ) +} + +private string getXmlFileInBase(@xmllocatable locatable) { + not isOverlay() and + result = getXmlFile(locatable) +} + +/** + * Holds if the given `file` was extracted as part of the overlay and was extracted by the HTML/XML + * extractor. + */ +private predicate overlayXmlExtracted(string file) { + isOverlay() and + exists(@xmllocatable locatable | + not files(locatable, _) and not xmlNs(locatable, _, _, _) and file = getXmlFile(locatable) + ) +} + +/** + * Holds if the given XML `locatable` should be discarded, because it is part of the overlay base + * and is in a file that was also extracted as part of the overlay database. + */ +overlay[discard_entity] +private predicate discardXmlLocatable(@xmllocatable locatable) { + exists(string file | file = getXmlFileInBase(locatable) | + overlayChangedFiles(file) + or + // The HTML/XML extractor is currently not incremental and may extract more files than those + // included in overlayChangedFiles. + overlayXmlExtracted(file) + ) +} diff --git a/java/ql/lib/semmle/code/java/security/CommandArguments.qll b/java/ql/lib/semmle/code/java/security/CommandArguments.qll index f161a83d17b0..1ac42192e040 100644 --- a/java/ql/lib/semmle/code/java/security/CommandArguments.qll +++ b/java/ql/lib/semmle/code/java/security/CommandArguments.qll @@ -38,9 +38,13 @@ private predicate isShell(Expr ex) { cmd.regexpMatch(".*(sh|javac?|python[23]?|osascript|cmd)(\\.exe)?$") ) or - exists(SsaVariable ssa | - ex = ssa.getAUse() and - isShell(ssa.getAnUltimateDefinition().(SsaExplicitUpdate).getDefiningExpr()) + exists(SsaDefinition ssa, SsaExplicitWrite def | + ex = ssa.getARead() and + isShell(def.getDefiningExpr()) + | + ssa.getAnUltimateDefinition() = def + or + ssa.(SsaCapturedDefinition).getAnUltimateCapturedDefinition() = def ) or isShell(ex.(Assignment).getRhs()) @@ -61,17 +65,17 @@ private class ListOfStringType extends CollectionType { /** * A variable that could be used as a list of arguments to a command. */ -private class CommandArgumentList extends SsaExplicitUpdate { +private class CommandArgumentList extends SsaExplicitWrite { CommandArgumentList() { this.getSourceVariable().getType() instanceof ListOfStringType and - forex(CollectionMutation ma | ma.getQualifier() = this.getAUse() | + forex(CollectionMutation ma | ma.getQualifier() = this.getARead() | ma.getMethod().getName().matches("add%") ) } /** Gets a use of the variable for which the list could be empty. */ private VarRead getAUseBeforeFirstAdd() { - result = this.getAFirstUse() + result = ssaGetAFirstUse(this) or exists(VarRead mid | mid = this.getAUseBeforeFirstAdd() and @@ -87,7 +91,7 @@ private class CommandArgumentList extends SsaExplicitUpdate { * Gets an addition to this list, i.e. a call to an `add` or `addAll` method. */ MethodCall getAnAdd() { - result.getQualifier() = this.getAUse() and + result.getQualifier() = this.getARead() and result.getMethod().getName().matches("add%") } @@ -121,10 +125,10 @@ private predicate arrayVarWrite(ArrayAccess acc) { exists(Assignment a | a.getDe /** * A variable that could be an array of arguments to a command. */ -private class CommandArgumentArray extends SsaExplicitUpdate { +private class CommandArgumentArray extends SsaExplicitWrite { CommandArgumentArray() { this.getSourceVariable().getType() instanceof ArrayOfStringType and - forall(ArrayAccess a | a.getArray() = this.getAUse() and arrayVarWrite(a) | + forall(ArrayAccess a | a.getArray() = this.getARead() and arrayVarWrite(a) | a.getIndexExpr() instanceof CompileTimeConstantExpr ) } @@ -133,7 +137,7 @@ private class CommandArgumentArray extends SsaExplicitUpdate { Expr getAWrite(int index, VarRead use) { exists(Assignment a, ArrayAccess acc | acc.getArray() = use and - use = this.getAUse() and + use = this.getARead() and index = acc.getIndexExpr().(CompileTimeConstantExpr).getIntValue() and acc = a.getDest() and result = a.getRhs() @@ -150,7 +154,7 @@ private class CommandArgumentArray extends SsaExplicitUpdate { private class CommandArgArrayImmutableFirst extends CommandArgumentArray { CommandArgArrayImmutableFirst() { (exists(this.getAWrite(0)) or exists(firstElementOf(this.getDefiningExpr()))) and - forall(VarRead use | exists(this.getAWrite(0, use)) | use = this.getAFirstUse()) + forall(VarRead use | exists(this.getAWrite(0, use)) | use = ssaGetAFirstUse(this)) } /** Gets the first element of this array. */ @@ -173,7 +177,9 @@ private Expr firstElementOf(Expr arr) { or result = firstElementOf(arr.(LocalVariableDeclExpr).getInit()) or - exists(CommandArgArrayImmutableFirst caa | arr = caa.getAUse() | result = caa.getFirstElement()) + exists(CommandArgArrayImmutableFirst caa | arr = caa.getARead() | + result = caa.getFirstElement() + ) or exists(MethodCall ma, Method m | arr = ma and diff --git a/java/ql/lib/semmle/code/java/security/ListOfConstantsSanitizer.qll b/java/ql/lib/semmle/code/java/security/ListOfConstantsSanitizer.qll index 4294ac84f687..c8d52f4191cc 100644 --- a/java/ql/lib/semmle/code/java/security/ListOfConstantsSanitizer.qll +++ b/java/ql/lib/semmle/code/java/security/ListOfConstantsSanitizer.qll @@ -9,7 +9,7 @@ import java private import codeql.typeflow.UniversalFlow as UniversalFlow private import semmle.code.java.Collections private import semmle.code.java.controlflow.Guards -private import semmle.code.java.dataflow.internal.BaseSSA +private import semmle.code.java.dataflow.internal.BaseSSA as Base private import semmle.code.java.dataflow.TaintTracking private import semmle.code.java.dataflow.TypeFlow private import semmle.code.java.dispatch.VirtualDispatch @@ -115,7 +115,7 @@ private predicate nodeWithAddition(FlowNode n, Variable v) { n.asField() = v or n.asSsa().getSourceVariable().getVariable() = v and - (n.asSsa() instanceof BaseSsaUpdate or n.asSsa().(BaseSsaImplicitInit).isParameterDefinition(_)) + n.asSsa() instanceof Base::SsaExplicitWrite ) } diff --git a/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll b/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll index 841ff4f85153..4b2d7709fbd9 100644 --- a/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll +++ b/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll @@ -46,14 +46,14 @@ class RightShiftOp extends Expr { } private predicate boundedRead(VarRead read) { - exists(SsaVariable v, ConditionBlock cb, ComparisonExpr comp, boolean testIsTrue | - read = v.getAUse() and + exists(SsaDefinition v, ConditionBlock cb, ComparisonExpr comp, boolean testIsTrue | + read = v.getARead() and cb.controls(read.getBasicBlock(), testIsTrue) and cb.getCondition() = comp | - comp.getLesserOperand() = v.getAUse() and testIsTrue = true + comp.getLesserOperand() = v.getARead() and testIsTrue = true or - comp.getGreaterOperand() = v.getAUse() and testIsTrue = false + comp.getGreaterOperand() = v.getARead() and testIsTrue = false ) } diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index 25454d80c717..7058b844cbdb 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -6,10 +6,14 @@ import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.SensitiveActions import semmle.code.java.frameworks.android.Compose private import semmle.code.java.security.Sanitizers +private import semmle.code.java.dataflow.RangeAnalysis /** A data flow source node for sensitive logging sources. */ abstract class SensitiveLoggerSource extends DataFlow::Node { } +/** A data flow barrier node for sensitive logging sanitizers. */ +abstract class SensitiveLoggerBarrier extends DataFlow::Node { } + /** A variable that may hold sensitive information, judging by its name. */ class VariableWithSensitiveName extends Variable { VariableWithSensitiveName() { @@ -40,17 +44,89 @@ private class TypeType extends RefType { } } +/** + * A sanitizer that may remove sensitive information from a string before logging. + * + * It allows for substring operations taking the first N (or last N, for Kotlin) characters, limited to 7 or fewer. + */ +private class PrefixSuffixBarrier extends SensitiveLoggerBarrier { + PrefixSuffixBarrier() { + exists(MethodCall mc, Method m, int limit | + limit = 7 and + mc.getMethod() = m + | + // substring in Java + ( + m.hasQualifiedName("java.lang", "String", "substring") or + m.hasQualifiedName("java.lang", "StringBuffer", "substring") or + m.hasQualifiedName("java.lang", "StringBuilder", "substring") + ) and + ( + twoArgLimit(mc, limit, false) or + singleArgLimit(mc, limit, false) + ) and + this.asExpr() = mc.getQualifier() + or + // Kotlin string operations, which use extension methods (so the string is the first argument) + ( + m.hasQualifiedName("kotlin.text", "StringsKt", "substring") and + ( + twoArgLimit(mc, limit, true) or + singleArgLimit(mc, limit, true) + ) + or + m.hasQualifiedName("kotlin.text", "StringsKt", ["take", "takeLast"]) and + singleArgLimit(mc, limit, true) + ) and + this.asExpr() = mc.getArgument(0) + ) + } +} + +/** A predicate to check single-argument method calls for a constant integer below a set limit. */ +bindingset[limit, isKotlin] +private predicate singleArgLimit(MethodCall mc, int limit, boolean isKotlin) { + mc.getNumArgument() = 1 and + exists(int firstArgIndex, int delta | + if isKotlin = true then firstArgIndex = 1 else firstArgIndex = 0 + | + bounded(mc.getArgument(firstArgIndex), any(ZeroBound z), delta, true, _) and + delta <= limit + ) +} + +/** A predicate to check two-argument method calls for zero and a constant integer below a set limit. */ +bindingset[limit, isKotlin] +private predicate twoArgLimit(MethodCall mc, int limit, boolean isKotlin) { + mc.getNumArgument() = 2 and + exists(int firstArgIndex, int secondArgIndex, int delta | + isKotlin = true and firstArgIndex = 1 and secondArgIndex = 2 + or + isKotlin = false and firstArgIndex = 0 and secondArgIndex = 1 + | + // mc.getArgument(firstArgIndex).(CompileTimeConstantExpr).getIntValue() = 0 and + bounded(mc.getArgument(firstArgIndex), any(ZeroBound z), 0, true, _) and + bounded(mc.getArgument(firstArgIndex), any(ZeroBound z), 0, false, _) and + bounded(mc.getArgument(secondArgIndex), any(ZeroBound z), delta, true, _) and + delta <= limit + ) +} + +private class DefaultSensitiveLoggerBarrier extends SensitiveLoggerBarrier { + DefaultSensitiveLoggerBarrier() { + this.asExpr() instanceof LiveLiteral or + this instanceof SimpleTypeSanitizer or + this.getType() instanceof TypeType + } +} + /** A data-flow configuration for identifying potentially-sensitive data flowing to a log output. */ module SensitiveLoggerConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof SensitiveLoggerSource } predicate isSink(DataFlow::Node sink) { sinkNode(sink, "log-injection") } - predicate isBarrier(DataFlow::Node sanitizer) { - sanitizer.asExpr() instanceof LiveLiteral or - sanitizer instanceof SimpleTypeSanitizer or - sanitizer.getType() instanceof TypeType - } + predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof SensitiveLoggerBarrier } predicate isBarrierIn(DataFlow::Node node) { isSource(node) } diff --git a/java/ql/lib/semmle/code/java/security/Validation.qll b/java/ql/lib/semmle/code/java/security/Validation.qll index 69f57474317f..51b8defb5ec1 100644 --- a/java/ql/lib/semmle/code/java/security/Validation.qll +++ b/java/ql/lib/semmle/code/java/security/Validation.qll @@ -32,9 +32,9 @@ private predicate validationCall(MethodCall ma, VarAccess va) { } private predicate validatedAccess(VarAccess va) { - exists(SsaVariable v, MethodCall guardcall | - va = v.getAUse() and - validationCall(guardcall, v.getAUse()) + exists(SsaDefinition v, MethodCall guardcall | + va = v.getARead() and + validationCall(guardcall, v.getARead()) | guardcall.(Guard).controls(va.getBasicBlock(), _) or diff --git a/java/ql/lib/semmle/code/xml/XML.qll b/java/ql/lib/semmle/code/xml/XML.qll index d13a83e77981..e4073362fc6f 100644 --- a/java/ql/lib/semmle/code/xml/XML.qll +++ b/java/ql/lib/semmle/code/xml/XML.qll @@ -6,7 +6,6 @@ module; import semmle.files.FileSystem private import codeql.xml.Xml -private import semmle.code.java.Overlay private module Input implements InputSig { class XmlLocatableBase = @xmllocatable or @xmlnamespaceable; @@ -70,13 +69,3 @@ private module Input implements InputSig { } import Make - -private class DiscardableXmlAttribute extends DiscardableXmlLocatable, @xmlattribute { } - -private class DiscardableXmlElement extends DiscardableXmlLocatable, @xmlelement { } - -private class DiscardableXmlComment extends DiscardableXmlLocatable, @xmlcomment { } - -private class DiscardableXmlCharacters extends DiscardableXmlLocatable, @xmlcharacters { } - -private class DiscardableXmlDtd extends DiscardableXmlLocatable, @xmldtd { } diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index ed02fdc5bb2a..a30e72bfaef2 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,26 @@ +## 1.10.3 + +### Minor Analysis Improvements + +* Java analysis no longer forces `--source` and `--target` compiler flags for Maven builds. This allows Maven to use the project's own compiler configuration, improving build compatibility. + +## 1.10.2 + +No user-facing changes. + +## 1.10.1 + +### Minor Analysis Improvements + +* Operations that extract only a fixed-length prefix or suffix of a string (for example, `substring` in Java or `take` in Kotlin), when limited to a length of at most 7 characters, are now treated as sanitizers for the `java/sensitive-log` query. + +## 1.10.0 + +### Query Metadata Changes + +* Reduced the `security-severity` score of the `java/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. +* Reduced the `security-severity` score of the `java/insecure-cookie` query from 5.0 to 4.0 to better reflect its impact. + ## 1.9.0 ### New Queries diff --git a/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql b/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql index 845aae01a3e8..701084ac794c 100644 --- a/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql +++ b/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql @@ -19,10 +19,10 @@ import semmle.code.java.dataflow.RangeUtils import semmle.code.java.dataflow.RangeAnalysis pragma[nomagic] -predicate ssaArrayLengthBound(SsaVariable arr, Bound b) { +predicate ssaArrayLengthBound(SsaDefinition arr, Bound b) { exists(FieldAccess len | len.getField() instanceof ArrayLengthField and - len.getQualifier() = arr.getAUse() and + len.getQualifier() = arr.getARead() and b.getExpr() = len ) } @@ -31,9 +31,9 @@ predicate ssaArrayLengthBound(SsaVariable arr, Bound b) { * Holds if the index expression of `aa` is less than or equal to the array length plus `k`. */ predicate boundedArrayAccess(ArrayAccess aa, int k) { - exists(SsaVariable arr, Expr index, Bound b, int delta | + exists(SsaDefinition arr, Expr index, Bound b, int delta | aa.getIndexExpr() = index and - aa.getArray() = arr.getAUse() and + aa.getArray() = arr.getARead() and bounded(index, b, delta, true, _) | ssaArrayLengthBound(arr, b) and diff --git a/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql b/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql index e60c65953d1e..5c2fd94a9179 100644 --- a/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql +++ b/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql @@ -127,7 +127,7 @@ Expr overFlowCand() { c.getIntValue() >= 0 ) or - exists(SsaExplicitUpdate x | result = x.getAUse() and x.getDefiningExpr() = overFlowCand()) + exists(SsaExplicitWrite x | result = x.getARead() and x.getDefiningExpr() = overFlowCand()) or result.(AssignExpr).getRhs() = overFlowCand() or @@ -142,27 +142,27 @@ Expr overFlowCand() { predicate positiveOrNegative(Expr e) { positive(e) or negative(e) } /** Gets an expression that equals `v` plus a positive or negative value. */ -Expr increaseOrDecreaseOfVar(SsaVariable v) { +Expr increaseOrDecreaseOfVar(SsaDefinition v) { exists(AssignAddExpr add | result = add and positiveOrNegative(add.getDest()) and - add.getRhs() = v.getAUse() + add.getRhs() = v.getARead() ) or exists(AddExpr add, Expr e | result = add and - add.hasOperands(v.getAUse(), e) and + add.hasOperands(v.getARead(), e) and positiveOrNegative(e) ) or exists(SubExpr sub | result = sub and - sub.getLeftOperand() = v.getAUse() and + sub.getLeftOperand() = v.getARead() and positiveOrNegative(sub.getRightOperand()) ) or - exists(SsaExplicitUpdate x | - result = x.getAUse() and x.getDefiningExpr() = increaseOrDecreaseOfVar(v) + exists(SsaExplicitWrite x | + result = x.getARead() and x.getDefiningExpr() = increaseOrDecreaseOfVar(v) ) or result.(AssignExpr).getRhs() = increaseOrDecreaseOfVar(v) @@ -172,7 +172,7 @@ Expr increaseOrDecreaseOfVar(SsaVariable v) { predicate overFlowTest(ComparisonExpr comp) { ( - exists(SsaVariable v | comp.hasOperands(increaseOrDecreaseOfVar(v), v.getAUse())) + exists(SsaDefinition v | comp.hasOperands(increaseOrDecreaseOfVar(v), v.getARead())) or comp.getLesserOperand() = overFlowCand() and comp.getGreaterOperand().(IntegerLiteral).getIntValue() = 0 @@ -195,9 +195,9 @@ predicate concurrentModificationTest(BinaryExpr test) { */ pragma[nomagic] predicate guardedTest(EqualityTest test, Guard guard, boolean isEq, int i1, int i2) { - exists(SsaVariable v, CompileTimeConstantExpr c1, CompileTimeConstantExpr c2 | - guard.isEquality(v.getAUse(), c1, isEq) and - test.hasOperands(v.getAUse(), c2) and + exists(SsaDefinition v, CompileTimeConstantExpr c1, CompileTimeConstantExpr c2 | + guard.isEquality(v.getARead(), c1, isEq) and + test.hasOperands(v.getARead(), c2) and i1 = c1.getIntValue() and i2 = c2.getIntValue() and v.getSourceVariable().getType() instanceof IntegralType diff --git a/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.qll b/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.qll index 2933ae5305e9..787cda448073 100644 --- a/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.qll +++ b/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.qll @@ -27,14 +27,14 @@ class BoundKind extends string { */ predicate uselessTest(ConditionNode s1, BinaryExpr test, boolean testIsTrue) { exists( - ConditionBlock cb, SsaVariable v, BinaryExpr cond, boolean condIsTrue, int k1, int k2, + ConditionBlock cb, SsaDefinition v, BinaryExpr cond, boolean condIsTrue, int k1, int k2, CompileTimeConstantExpr c1, CompileTimeConstantExpr c2 | s1.getCondition() = cond and cb.getCondition() = cond and - cond.hasOperands(v.getAUse(), c1) and + cond.hasOperands(v.getARead(), c1) and c1.getIntValue() = k1 and - test.hasOperands(v.getAUse(), c2) and + test.hasOperands(v.getARead(), c2) and c2.getIntValue() = k2 and v.getSourceVariable().getVariable() instanceof LocalScopeVariable and cb.controls(test.getBasicBlock(), condIsTrue) and @@ -49,7 +49,7 @@ predicate uselessTest(ConditionNode s1, BinaryExpr test, boolean testIsTrue) { ) or exists(ComparisonExpr comp | comp = cond | - comp.getLesserOperand() = v.getAUse() and + comp.getLesserOperand() = v.getARead() and ( condIsTrue = true and boundKind.isUpper() and @@ -60,7 +60,7 @@ predicate uselessTest(ConditionNode s1, BinaryExpr test, boolean testIsTrue) { (if comp.isStrict() then bound = k1 else bound = k1 + 1) ) or - comp.getGreaterOperand() = v.getAUse() and + comp.getGreaterOperand() = v.getARead() and ( condIsTrue = true and boundKind.isLower() and @@ -88,7 +88,7 @@ predicate uselessTest(ConditionNode s1, BinaryExpr test, boolean testIsTrue) { ) or exists(ComparisonExpr comp | comp = test | - comp.getLesserOperand() = v.getAUse() and + comp.getLesserOperand() = v.getARead() and ( boundKind.providesLowerBound() and testIsTrue = false and @@ -107,7 +107,7 @@ predicate uselessTest(ConditionNode s1, BinaryExpr test, boolean testIsTrue) { ) ) or - comp.getGreaterOperand() = v.getAUse() and + comp.getGreaterOperand() = v.getARead() and ( boundKind.providesLowerBound() and testIsTrue = true and diff --git a/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.qll b/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.qll index ac279049ed17..19c2dbc783e1 100644 --- a/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.qll +++ b/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.qll @@ -8,9 +8,9 @@ import semmle.code.java.dataflow.SSA private Expr getAFieldRead(Field f) { result = f.getAnAccess() or - exists(SsaExplicitUpdate v | v.getSourceVariable().getVariable() instanceof LocalScopeVariable | - result = v.getAUse() and - v.getDefiningExpr().(VariableAssign).getSource() = getAFieldRead(f) + exists(SsaExplicitWrite v | v.getSourceVariable().getVariable() instanceof LocalScopeVariable | + result = v.getARead() and + v.getValue() = getAFieldRead(f) ) or result.(AssignExpr).getSource() = getAFieldRead(f) diff --git a/java/ql/src/Likely Bugs/Concurrency/UnreleasedLock.ql b/java/ql/src/Likely Bugs/Concurrency/UnreleasedLock.ql index c7d33eff4a99..4a4be748a283 100644 --- a/java/ql/src/Likely Bugs/Concurrency/UnreleasedLock.ql +++ b/java/ql/src/Likely Bugs/Concurrency/UnreleasedLock.ql @@ -52,10 +52,10 @@ predicate failedLock(LockType t, BasicBlock lockblock, BasicBlock exblock) { ( lock.asExpr() = t.getLockAccess() or - exists(SsaExplicitUpdate lockbool | + exists(SsaExplicitWrite lockbool | // Using the value of `t.getLockAccess()` ensures that it is a `tryLock` call. - lock.asExpr() = lockbool.getAUse() and - lockbool.getDefiningExpr().(VariableAssign).getSource() = t.getLockAccess() + lock.asExpr() = lockbool.getARead() and + lockbool.getValue() = t.getLockAccess() ) ) and ( diff --git a/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql b/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql index e48eb1f5ce65..8f8d04e6eb2d 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql @@ -37,11 +37,11 @@ predicate requiresInstanceOf(Expr e, VarAccess va, RefType t) { * `v` is not of type `sup`, which is a supertype of `t`. */ predicate contradictoryTypeCheck(Expr e, Variable v, RefType t, RefType sup, Expr cond) { - exists(SsaVariable ssa | + exists(SsaDefinition ssa | ssa.getSourceVariable().getVariable() = v and - requiresInstanceOf(e, ssa.getAUse(), t) and + requiresInstanceOf(e, ssa.getARead(), t) and sup = t.getAnAncestor() and - instanceOfCheck(cond, ssa.getAUse(), sup) and + instanceOfCheck(cond, ssa.getARead(), sup) and cond.(Guard).controls(e.getBasicBlock(), false) and not t instanceof ErrorType and not sup instanceof ErrorType diff --git a/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql b/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql index d4fbc480e1b9..bf03191bdac6 100644 --- a/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql +++ b/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql @@ -75,9 +75,9 @@ where loopWhileTrue(loop) and loopExitGuard(loop, cond) ) and // None of the ssa variables in `cond` are updated inside the loop. - forex(SsaVariable ssa, VarRead use | ssa.getAUse() = use and use.getParent*() = cond | - not ssa.getCfgNode().getEnclosingStmt().getEnclosingStmt*() = loop or - ssa.getCfgNode().asExpr().getParent*() = loop.(ForStmt).getAnInit() + forex(SsaDefinition ssa, VarRead use | ssa.getARead() = use and use.getParent*() = cond | + not ssa.getControlFlowNode().getEnclosingStmt().getEnclosingStmt*() = loop or + ssa.getControlFlowNode().asExpr().getParent*() = loop.(ForStmt).getAnInit() ) and // And `cond` does not use method calls, field reads, or array reads. not exists(MethodCall ma | ma.getParent*() = cond) and diff --git a/java/ql/src/Security/CWE/CWE-020/OverlyLargeRange.ql b/java/ql/src/Security/CWE/CWE-020/OverlyLargeRange.ql index b8ea3e52dbd0..5762785949ef 100644 --- a/java/ql/src/Security/CWE/CWE-020/OverlyLargeRange.ql +++ b/java/ql/src/Security/CWE/CWE-020/OverlyLargeRange.ql @@ -4,7 +4,7 @@ * This may allow an attacker to bypass a filter or sanitizer. * @kind problem * @problem.severity warning - * @security-severity 5.0 + * @security-severity 4.0 * @precision high * @id java/overly-large-range * @tags correctness diff --git a/java/ql/src/Security/CWE/CWE-020/UntrustedDataToExternalAPI.ql b/java/ql/src/Security/CWE/CWE-020/UntrustedDataToExternalAPI.ql index a75672445fb1..ec1024fde022 100644 --- a/java/ql/src/Security/CWE/CWE-020/UntrustedDataToExternalAPI.ql +++ b/java/ql/src/Security/CWE/CWE-020/UntrustedDataToExternalAPI.ql @@ -6,7 +6,8 @@ * @precision low * @problem.severity error * @security-severity 7.8 - * @tags security external/cwe/cwe-020 + * @tags security + * external/cwe/cwe-020 */ import java diff --git a/java/ql/src/Security/CWE/CWE-614/InsecureCookie.ql b/java/ql/src/Security/CWE/CWE-614/InsecureCookie.ql index b8d64d22e295..44107281feba 100644 --- a/java/ql/src/Security/CWE/CWE-614/InsecureCookie.ql +++ b/java/ql/src/Security/CWE/CWE-614/InsecureCookie.ql @@ -4,7 +4,7 @@ * interception. * @kind problem * @problem.severity error - * @security-severity 5.0 + * @security-severity 4.0 * @precision high * @id java/insecure-cookie * @tags security diff --git a/java/ql/src/Violations of Best Practice/Dead Code/DeadLocals.qll b/java/ql/src/Violations of Best Practice/Dead Code/DeadLocals.qll index 5afab52c37e2..f0b1ab85c60c 100644 --- a/java/ql/src/Violations of Best Practice/Dead Code/DeadLocals.qll +++ b/java/ql/src/Violations of Best Practice/Dead Code/DeadLocals.qll @@ -14,7 +14,7 @@ private predicate emptyDecl(LocalVariableDeclExpr decl) { /** A dead variable update. */ predicate deadLocal(VariableUpdate upd) { upd.getDestVar() instanceof LocalScopeVariable and - not exists(SsaExplicitUpdate ssa | upd = ssa.getDefiningExpr()) and + not exists(SsaExplicitWrite ssa | upd = ssa.getDefiningExpr()) and not emptyDecl(upd) and not readImplicitly(upd, _) } diff --git a/java/ql/src/change-notes/2025-11-13-maven-default-java-17 b/java/ql/src/change-notes/2025-11-13-maven-default-java-17 new file mode 100644 index 000000000000..26425b103abe --- /dev/null +++ b/java/ql/src/change-notes/2025-11-13-maven-default-java-17 @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Java analysis now selects the Java version to use informed by Maven POM files across all project modules. It also tries to use Java 17 or higher for all Maven projects if possible, for improved build compatibility. \ No newline at end of file diff --git a/java/ql/src/change-notes/released/1.10.0.md b/java/ql/src/change-notes/released/1.10.0.md new file mode 100644 index 000000000000..6cfa49bc2c4e --- /dev/null +++ b/java/ql/src/change-notes/released/1.10.0.md @@ -0,0 +1,6 @@ +## 1.10.0 + +### Query Metadata Changes + +* Reduced the `security-severity` score of the `java/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. +* Reduced the `security-severity` score of the `java/insecure-cookie` query from 5.0 to 4.0 to better reflect its impact. diff --git a/java/ql/src/change-notes/released/1.10.1.md b/java/ql/src/change-notes/released/1.10.1.md new file mode 100644 index 000000000000..1eb6ace7d451 --- /dev/null +++ b/java/ql/src/change-notes/released/1.10.1.md @@ -0,0 +1,5 @@ +## 1.10.1 + +### Minor Analysis Improvements + +* Operations that extract only a fixed-length prefix or suffix of a string (for example, `substring` in Java or `take` in Kotlin), when limited to a length of at most 7 characters, are now treated as sanitizers for the `java/sensitive-log` query. diff --git a/java/ql/src/change-notes/released/1.10.2.md b/java/ql/src/change-notes/released/1.10.2.md new file mode 100644 index 000000000000..fdf84c874fba --- /dev/null +++ b/java/ql/src/change-notes/released/1.10.2.md @@ -0,0 +1,3 @@ +## 1.10.2 + +No user-facing changes. diff --git a/java/ql/src/change-notes/released/1.10.3.md b/java/ql/src/change-notes/released/1.10.3.md new file mode 100644 index 000000000000..758236f0cc06 --- /dev/null +++ b/java/ql/src/change-notes/released/1.10.3.md @@ -0,0 +1,5 @@ +## 1.10.3 + +### Minor Analysis Improvements + +* Java analysis no longer forces `--source` and `--target` compiler flags for Maven builds. This allows Maven to use the project's own compiler configuration, improving build compatibility. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index df17dc3a3662..d3e15295550a 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.9.0 +lastReleaseVersion: 1.10.3 diff --git a/java/ql/src/experimental/Security/CWE/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql b/java/ql/src/experimental/Security/CWE/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql index a5d17250491b..180b816fc9f2 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql @@ -1,5 +1,5 @@ /** - * @name Unsafe usage of v1 version of Azure Storage client-side encryption (CVE-2022-30187). + * @name Unsafe usage of v1 version of Azure Storage client-side encryption (CVE-2022-30187) * @description Unsafe usage of v1 version of Azure Storage client-side encryption, please refer to http://aka.ms/azstorageclientencryptionblog * @kind problem * @tags security diff --git a/java/ql/src/experimental/Security/CWE/CWE-470/LoadClassNoSignatureCheck.ql b/java/ql/src/experimental/Security/CWE/CWE-470/LoadClassNoSignatureCheck.ql index d328b79f5b15..ddf00714f406 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-470/LoadClassNoSignatureCheck.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-470/LoadClassNoSignatureCheck.ql @@ -42,9 +42,9 @@ class CheckSignaturesGuard extends Guard instanceof EqualityTest { } predicate signatureChecked(Expr safe) { - exists(CheckSignaturesGuard g, SsaVariable v | - v.getAUse() = g.getCheckedExpr() and - safe = v.getAUse() and + exists(CheckSignaturesGuard g, SsaDefinition v | + v.getARead() = g.getCheckedExpr() and + safe = v.getARead() and g.controls(safe.getBasicBlock(), g.(EqualityTest).polarity()) ) } diff --git a/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeDeserializationRmi.ql b/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeDeserializationRmi.ql index 5573c9e0e1d1..5803915dd03d 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeDeserializationRmi.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeDeserializationRmi.ql @@ -1,5 +1,5 @@ /** - * @name Unsafe deserialization in a remotely callable method. + * @name Unsafe deserialization in a remotely callable method * @description If a registered remote object has a method that accepts a complex object, * an attacker can take advantage of the unsafe deserialization mechanism * which is used to pass parameters in RMI. diff --git a/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInConfigurationClass.ql b/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInConfigurationClass.ql index 949ffee66e64..2db3bfa750b7 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInConfigurationClass.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInConfigurationClass.ql @@ -1,5 +1,5 @@ /** - * @name Unsafe deserialization with Spring's remote service exporters. + * @name Unsafe deserialization with Spring's remote service exporters * @description A Spring bean, which is based on RemoteInvocationSerializingExporter, * initializes an endpoint that uses ObjectInputStream to deserialize * incoming data. In the worst case, that may lead to remote code execution. diff --git a/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInXMLConfiguration.ql b/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInXMLConfiguration.ql index 1b570465f23c..d74fa98afc19 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInXMLConfiguration.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInXMLConfiguration.ql @@ -1,5 +1,5 @@ /** - * @name Unsafe deserialization with Spring's remote service exporters. + * @name Unsafe deserialization with Spring's remote service exporters * @description A Spring bean, which is based on RemoteInvocationSerializingExporter, * initializes an endpoint that uses ObjectInputStream to deserialize * incoming data. In the worst case, that may lead to remote code execution. diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 198798cf67db..8dac7fa1daff 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.9.0 +version: 1.10.3 groups: - java - queries diff --git a/java/ql/src/utils/modelconverter/ExtractNeutrals.ql b/java/ql/src/utils/modelconverter/ExtractNeutrals.ql index 47fb80af437a..108aa454232e 100644 --- a/java/ql/src/utils/modelconverter/ExtractNeutrals.ql +++ b/java/ql/src/utils/modelconverter/ExtractNeutrals.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD neutral model rows. + * @name Extract MaD neutral model rows * @description This extracts the Models as data neutral model rows. * @id java/utils/modelconverter/generate-data-extensions-neutral */ diff --git a/java/ql/src/utils/modelconverter/ExtractSinks.ql b/java/ql/src/utils/modelconverter/ExtractSinks.ql index 4439f3ef0087..ae79cf3a49d7 100644 --- a/java/ql/src/utils/modelconverter/ExtractSinks.ql +++ b/java/ql/src/utils/modelconverter/ExtractSinks.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD sink model rows. + * @name Extract MaD sink model rows * @description This extracts the Models as data sink model rows. * @id java/utils/modelconverter/generate-data-extensions-sink */ diff --git a/java/ql/src/utils/modelconverter/ExtractSources.ql b/java/ql/src/utils/modelconverter/ExtractSources.ql index cc0faca73d68..8aeb4542a00b 100644 --- a/java/ql/src/utils/modelconverter/ExtractSources.ql +++ b/java/ql/src/utils/modelconverter/ExtractSources.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD source model rows. + * @name Extract MaD source model rows * @description This extracts the Models as data source model rows. * @id java/utils/modelconverter/generate-data-extensions-source */ diff --git a/java/ql/src/utils/modelconverter/ExtractSummaries.ql b/java/ql/src/utils/modelconverter/ExtractSummaries.ql index 6fbed049fd6c..4976c4a13291 100644 --- a/java/ql/src/utils/modelconverter/ExtractSummaries.ql +++ b/java/ql/src/utils/modelconverter/ExtractSummaries.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD summary model rows. + * @name Extract MaD summary model rows * @description This extracts the Models as data summary model rows. * @id java/utils/modelconverter/generate-data-extensions-summary */ diff --git a/java/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql b/java/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql index 39e8cd9a0a4a..e53daa73531c 100644 --- a/java/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql +++ b/java/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture content based summary models. + * @name Capture content based summary models * @description Finds applicable content based summary models to be used by other queries. * @kind diagnostic * @id java/utils/modelgenerator/contentbased-summary-models diff --git a/java/ql/src/utils/modelgenerator/CaptureNeutralModels.ql b/java/ql/src/utils/modelgenerator/CaptureNeutralModels.ql index 6008c3bfb8c4..c5ba30945f79 100644 --- a/java/ql/src/utils/modelgenerator/CaptureNeutralModels.ql +++ b/java/ql/src/utils/modelgenerator/CaptureNeutralModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture neutral models. + * @name Capture neutral models * @description Finds neutral models to be used by other queries. * @kind diagnostic * @id java/utils/modelgenerator/neutral-models diff --git a/java/ql/src/utils/modelgenerator/CaptureSinkModels.ql b/java/ql/src/utils/modelgenerator/CaptureSinkModels.ql index 7fcba8850d6d..327bcd0da9e7 100644 --- a/java/ql/src/utils/modelgenerator/CaptureSinkModels.ql +++ b/java/ql/src/utils/modelgenerator/CaptureSinkModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture sink models. + * @name Capture sink models * @description Finds public methods that act as sinks as they flow into a known sink. * @kind diagnostic * @id java/utils/modelgenerator/sink-models diff --git a/java/ql/src/utils/modelgenerator/CaptureSourceModels.ql b/java/ql/src/utils/modelgenerator/CaptureSourceModels.ql index c623645820b6..2132932981ca 100644 --- a/java/ql/src/utils/modelgenerator/CaptureSourceModels.ql +++ b/java/ql/src/utils/modelgenerator/CaptureSourceModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture source models. + * @name Capture source models * @description Finds APIs that act as sources as they expose already known sources. * @kind diagnostic * @id java/utils/modelgenerator/source-models diff --git a/java/ql/src/utils/modelgenerator/CaptureSummaryModels.ql b/java/ql/src/utils/modelgenerator/CaptureSummaryModels.ql index 3bc49c31df27..b33a7a3a4b25 100644 --- a/java/ql/src/utils/modelgenerator/CaptureSummaryModels.ql +++ b/java/ql/src/utils/modelgenerator/CaptureSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture summary models. + * @name Capture summary models * @description Finds applicable summary models to be used by other queries. * @kind diagnostic * @id java/utils/modelgenerator/summary-models diff --git a/java/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql b/java/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql index f0a33731a87d..d356cc16a06b 100644 --- a/java/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql +++ b/java/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture typed based summary models. + * @name Capture typed based summary models * @description Finds applicable summary models to be used by other queries. * @kind diagnostic * @id java/utils/modelgenerator/summary-models-typed-based diff --git a/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll b/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll index aa68a4332910..b86a4c542461 100644 --- a/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll +++ b/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll @@ -277,10 +277,7 @@ private module SinkModelGeneratorInput implements SinkModelGeneratorInputSig { predicate sinkModelSanitizer(DataFlow::Node node) { // exclude variable capture jump steps - exists(Ssa::SsaImplicitInit closure | - closure.captures(_) and - node.asExpr() = closure.getAFirstUse() - ) + exists(Ssa::SsaCapturedDefinition closure | node.asExpr() = Ssa::ssaGetAFirstUse(closure)) } predicate apiSource(DataFlow::Node source) { diff --git a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected index cf03a9053eb5..ab2ca44ada4a 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected @@ -1,3 +1,8 @@ +#select +| Test.java:40:47:40:52 | ivSpec | Test.java:19:38:19:40 | val : byte[] | Test.java:40:47:40:52 | ivSpec | Nonce source is reused, see alternate sink $@ | Test.java:49:47:49:52 | Nonce | Nonce | +| Test.java:49:47:49:52 | ivSpec | Test.java:19:38:19:40 | val : byte[] | Test.java:49:47:49:52 | ivSpec | Nonce source is reused, see alternate sink $@ | Test.java:40:47:40:52 | Nonce | Nonce | +| Test.java:76:48:76:54 | ivSpec1 | Test.java:19:38:19:40 | val : byte[] | Test.java:76:48:76:54 | ivSpec1 | Nonce source is reused, see alternate sink $@ | Test.java:82:49:82:55 | Nonce | Nonce | +| Test.java:82:49:82:55 | ivSpec2 | Test.java:19:38:19:40 | val : byte[] | Test.java:82:49:82:55 | ivSpec2 | Nonce source is reused, see alternate sink $@ | Test.java:76:48:76:54 | Nonce | Nonce | edges | Test.java:19:38:19:40 | val : byte[] | Test.java:20:16:20:18 | val : byte[] | provenance | | | Test.java:20:16:20:18 | val : byte[] | Test.java:25:15:25:33 | getRandomWrapper1(...) : byte[] | provenance | | @@ -11,38 +16,41 @@ edges | Test.java:33:16:33:18 | val : byte[] | Test.java:63:21:63:40 | getRandomWrapper2b(...) : byte[] | provenance | | | Test.java:33:16:33:18 | val : byte[] | Test.java:72:21:72:40 | getRandomWrapper2b(...) : byte[] | provenance | | | Test.java:36:32:36:40 | iv : byte[] | Test.java:37:54:37:55 | iv : byte[] | provenance | | -| Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:40:47:40:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:40:47:40:52 | ivSpec | provenance | Sink:MaD:1 | | Test.java:37:54:37:55 | iv : byte[] | Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:37:54:37:55 | iv : byte[] | Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:37:54:37:55 | iv : byte[] | Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:45:21:45:40 | getRandomWrapper2A(...) : byte[] | Test.java:46:54:46:55 | iv : byte[] | provenance | | -| Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:49:47:49:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:49:47:49:52 | ivSpec | provenance | Sink:MaD:1 | | Test.java:46:54:46:55 | iv : byte[] | Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:46:54:46:55 | iv : byte[] | Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:46:54:46:55 | iv : byte[] | Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:54:21:54:40 | getRandomWrapper2b(...) : byte[] | Test.java:55:54:55:55 | iv : byte[] | provenance | | -| Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:58:47:58:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:58:47:58:52 | ivSpec | provenance | Sink:MaD:1 | | Test.java:55:54:55:55 | iv : byte[] | Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:55:54:55:55 | iv : byte[] | Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:55:54:55:55 | iv : byte[] | Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:63:21:63:40 | getRandomWrapper2b(...) : byte[] | Test.java:64:54:64:55 | iv : byte[] | provenance | | -| Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:67:47:67:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:67:47:67:52 | ivSpec | provenance | Sink:MaD:1 | | Test.java:64:54:64:55 | iv : byte[] | Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:64:54:64:55 | iv : byte[] | Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:64:54:64:55 | iv : byte[] | Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:72:21:72:40 | getRandomWrapper2b(...) : byte[] | Test.java:73:55:73:56 | iv : byte[] | provenance | | -| Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | Test.java:76:48:76:54 | ivSpec1 | provenance | Sink:MaD:45890 | +| Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | Test.java:76:48:76:54 | ivSpec1 | provenance | Sink:MaD:1 | | Test.java:73:55:73:56 | iv : byte[] | Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:73:55:73:56 | iv : byte[] | Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:73:55:73:56 | iv : byte[] | Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:73:55:73:56 | iv : byte[] | Test.java:79:55:79:56 | iv : byte[] | provenance | | -| Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | Test.java:82:49:82:55 | ivSpec2 | provenance | Sink:MaD:45890 | +| Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | Test.java:82:49:82:55 | ivSpec2 | provenance | Sink:MaD:1 | | Test.java:79:55:79:56 | iv : byte[] | Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:79:55:79:56 | iv : byte[] | Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:79:55:79:56 | iv : byte[] | Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:88:38:88:39 | iv : byte[] | Test.java:89:54:89:55 | iv : byte[] | provenance | | -| Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:93:51:93:56 | ivSpec | provenance | Sink:MaD:45890 | -| Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:96:51:96:56 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:93:51:93:56 | ivSpec | provenance | Sink:MaD:1 | +| Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:96:51:96:56 | ivSpec | provenance | Sink:MaD:1 | | Test.java:89:54:89:55 | iv : byte[] | Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:89:54:89:55 | iv : byte[] | Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:89:54:89:55 | iv : byte[] | Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:103:38:103:39 | iv : byte[] | Test.java:104:54:104:55 | iv : byte[] | provenance | | -| Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:107:47:107:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:107:47:107:52 | ivSpec | provenance | Sink:MaD:1 | | Test.java:104:54:104:55 | iv : byte[] | Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:104:54:104:55 | iv : byte[] | Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:104:54:104:55 | iv : byte[] | Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | +models +| 1 | Sink: javax.crypto; Cipher; true; init; (int,Key,AlgorithmParameterSpec); ; Argument[2]; encryption-iv; manual | +| 2 | Summary: javax.crypto.spec; IvParameterSpec; true; IvParameterSpec; ; ; Argument[0]; Argument[this]; taint; manual | nodes | Test.java:19:38:19:40 | val : byte[] | semmle.label | val : byte[] | | Test.java:20:16:20:18 | val : byte[] | semmle.label | val : byte[] | @@ -84,8 +92,3 @@ nodes | Test.java:104:54:104:55 | iv : byte[] | semmle.label | iv : byte[] | | Test.java:107:47:107:52 | ivSpec | semmle.label | ivSpec | subpaths -#select -| Test.java:40:47:40:52 | ivSpec | Test.java:19:38:19:40 | val : byte[] | Test.java:40:47:40:52 | ivSpec | Nonce source is reused, see alternate sink $@ | Test.java:49:47:49:52 | Nonce | Nonce | -| Test.java:49:47:49:52 | ivSpec | Test.java:19:38:19:40 | val : byte[] | Test.java:49:47:49:52 | ivSpec | Nonce source is reused, see alternate sink $@ | Test.java:40:47:40:52 | Nonce | Nonce | -| Test.java:76:48:76:54 | ivSpec1 | Test.java:19:38:19:40 | val : byte[] | Test.java:76:48:76:54 | ivSpec1 | Nonce source is reused, see alternate sink $@ | Test.java:82:49:82:55 | Nonce | Nonce | -| Test.java:82:49:82:55 | ivSpec2 | Test.java:19:38:19:40 | val : byte[] | Test.java:82:49:82:55 | ivSpec2 | Nonce source is reused, see alternate sink $@ | Test.java:76:48:76:54 | Nonce | Nonce | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref index 6f8aa4b838b8..9658a376bb90 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref +++ b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref @@ -1 +1,2 @@ -experimental/quantum/Examples/ReusedNonce.ql \ No newline at end of file +query: experimental/quantum/Examples/ReusedNonce.ql +postprocess: utils/test/PrettyPrintModels.ql diff --git a/java/ql/test/library-tests/dataflow/modulus-analysis/ModulusAnalysis.expected b/java/ql/test/library-tests/dataflow/modulus-analysis/ModulusAnalysis.expected index 953283d79dbe..7750e18b7479 100644 --- a/java/ql/test/library-tests/dataflow/modulus-analysis/ModulusAnalysis.expected +++ b/java/ql/test/library-tests/dataflow/modulus-analysis/ModulusAnalysis.expected @@ -4,24 +4,23 @@ | ModulusAnalysis.java:4:5:4:22 | ...=... | 0 | 43 | 0 | | ModulusAnalysis.java:4:5:4:22 | c2 | 0 | 43 | 0 | | ModulusAnalysis.java:4:20:4:21 | 43 | 0 | 43 | 0 | -| ModulusAnalysis.java:7:13:7:22 | eq | SSA init(i) | 3 | 0 | -| ModulusAnalysis.java:7:18:7:18 | i | SSA init(i) | 0 | 0 | -| ModulusAnalysis.java:7:18:7:22 | ... + ... | SSA init(i) | 3 | 0 | +| ModulusAnalysis.java:7:13:7:22 | eq | SSA param(i) | 3 | 0 | +| ModulusAnalysis.java:7:18:7:18 | i | SSA param(i) | 0 | 0 | +| ModulusAnalysis.java:7:18:7:22 | ... + ... | SSA param(i) | 3 | 0 | | ModulusAnalysis.java:7:22:7:22 | 3 | 0 | 3 | 0 | | ModulusAnalysis.java:9:13:9:29 | mul | 0 | 3 | 42 | | ModulusAnalysis.java:9:19:9:20 | eq | SSA def(eq) | 0 | 0 | -| ModulusAnalysis.java:9:19:9:20 | eq | SSA init(i) | 3 | 0 | +| ModulusAnalysis.java:9:19:9:20 | eq | SSA param(i) | 3 | 0 | | ModulusAnalysis.java:9:19:9:25 | ... * ... | 0 | 0 | 42 | | ModulusAnalysis.java:9:19:9:29 | ... + ... | 0 | 3 | 42 | | ModulusAnalysis.java:9:24:9:25 | c1 | 0 | 42 | 0 | -| ModulusAnalysis.java:9:24:9:25 | c1 | SSA init(this.c1) | 0 | 0 | +| ModulusAnalysis.java:9:24:9:25 | c1 | SSA entry def(this.c1) | 0 | 0 | | ModulusAnalysis.java:9:29:9:29 | 3 | 0 | 3 | 0 | | ModulusAnalysis.java:11:13:11:21 | seven | 0 | 7 | 0 | | ModulusAnalysis.java:11:21:11:21 | 7 | 0 | 7 | 0 | | ModulusAnalysis.java:12:13:12:15 | mul | 0 | 3 | 42 | | ModulusAnalysis.java:12:13:12:15 | mul | SSA def(mul) | 0 | 0 | | ModulusAnalysis.java:12:19:12:20 | c2 | 0 | 43 | 0 | -| ModulusAnalysis.java:12:19:12:20 | c2 | SSA impl upd[untracked](this.c2) | 0 | 0 | | ModulusAnalysis.java:12:25:12:29 | seven | 0 | 7 | 0 | | ModulusAnalysis.java:12:25:12:29 | seven | SSA def(seven) | 0 | 0 | | ModulusAnalysis.java:13:32:13:34 | mul | 0 | 3 | 42 | @@ -29,49 +28,49 @@ | ModulusAnalysis.java:13:32:13:34 | mul | SSA def(mul) | 0 | 0 | | ModulusAnalysis.java:16:13:18:23 | j | 0 | 3 | 4 | | ModulusAnalysis.java:16:17:18:23 | ...?...:... | 0 | 3 | 4 | -| ModulusAnalysis.java:17:15:17:15 | i | SSA init(i) | 0 | 0 | +| ModulusAnalysis.java:17:15:17:15 | i | SSA param(i) | 0 | 0 | | ModulusAnalysis.java:17:15:17:19 | ... * ... | 0 | 0 | 4 | | ModulusAnalysis.java:17:15:17:23 | ... + ... | 0 | 3 | 4 | | ModulusAnalysis.java:17:19:17:19 | 4 | 0 | 4 | 0 | | ModulusAnalysis.java:17:23:17:23 | 3 | 0 | 3 | 0 | -| ModulusAnalysis.java:18:15:18:15 | i | SSA init(i) | 0 | 0 | +| ModulusAnalysis.java:18:15:18:15 | i | SSA param(i) | 0 | 0 | | ModulusAnalysis.java:18:15:18:19 | ... * ... | 0 | 0 | 8 | | ModulusAnalysis.java:18:15:18:23 | ... + ... | 0 | 7 | 8 | | ModulusAnalysis.java:18:19:18:19 | 8 | 0 | 8 | 0 | | ModulusAnalysis.java:18:23:18:23 | 7 | 0 | 7 | 0 | | ModulusAnalysis.java:19:28:19:28 | j | 0 | 3 | 4 | | ModulusAnalysis.java:19:28:19:28 | j | SSA def(j) | 0 | 0 | -| ModulusAnalysis.java:21:13:21:13 | x | SSA init(x) | 0 | 0 | +| ModulusAnalysis.java:21:13:21:13 | x | SSA param(x) | 0 | 0 | | ModulusAnalysis.java:21:17:21:18 | c1 | 0 | 42 | 0 | -| ModulusAnalysis.java:21:17:21:18 | c1 | SSA init(this.c1) | 0 | 0 | +| ModulusAnalysis.java:21:17:21:18 | c1 | SSA entry def(this.c1) | 0 | 0 | | ModulusAnalysis.java:21:23:21:23 | 3 | 0 | 3 | 0 | -| ModulusAnalysis.java:21:28:21:28 | y | SSA init(y) | 0 | 0 | +| ModulusAnalysis.java:21:28:21:28 | y | SSA param(y) | 0 | 0 | | ModulusAnalysis.java:21:32:21:33 | c1 | 0 | 42 | 0 | -| ModulusAnalysis.java:21:32:21:33 | c1 | SSA init(this.c1) | 0 | 0 | +| ModulusAnalysis.java:21:32:21:33 | c1 | SSA entry def(this.c1) | 0 | 0 | | ModulusAnalysis.java:21:38:21:38 | 7 | 0 | 7 | 0 | | ModulusAnalysis.java:22:32:22:32 | x | 0 | 3 | 42 | -| ModulusAnalysis.java:22:32:22:32 | x | SSA init(x) | 0 | 0 | +| ModulusAnalysis.java:22:32:22:32 | x | SSA param(x) | 0 | 0 | | ModulusAnalysis.java:22:32:22:36 | ... + ... | 0 | 10 | 42 | -| ModulusAnalysis.java:22:32:22:36 | ... + ... | SSA init(x) | 7 | 42 | -| ModulusAnalysis.java:22:32:22:36 | ... + ... | SSA init(y) | 3 | 42 | +| ModulusAnalysis.java:22:32:22:36 | ... + ... | SSA param(x) | 7 | 42 | +| ModulusAnalysis.java:22:32:22:36 | ... + ... | SSA param(y) | 3 | 42 | | ModulusAnalysis.java:22:36:22:36 | y | 0 | 7 | 42 | -| ModulusAnalysis.java:22:36:22:36 | y | SSA init(y) | 0 | 0 | -| ModulusAnalysis.java:25:13:25:13 | x | SSA init(x) | 0 | 0 | +| ModulusAnalysis.java:22:36:22:36 | y | SSA param(y) | 0 | 0 | +| ModulusAnalysis.java:25:13:25:13 | x | SSA param(x) | 0 | 0 | | ModulusAnalysis.java:25:17:25:18 | c1 | 0 | 42 | 0 | -| ModulusAnalysis.java:25:17:25:18 | c1 | SSA init(this.c1) | 0 | 0 | +| ModulusAnalysis.java:25:17:25:18 | c1 | SSA entry def(this.c1) | 0 | 0 | | ModulusAnalysis.java:25:23:25:23 | 3 | 0 | 3 | 0 | -| ModulusAnalysis.java:25:28:25:28 | y | SSA init(y) | 0 | 0 | +| ModulusAnalysis.java:25:28:25:28 | y | SSA param(y) | 0 | 0 | | ModulusAnalysis.java:25:32:25:33 | c1 | 0 | 42 | 0 | -| ModulusAnalysis.java:25:32:25:33 | c1 | SSA init(this.c1) | 0 | 0 | +| ModulusAnalysis.java:25:32:25:33 | c1 | SSA entry def(this.c1) | 0 | 0 | | ModulusAnalysis.java:25:38:25:38 | 7 | 0 | 7 | 0 | | ModulusAnalysis.java:26:32:26:32 | x | 0 | 3 | 42 | -| ModulusAnalysis.java:26:32:26:32 | x | SSA init(x) | 0 | 0 | +| ModulusAnalysis.java:26:32:26:32 | x | SSA param(x) | 0 | 0 | | ModulusAnalysis.java:26:32:26:36 | ... - ... | 0 | 38 | 42 | -| ModulusAnalysis.java:26:32:26:36 | ... - ... | SSA init(x) | 35 | 42 | +| ModulusAnalysis.java:26:32:26:36 | ... - ... | SSA param(x) | 35 | 42 | | ModulusAnalysis.java:26:36:26:36 | y | 0 | 7 | 42 | -| ModulusAnalysis.java:26:36:26:36 | y | SSA init(y) | 0 | 0 | +| ModulusAnalysis.java:26:36:26:36 | y | SSA param(y) | 0 | 0 | | ModulusAnalysis.java:29:13:29:35 | l | 0 | 1 | 4 | -| ModulusAnalysis.java:29:17:29:26 | arr.length | SSA impl upd[untracked](arr.length) | 0 | 0 | +| ModulusAnalysis.java:29:17:29:26 | arr.length | arr.length | 0 | 0 | | ModulusAnalysis.java:29:17:29:30 | ... * ... | 0 | 0 | 4 | | ModulusAnalysis.java:29:17:29:35 | ... - ... | 0 | 1 | 4 | | ModulusAnalysis.java:29:30:29:30 | 4 | 0 | 4 | 0 | @@ -87,13 +86,13 @@ | ModulusAnalysis.java:33:28:33:28 | l | 0 | 1 | 4 | | ModulusAnalysis.java:33:28:33:28 | l | SSA def(l) | 0 | 0 | | ModulusAnalysis.java:36:13:36:25 | ...=... | 0 | 3 | 4 | -| ModulusAnalysis.java:36:17:36:17 | i | SSA init(i) | 0 | 0 | +| ModulusAnalysis.java:36:17:36:17 | i | SSA param(i) | 0 | 0 | | ModulusAnalysis.java:36:17:36:21 | ... * ... | 0 | 0 | 4 | | ModulusAnalysis.java:36:17:36:25 | ... + ... | 0 | 3 | 4 | | ModulusAnalysis.java:36:21:36:21 | 4 | 0 | 4 | 0 | | ModulusAnalysis.java:36:25:36:25 | 3 | 0 | 3 | 0 | | ModulusAnalysis.java:39:13:39:25 | ...=... | 0 | 7 | 8 | -| ModulusAnalysis.java:39:17:39:17 | i | SSA init(i) | 0 | 0 | +| ModulusAnalysis.java:39:17:39:17 | i | SSA param(i) | 0 | 0 | | ModulusAnalysis.java:39:17:39:21 | ... * ... | 0 | 0 | 8 | | ModulusAnalysis.java:39:17:39:25 | ... + ... | 0 | 7 | 8 | | ModulusAnalysis.java:39:21:39:21 | 8 | 0 | 8 | 0 | @@ -104,22 +103,22 @@ | ModulusAnalysis.java:44:32:44:32 | j | SSA phi(j) | 0 | 0 | | ModulusAnalysis.java:46:32:46:32 | j | 0 | 3 | 4 | | ModulusAnalysis.java:46:32:46:32 | j | SSA phi(j) | 0 | 0 | -| ModulusAnalysis.java:49:14:49:14 | x | SSA init(x) | 0 | 0 | +| ModulusAnalysis.java:49:14:49:14 | x | SSA param(x) | 0 | 0 | | ModulusAnalysis.java:49:18:49:19 | 15 | 0 | 15 | 0 | | ModulusAnalysis.java:49:25:49:25 | 3 | 0 | 3 | 0 | | ModulusAnalysis.java:50:32:50:32 | x | 0 | 3 | 16 | -| ModulusAnalysis.java:50:32:50:32 | x | SSA init(x) | 0 | 0 | +| ModulusAnalysis.java:50:32:50:32 | x | SSA param(x) | 0 | 0 | | ModulusAnalysis.java:56:18:56:22 | i | 0 | 0 | 0 | | ModulusAnalysis.java:56:22:56:22 | 0 | 0 | 0 | 0 | | ModulusAnalysis.java:56:25:56:25 | i | SSA phi(i) | 0 | 0 | -| ModulusAnalysis.java:56:29:56:31 | cap | SSA init(cap) | 0 | 0 | +| ModulusAnalysis.java:56:29:56:31 | cap | SSA param(cap) | 0 | 0 | | ModulusAnalysis.java:56:34:56:34 | i | SSA phi(i) | 0 | 0 | | ModulusAnalysis.java:56:34:56:36 | ...++ | SSA phi(i) | 0 | 0 | | ModulusAnalysis.java:57:32:57:32 | i | SSA phi(i) | 0 | 0 | | ModulusAnalysis.java:59:18:59:22 | j | 0 | 0 | 0 | | ModulusAnalysis.java:59:22:59:22 | 0 | 0 | 0 | 0 | | ModulusAnalysis.java:59:25:59:25 | j | SSA phi(j) | 0 | 0 | -| ModulusAnalysis.java:59:29:59:31 | cap | SSA init(cap) | 0 | 0 | +| ModulusAnalysis.java:59:29:59:31 | cap | SSA param(cap) | 0 | 0 | | ModulusAnalysis.java:59:34:59:34 | j | SSA phi(j) | 0 | 0 | | ModulusAnalysis.java:59:34:59:39 | ...+=... | SSA phi(j) | 1 | 0 | | ModulusAnalysis.java:59:39:59:39 | 1 | 0 | 1 | 0 | @@ -129,7 +128,7 @@ | ModulusAnalysis.java:62:25:62:25 | k | 0 | 0 | 3 | | ModulusAnalysis.java:62:25:62:25 | k | SSA def(k) | 0 | 3 | | ModulusAnalysis.java:62:25:62:25 | k | SSA phi(k) | 0 | 0 | -| ModulusAnalysis.java:62:29:62:31 | cap | SSA init(cap) | 0 | 0 | +| ModulusAnalysis.java:62:29:62:31 | cap | SSA param(cap) | 0 | 0 | | ModulusAnalysis.java:62:34:62:34 | k | 0 | 0 | 3 | | ModulusAnalysis.java:62:34:62:34 | k | SSA def(k) | 0 | 3 | | ModulusAnalysis.java:62:34:62:34 | k | SSA phi(k) | 0 | 0 | diff --git a/java/ql/test/library-tests/dataflow/range-analysis/RangeAnalysis.expected b/java/ql/test/library-tests/dataflow/range-analysis/RangeAnalysis.expected index 6b9d75a8bc7d..2648fd926861 100644 --- a/java/ql/test/library-tests/dataflow/range-analysis/RangeAnalysis.expected +++ b/java/ql/test/library-tests/dataflow/range-analysis/RangeAnalysis.expected @@ -1,232 +1,232 @@ -| A.java:3:9:3:9 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:3:9:3:9 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:3:9:3:9 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:3:9:3:9 | x | SSA param(x) | 0 | upper | NoReason | | A.java:3:13:3:15 | 500 | 0 | 500 | lower | NoReason | | A.java:3:13:3:15 | 500 | 0 | 500 | upper | NoReason | | A.java:4:11:4:11 | x | 0 | 499 | upper | ... < ... | -| A.java:4:11:4:11 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:4:11:4:11 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:4:11:4:11 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:4:11:4:11 | x | SSA param(x) | 0 | upper | NoReason | | A.java:4:15:4:17 | 400 | 0 | 400 | lower | NoReason | | A.java:4:15:4:17 | 400 | 0 | 400 | upper | NoReason | | A.java:5:16:5:16 | x | 0 | 401 | lower | ... > ... | | A.java:5:16:5:16 | x | 0 | 499 | upper | ... < ... | -| A.java:5:16:5:16 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:5:16:5:16 | x | SSA init(x) | 0 | upper | NoReason | -| A.java:8:11:8:11 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:8:11:8:11 | y | SSA init(y) | 0 | upper | NoReason | -| A.java:8:11:8:15 | ... - ... | SSA init(y) | -2 | lower | NoReason | -| A.java:8:11:8:15 | ... - ... | SSA init(y) | -2 | upper | NoReason | +| A.java:5:16:5:16 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:5:16:5:16 | x | SSA param(x) | 0 | upper | NoReason | +| A.java:8:11:8:11 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:8:11:8:11 | y | SSA param(y) | 0 | upper | NoReason | +| A.java:8:11:8:15 | ... - ... | SSA param(y) | -2 | lower | NoReason | +| A.java:8:11:8:15 | ... - ... | SSA param(y) | -2 | upper | NoReason | | A.java:8:15:8:15 | 2 | 0 | 2 | lower | NoReason | | A.java:8:15:8:15 | 2 | 0 | 2 | upper | NoReason | | A.java:8:20:8:20 | x | 0 | 400 | upper | ... > ... | -| A.java:8:20:8:20 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:8:20:8:20 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:8:20:8:20 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:8:20:8:20 | x | SSA param(x) | 0 | upper | NoReason | | A.java:8:25:8:25 | y | 0 | 402 | upper | ... == ... | -| A.java:8:25:8:25 | y | SSA init(x) | 2 | lower | ... == ... | -| A.java:8:25:8:25 | y | SSA init(x) | 2 | upper | ... == ... | -| A.java:8:25:8:25 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:8:25:8:25 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:8:25:8:25 | y | SSA param(x) | 2 | lower | ... == ... | +| A.java:8:25:8:25 | y | SSA param(x) | 2 | upper | ... == ... | +| A.java:8:25:8:25 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:8:25:8:25 | y | SSA param(y) | 0 | upper | NoReason | | A.java:8:29:8:31 | 300 | 0 | 300 | lower | NoReason | | A.java:8:29:8:31 | 300 | 0 | 300 | upper | NoReason | | A.java:9:16:9:16 | x | 0 | 299 | lower | ... > ... | | A.java:9:16:9:16 | x | 0 | 400 | upper | ... > ... | -| A.java:9:16:9:16 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:9:16:9:16 | x | SSA init(x) | 0 | upper | NoReason | -| A.java:9:16:9:16 | x | SSA init(y) | -2 | lower | ... == ... | -| A.java:9:16:9:16 | x | SSA init(y) | -2 | upper | ... == ... | +| A.java:9:16:9:16 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:9:16:9:16 | x | SSA param(x) | 0 | upper | NoReason | +| A.java:9:16:9:16 | x | SSA param(y) | -2 | lower | ... == ... | +| A.java:9:16:9:16 | x | SSA param(y) | -2 | upper | ... == ... | | A.java:9:16:9:20 | ... + ... | 0 | 600 | lower | ... > ... | | A.java:9:16:9:20 | ... + ... | 0 | 802 | upper | ... == ... | | A.java:9:16:9:20 | ... + ... | 0 | 802 | upper | ... > ... | -| A.java:9:16:9:20 | ... + ... | SSA init(x) | 301 | lower | ... == ... | -| A.java:9:16:9:20 | ... + ... | SSA init(x) | 301 | lower | NoReason | -| A.java:9:16:9:20 | ... + ... | SSA init(x) | 402 | upper | ... == ... | -| A.java:9:16:9:20 | ... + ... | SSA init(x) | 402 | upper | NoReason | -| A.java:9:16:9:20 | ... + ... | SSA init(y) | 299 | lower | ... == ... | -| A.java:9:16:9:20 | ... + ... | SSA init(y) | 299 | lower | NoReason | -| A.java:9:16:9:20 | ... + ... | SSA init(y) | 400 | upper | ... == ... | -| A.java:9:16:9:20 | ... + ... | SSA init(y) | 400 | upper | NoReason | +| A.java:9:16:9:20 | ... + ... | SSA param(x) | 301 | lower | ... == ... | +| A.java:9:16:9:20 | ... + ... | SSA param(x) | 301 | lower | NoReason | +| A.java:9:16:9:20 | ... + ... | SSA param(x) | 402 | upper | ... == ... | +| A.java:9:16:9:20 | ... + ... | SSA param(x) | 402 | upper | NoReason | +| A.java:9:16:9:20 | ... + ... | SSA param(y) | 299 | lower | ... == ... | +| A.java:9:16:9:20 | ... + ... | SSA param(y) | 299 | lower | NoReason | +| A.java:9:16:9:20 | ... + ... | SSA param(y) | 400 | upper | ... == ... | +| A.java:9:16:9:20 | ... + ... | SSA param(y) | 400 | upper | NoReason | | A.java:9:20:9:20 | y | 0 | 301 | lower | ... > ... | | A.java:9:20:9:20 | y | 0 | 402 | upper | ... == ... | -| A.java:9:20:9:20 | y | SSA init(x) | 2 | lower | ... == ... | -| A.java:9:20:9:20 | y | SSA init(x) | 2 | upper | ... == ... | -| A.java:9:20:9:20 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:9:20:9:20 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:9:20:9:20 | y | SSA param(x) | 2 | lower | ... == ... | +| A.java:9:20:9:20 | y | SSA param(x) | 2 | upper | ... == ... | +| A.java:9:20:9:20 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:9:20:9:20 | y | SSA param(y) | 0 | upper | NoReason | | A.java:12:11:12:11 | x | 0 | 400 | upper | ... > ... | -| A.java:12:11:12:11 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:12:11:12:11 | x | SSA init(x) | 0 | upper | NoReason | -| A.java:12:16:12:16 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:12:16:12:16 | y | SSA init(y) | 0 | upper | NoReason | -| A.java:12:16:12:20 | ... + ... | SSA init(y) | 1 | lower | NoReason | -| A.java:12:16:12:20 | ... + ... | SSA init(y) | 1 | upper | NoReason | +| A.java:12:11:12:11 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:12:11:12:11 | x | SSA param(x) | 0 | upper | NoReason | +| A.java:12:16:12:16 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:12:16:12:16 | y | SSA param(y) | 0 | upper | NoReason | +| A.java:12:16:12:20 | ... + ... | SSA param(y) | 1 | lower | NoReason | +| A.java:12:16:12:20 | ... + ... | SSA param(y) | 1 | upper | NoReason | | A.java:12:20:12:20 | 1 | 0 | 1 | lower | NoReason | | A.java:12:20:12:20 | 1 | 0 | 1 | upper | NoReason | -| A.java:13:13:13:23 | sum | SSA init(y) | 400 | upper | NoReason | +| A.java:13:13:13:23 | sum | SSA param(y) | 400 | upper | NoReason | | A.java:13:19:13:19 | x | 0 | 400 | upper | ... > ... | -| A.java:13:19:13:19 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:13:19:13:19 | x | SSA init(x) | 0 | upper | NoReason | -| A.java:13:19:13:23 | ... + ... | SSA init(y) | 400 | upper | NoReason | -| A.java:13:23:13:23 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:13:23:13:23 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:13:19:13:19 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:13:19:13:19 | x | SSA param(x) | 0 | upper | NoReason | +| A.java:13:19:13:23 | ... + ... | SSA param(y) | 400 | upper | NoReason | +| A.java:13:23:13:23 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:13:23:13:23 | y | SSA param(y) | 0 | upper | NoReason | | A.java:15:13:15:13 | y | 0 | 399 | upper | ... != ... | -| A.java:15:13:15:13 | y | SSA init(x) | -1 | lower | ... != ... | -| A.java:15:13:15:13 | y | SSA init(x) | -1 | upper | ... != ... | -| A.java:15:13:15:13 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:15:13:15:13 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:15:13:15:13 | y | SSA param(x) | -1 | lower | ... != ... | +| A.java:15:13:15:13 | y | SSA param(x) | -1 | upper | ... != ... | +| A.java:15:13:15:13 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:15:13:15:13 | y | SSA param(y) | 0 | upper | NoReason | | A.java:15:17:15:19 | 300 | 0 | 300 | lower | NoReason | | A.java:15:17:15:19 | 300 | 0 | 300 | upper | NoReason | | A.java:16:15:16:25 | sum | 0 | 603 | lower | ... > ... | | A.java:16:15:16:25 | sum | 0 | 799 | upper | ... != ... | | A.java:16:15:16:25 | sum | 0 | 799 | upper | ... > ... | -| A.java:16:15:16:25 | sum | SSA init(x) | 301 | lower | ... != ... | -| A.java:16:15:16:25 | sum | SSA init(x) | 301 | lower | NoReason | -| A.java:16:15:16:25 | sum | SSA init(x) | 399 | upper | ... != ... | -| A.java:16:15:16:25 | sum | SSA init(x) | 399 | upper | NoReason | -| A.java:16:15:16:25 | sum | SSA init(y) | 302 | lower | ... != ... | -| A.java:16:15:16:25 | sum | SSA init(y) | 302 | lower | NoReason | -| A.java:16:15:16:25 | sum | SSA init(y) | 400 | upper | ... != ... | -| A.java:16:15:16:25 | sum | SSA init(y) | 400 | upper | NoReason | +| A.java:16:15:16:25 | sum | SSA param(x) | 301 | lower | ... != ... | +| A.java:16:15:16:25 | sum | SSA param(x) | 301 | lower | NoReason | +| A.java:16:15:16:25 | sum | SSA param(x) | 399 | upper | ... != ... | +| A.java:16:15:16:25 | sum | SSA param(x) | 399 | upper | NoReason | +| A.java:16:15:16:25 | sum | SSA param(y) | 302 | lower | ... != ... | +| A.java:16:15:16:25 | sum | SSA param(y) | 302 | lower | NoReason | +| A.java:16:15:16:25 | sum | SSA param(y) | 400 | upper | ... != ... | +| A.java:16:15:16:25 | sum | SSA param(y) | 400 | upper | NoReason | | A.java:16:21:16:21 | x | 0 | 302 | lower | ... > ... | | A.java:16:21:16:21 | x | 0 | 400 | upper | ... > ... | -| A.java:16:21:16:21 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:16:21:16:21 | x | SSA init(x) | 0 | upper | NoReason | -| A.java:16:21:16:21 | x | SSA init(y) | 1 | lower | ... != ... | -| A.java:16:21:16:21 | x | SSA init(y) | 1 | upper | ... != ... | +| A.java:16:21:16:21 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:16:21:16:21 | x | SSA param(x) | 0 | upper | NoReason | +| A.java:16:21:16:21 | x | SSA param(y) | 1 | lower | ... != ... | +| A.java:16:21:16:21 | x | SSA param(y) | 1 | upper | ... != ... | | A.java:16:21:16:25 | ... + ... | 0 | 603 | lower | ... > ... | | A.java:16:21:16:25 | ... + ... | 0 | 799 | upper | ... != ... | | A.java:16:21:16:25 | ... + ... | 0 | 799 | upper | ... > ... | -| A.java:16:21:16:25 | ... + ... | SSA init(x) | 301 | lower | ... != ... | -| A.java:16:21:16:25 | ... + ... | SSA init(x) | 301 | lower | NoReason | -| A.java:16:21:16:25 | ... + ... | SSA init(x) | 399 | upper | ... != ... | -| A.java:16:21:16:25 | ... + ... | SSA init(x) | 399 | upper | NoReason | -| A.java:16:21:16:25 | ... + ... | SSA init(y) | 302 | lower | ... != ... | -| A.java:16:21:16:25 | ... + ... | SSA init(y) | 302 | lower | NoReason | -| A.java:16:21:16:25 | ... + ... | SSA init(y) | 400 | upper | ... != ... | -| A.java:16:21:16:25 | ... + ... | SSA init(y) | 400 | upper | NoReason | +| A.java:16:21:16:25 | ... + ... | SSA param(x) | 301 | lower | ... != ... | +| A.java:16:21:16:25 | ... + ... | SSA param(x) | 301 | lower | NoReason | +| A.java:16:21:16:25 | ... + ... | SSA param(x) | 399 | upper | ... != ... | +| A.java:16:21:16:25 | ... + ... | SSA param(x) | 399 | upper | NoReason | +| A.java:16:21:16:25 | ... + ... | SSA param(y) | 302 | lower | ... != ... | +| A.java:16:21:16:25 | ... + ... | SSA param(y) | 302 | lower | NoReason | +| A.java:16:21:16:25 | ... + ... | SSA param(y) | 400 | upper | ... != ... | +| A.java:16:21:16:25 | ... + ... | SSA param(y) | 400 | upper | NoReason | | A.java:16:25:16:25 | y | 0 | 301 | lower | ... > ... | | A.java:16:25:16:25 | y | 0 | 399 | upper | ... != ... | -| A.java:16:25:16:25 | y | SSA init(x) | -1 | lower | ... != ... | -| A.java:16:25:16:25 | y | SSA init(x) | -1 | upper | ... != ... | -| A.java:16:25:16:25 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:16:25:16:25 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:16:25:16:25 | y | SSA param(x) | -1 | lower | ... != ... | +| A.java:16:25:16:25 | y | SSA param(x) | -1 | upper | ... != ... | +| A.java:16:25:16:25 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:16:25:16:25 | y | SSA param(y) | 0 | upper | NoReason | | A.java:20:11:20:11 | x | 0 | 400 | upper | ... > ... | -| A.java:20:11:20:11 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:20:11:20:11 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:20:11:20:11 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:20:11:20:11 | x | SSA param(x) | 0 | upper | NoReason | | A.java:20:15:20:17 | 500 | 0 | 500 | lower | NoReason | | A.java:20:15:20:17 | 500 | 0 | 500 | upper | NoReason | | A.java:21:16:21:16 | x | 0 | 400 | upper | ... > ... | | A.java:21:16:21:16 | x | 0 | 501 | lower | ... > ... | -| A.java:21:16:21:16 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:21:16:21:16 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:21:16:21:16 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:21:16:21:16 | x | SSA param(x) | 0 | upper | NoReason | | A.java:25:12:25:12 | 0 | 0 | 0 | lower | NoReason | | A.java:25:12:25:12 | 0 | 0 | 0 | upper | NoReason | -| A.java:29:9:29:9 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:29:9:29:9 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:29:9:29:9 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:29:9:29:9 | x | SSA param(x) | 0 | upper | NoReason | | A.java:29:13:29:15 | 500 | 0 | 500 | lower | NoReason | | A.java:29:13:29:15 | 500 | 0 | 500 | upper | NoReason | | A.java:30:11:30:11 | x | 0 | 499 | upper | ... < ... | -| A.java:30:11:30:11 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:30:11:30:11 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:30:11:30:11 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:30:11:30:11 | x | SSA param(x) | 0 | upper | NoReason | | A.java:30:15:30:17 | 400 | 0 | 400 | lower | NoReason | | A.java:30:15:30:17 | 400 | 0 | 400 | upper | NoReason | | A.java:31:16:31:16 | x | 0 | 401 | lower | ... > ... | | A.java:31:16:31:16 | x | 0 | 499 | upper | ... < ... | -| A.java:31:16:31:16 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:31:16:31:16 | x | SSA init(x) | 0 | upper | NoReason | -| A.java:34:11:34:11 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:34:11:34:11 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:31:16:31:16 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:31:16:31:16 | x | SSA param(x) | 0 | upper | NoReason | +| A.java:34:11:34:11 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:34:11:34:11 | y | SSA param(y) | 0 | upper | NoReason | | A.java:34:16:34:16 | x | 0 | 400 | upper | ... > ... | -| A.java:34:16:34:16 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:34:16:34:16 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:34:16:34:16 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:34:16:34:16 | x | SSA param(x) | 0 | upper | NoReason | | A.java:34:16:34:20 | ... - ... | 0 | 399 | upper | ... > ... | -| A.java:34:16:34:20 | ... - ... | SSA init(x) | -1 | lower | NoReason | -| A.java:34:16:34:20 | ... - ... | SSA init(x) | -1 | upper | NoReason | +| A.java:34:16:34:20 | ... - ... | SSA param(x) | -1 | lower | NoReason | +| A.java:34:16:34:20 | ... - ... | SSA param(x) | -1 | upper | NoReason | | A.java:34:20:34:20 | 1 | 0 | 1 | lower | NoReason | | A.java:34:20:34:20 | 1 | 0 | 1 | upper | NoReason | | A.java:34:25:34:25 | y | 0 | 399 | upper | ... == ... | -| A.java:34:25:34:25 | y | SSA init(x) | -1 | lower | ... == ... | -| A.java:34:25:34:25 | y | SSA init(x) | -1 | upper | ... == ... | -| A.java:34:25:34:25 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:34:25:34:25 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:34:25:34:25 | y | SSA param(x) | -1 | lower | ... == ... | +| A.java:34:25:34:25 | y | SSA param(x) | -1 | upper | ... == ... | +| A.java:34:25:34:25 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:34:25:34:25 | y | SSA param(y) | 0 | upper | NoReason | | A.java:34:29:34:31 | 300 | 0 | 300 | lower | NoReason | | A.java:34:29:34:31 | 300 | 0 | 300 | upper | NoReason | | A.java:34:36:34:36 | y | 0 | 301 | lower | ... > ... | | A.java:34:36:34:36 | y | 0 | 399 | upper | ... == ... | -| A.java:34:36:34:36 | y | SSA init(x) | -1 | lower | ... == ... | -| A.java:34:36:34:36 | y | SSA init(x) | -1 | upper | ... == ... | -| A.java:34:36:34:36 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:34:36:34:36 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:34:36:34:36 | y | SSA param(x) | -1 | lower | ... == ... | +| A.java:34:36:34:36 | y | SSA param(x) | -1 | upper | ... == ... | +| A.java:34:36:34:36 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:34:36:34:36 | y | SSA param(y) | 0 | upper | NoReason | | A.java:34:36:34:40 | ... + ... | 0 | 303 | lower | ... > ... | | A.java:34:36:34:40 | ... + ... | 0 | 401 | upper | ... == ... | -| A.java:34:36:34:40 | ... + ... | SSA init(x) | 1 | lower | ... == ... | -| A.java:34:36:34:40 | ... + ... | SSA init(x) | 1 | upper | ... == ... | -| A.java:34:36:34:40 | ... + ... | SSA init(y) | 2 | lower | NoReason | -| A.java:34:36:34:40 | ... + ... | SSA init(y) | 2 | upper | NoReason | +| A.java:34:36:34:40 | ... + ... | SSA param(x) | 1 | lower | ... == ... | +| A.java:34:36:34:40 | ... + ... | SSA param(x) | 1 | upper | ... == ... | +| A.java:34:36:34:40 | ... + ... | SSA param(y) | 2 | lower | NoReason | +| A.java:34:36:34:40 | ... + ... | SSA param(y) | 2 | upper | NoReason | | A.java:34:40:34:40 | 2 | 0 | 2 | lower | NoReason | | A.java:34:40:34:40 | 2 | 0 | 2 | upper | NoReason | -| A.java:34:45:34:45 | z | SSA init(z) | 0 | lower | NoReason | -| A.java:34:45:34:45 | z | SSA init(z) | 0 | upper | NoReason | +| A.java:34:45:34:45 | z | SSA param(z) | 0 | lower | NoReason | +| A.java:34:45:34:45 | z | SSA param(z) | 0 | upper | NoReason | | A.java:34:50:34:50 | z | 0 | 303 | lower | ... == ... | | A.java:34:50:34:50 | z | 0 | 401 | upper | ... == ... | -| A.java:34:50:34:50 | z | SSA init(x) | 1 | lower | ... == ... | -| A.java:34:50:34:50 | z | SSA init(x) | 1 | upper | ... == ... | -| A.java:34:50:34:50 | z | SSA init(y) | 2 | lower | ... == ... | -| A.java:34:50:34:50 | z | SSA init(y) | 2 | upper | ... == ... | -| A.java:34:50:34:50 | z | SSA init(z) | 0 | lower | NoReason | -| A.java:34:50:34:50 | z | SSA init(z) | 0 | upper | NoReason | +| A.java:34:50:34:50 | z | SSA param(x) | 1 | lower | ... == ... | +| A.java:34:50:34:50 | z | SSA param(x) | 1 | upper | ... == ... | +| A.java:34:50:34:50 | z | SSA param(y) | 2 | lower | ... == ... | +| A.java:34:50:34:50 | z | SSA param(y) | 2 | upper | ... == ... | +| A.java:34:50:34:50 | z | SSA param(z) | 0 | lower | NoReason | +| A.java:34:50:34:50 | z | SSA param(z) | 0 | upper | NoReason | | A.java:34:55:34:57 | 350 | 0 | 350 | lower | NoReason | | A.java:34:55:34:57 | 350 | 0 | 350 | upper | NoReason | | A.java:35:16:35:16 | x | 0 | 349 | lower | ... == ... | | A.java:35:16:35:16 | x | 0 | 349 | upper | ... == ... | -| A.java:35:16:35:16 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:35:16:35:16 | x | SSA init(x) | 0 | upper | NoReason | -| A.java:35:16:35:16 | x | SSA init(y) | 1 | lower | ... == ... | -| A.java:35:16:35:16 | x | SSA init(y) | 1 | upper | ... == ... | -| A.java:35:16:35:16 | x | SSA init(z) | -1 | lower | ... == ... | -| A.java:35:16:35:16 | x | SSA init(z) | -1 | upper | ... == ... | +| A.java:35:16:35:16 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:35:16:35:16 | x | SSA param(x) | 0 | upper | NoReason | +| A.java:35:16:35:16 | x | SSA param(y) | 1 | lower | ... == ... | +| A.java:35:16:35:16 | x | SSA param(y) | 1 | upper | ... == ... | +| A.java:35:16:35:16 | x | SSA param(z) | -1 | lower | ... == ... | +| A.java:35:16:35:16 | x | SSA param(z) | -1 | upper | ... == ... | | A.java:35:16:35:20 | ... + ... | 0 | 697 | lower | ... == ... | | A.java:35:16:35:20 | ... + ... | 0 | 697 | upper | ... == ... | -| A.java:35:16:35:20 | ... + ... | SSA init(x) | 348 | lower | ... == ... | -| A.java:35:16:35:20 | ... + ... | SSA init(x) | 348 | lower | NoReason | -| A.java:35:16:35:20 | ... + ... | SSA init(x) | 348 | upper | ... == ... | -| A.java:35:16:35:20 | ... + ... | SSA init(x) | 348 | upper | NoReason | -| A.java:35:16:35:20 | ... + ... | SSA init(y) | 349 | lower | ... == ... | -| A.java:35:16:35:20 | ... + ... | SSA init(y) | 349 | lower | NoReason | -| A.java:35:16:35:20 | ... + ... | SSA init(y) | 349 | upper | ... == ... | -| A.java:35:16:35:20 | ... + ... | SSA init(y) | 349 | upper | NoReason | -| A.java:35:16:35:20 | ... + ... | SSA init(z) | 347 | lower | ... == ... | -| A.java:35:16:35:20 | ... + ... | SSA init(z) | 347 | upper | ... == ... | +| A.java:35:16:35:20 | ... + ... | SSA param(x) | 348 | lower | ... == ... | +| A.java:35:16:35:20 | ... + ... | SSA param(x) | 348 | lower | NoReason | +| A.java:35:16:35:20 | ... + ... | SSA param(x) | 348 | upper | ... == ... | +| A.java:35:16:35:20 | ... + ... | SSA param(x) | 348 | upper | NoReason | +| A.java:35:16:35:20 | ... + ... | SSA param(y) | 349 | lower | ... == ... | +| A.java:35:16:35:20 | ... + ... | SSA param(y) | 349 | lower | NoReason | +| A.java:35:16:35:20 | ... + ... | SSA param(y) | 349 | upper | ... == ... | +| A.java:35:16:35:20 | ... + ... | SSA param(y) | 349 | upper | NoReason | +| A.java:35:16:35:20 | ... + ... | SSA param(z) | 347 | lower | ... == ... | +| A.java:35:16:35:20 | ... + ... | SSA param(z) | 347 | upper | ... == ... | | A.java:35:16:35:24 | ... + ... | 0 | 1047 | lower | ... == ... | | A.java:35:16:35:24 | ... + ... | 0 | 1047 | upper | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(x) | 698 | lower | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(x) | 698 | lower | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(x) | 698 | lower | NoReason | -| A.java:35:16:35:24 | ... + ... | SSA init(x) | 698 | upper | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(x) | 698 | upper | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(x) | 698 | upper | NoReason | -| A.java:35:16:35:24 | ... + ... | SSA init(y) | 699 | lower | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(y) | 699 | lower | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(y) | 699 | lower | NoReason | -| A.java:35:16:35:24 | ... + ... | SSA init(y) | 699 | upper | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(y) | 699 | upper | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(y) | 699 | upper | NoReason | -| A.java:35:16:35:24 | ... + ... | SSA init(z) | 697 | lower | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(z) | 697 | lower | NoReason | -| A.java:35:16:35:24 | ... + ... | SSA init(z) | 697 | upper | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(z) | 697 | upper | NoReason | +| A.java:35:16:35:24 | ... + ... | SSA param(x) | 698 | lower | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(x) | 698 | lower | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(x) | 698 | lower | NoReason | +| A.java:35:16:35:24 | ... + ... | SSA param(x) | 698 | upper | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(x) | 698 | upper | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(x) | 698 | upper | NoReason | +| A.java:35:16:35:24 | ... + ... | SSA param(y) | 699 | lower | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(y) | 699 | lower | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(y) | 699 | lower | NoReason | +| A.java:35:16:35:24 | ... + ... | SSA param(y) | 699 | upper | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(y) | 699 | upper | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(y) | 699 | upper | NoReason | +| A.java:35:16:35:24 | ... + ... | SSA param(z) | 697 | lower | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(z) | 697 | lower | NoReason | +| A.java:35:16:35:24 | ... + ... | SSA param(z) | 697 | upper | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(z) | 697 | upper | NoReason | | A.java:35:20:35:20 | y | 0 | 348 | lower | ... == ... | | A.java:35:20:35:20 | y | 0 | 348 | upper | ... == ... | -| A.java:35:20:35:20 | y | SSA init(x) | -1 | lower | ... == ... | -| A.java:35:20:35:20 | y | SSA init(x) | -1 | upper | ... == ... | -| A.java:35:20:35:20 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:35:20:35:20 | y | SSA init(y) | 0 | upper | NoReason | -| A.java:35:20:35:20 | y | SSA init(z) | -2 | lower | ... == ... | -| A.java:35:20:35:20 | y | SSA init(z) | -2 | upper | ... == ... | +| A.java:35:20:35:20 | y | SSA param(x) | -1 | lower | ... == ... | +| A.java:35:20:35:20 | y | SSA param(x) | -1 | upper | ... == ... | +| A.java:35:20:35:20 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:35:20:35:20 | y | SSA param(y) | 0 | upper | NoReason | +| A.java:35:20:35:20 | y | SSA param(z) | -2 | lower | ... == ... | +| A.java:35:20:35:20 | y | SSA param(z) | -2 | upper | ... == ... | | A.java:35:24:35:24 | z | 0 | 350 | lower | ... == ... | | A.java:35:24:35:24 | z | 0 | 350 | upper | ... == ... | -| A.java:35:24:35:24 | z | SSA init(x) | 1 | lower | ... == ... | -| A.java:35:24:35:24 | z | SSA init(x) | 1 | upper | ... == ... | -| A.java:35:24:35:24 | z | SSA init(y) | 2 | lower | ... == ... | -| A.java:35:24:35:24 | z | SSA init(y) | 2 | upper | ... == ... | -| A.java:35:24:35:24 | z | SSA init(z) | 0 | lower | NoReason | -| A.java:35:24:35:24 | z | SSA init(z) | 0 | upper | NoReason | +| A.java:35:24:35:24 | z | SSA param(x) | 1 | lower | ... == ... | +| A.java:35:24:35:24 | z | SSA param(x) | 1 | upper | ... == ... | +| A.java:35:24:35:24 | z | SSA param(y) | 2 | lower | ... == ... | +| A.java:35:24:35:24 | z | SSA param(y) | 2 | upper | ... == ... | +| A.java:35:24:35:24 | z | SSA param(z) | 0 | lower | NoReason | +| A.java:35:24:35:24 | z | SSA param(z) | 0 | upper | NoReason | | A.java:39:12:39:12 | 0 | 0 | 0 | lower | NoReason | | A.java:39:12:39:12 | 0 | 0 | 0 | upper | NoReason | diff --git a/java/ql/test/library-tests/ssa-large/countssa.ql b/java/ql/test/library-tests/ssa-large/countssa.ql index 8d7b5939c5c0..3d07a8dad292 100644 --- a/java/ql/test/library-tests/ssa-large/countssa.ql +++ b/java/ql/test/library-tests/ssa-large/countssa.ql @@ -3,6 +3,6 @@ import semmle.code.java.dataflow.SSA from int uses, int live where - uses = strictcount(SsaVariable ssa, VarRead use | use = ssa.getAUse()) and - live = strictcount(SsaVariable ssa, BasicBlock b | ssa.isLiveAtEndOfBlock(b)) + uses = strictcount(SsaDefinition ssa, VarRead use | use = ssa.getARead()) and + live = strictcount(SsaDefinition ssa, BasicBlock b | ssa.isLiveAtEndOfBlock(b)) select uses, live diff --git a/java/ql/test/library-tests/ssa/captures.expected b/java/ql/test/library-tests/ssa/captures.expected index 2ec18f4880dc..3d8b8e136024 100644 --- a/java/ql/test/library-tests/ssa/captures.expected +++ b/java/ql/test/library-tests/ssa/captures.expected @@ -1,9 +1,9 @@ -| Nested.java:8:29:8:57 | SSA init(next(..).p1) | Nested.java:4:34:10:3 | SSA init(p1) | -| Nested.java:8:29:8:57 | SSA init(next(..).x1) | Nested.java:5:9:5:14 | SSA def(x1) | -| Nested.java:16:22:16:34 | SSA init(getInt(..).obj) | Nested.java:15:12:15:29 | SSA def(obj) | -| Nested.java:19:27:22:7 | SSA init(getInt(..).hash) | Nested.java:16:15:16:34 | SSA def(hash) | -| Nested.java:19:27:22:7 | SSA init(getInt(..).x2) | Nested.java:17:9:17:15 | SSA def(x2) | -| Nested.java:20:27:20:39 | SSA init(getInt(..).obj) | Nested.java:15:12:15:29 | SSA def(obj) | -| Nested.java:30:23:30:36 | SSA init(getInt(..).obj2) | Nested.java:30:5:30:37 | SSA phi(obj2) | -| Nested.java:37:20:37:25 | SSA init(getInt(..).x3) | Nested.java:36:7:36:12 | SSA def(x3) | -| Nested.java:40:20:40:25 | SSA init(getInt(..).x3) | Nested.java:39:7:39:12 | SSA def(x3) | +| Nested.java:8:29:8:57 | SSA capture def(next(..).p1) | Nested.java:4:34:10:3 | SSA param(p1) | +| Nested.java:8:29:8:57 | SSA capture def(next(..).x1) | Nested.java:5:9:5:14 | SSA def(x1) | +| Nested.java:16:22:16:34 | SSA capture def(getInt(..).obj) | Nested.java:15:12:15:29 | SSA def(obj) | +| Nested.java:19:27:22:7 | SSA capture def(getInt(..).hash) | Nested.java:16:15:16:34 | SSA def(hash) | +| Nested.java:19:27:22:7 | SSA capture def(getInt(..).x2) | Nested.java:17:9:17:15 | SSA def(x2) | +| Nested.java:20:27:20:39 | SSA capture def(getInt(..).obj) | Nested.java:15:12:15:29 | SSA def(obj) | +| Nested.java:30:23:30:36 | SSA capture def(getInt(..).obj2) | Nested.java:30:5:30:37 | SSA phi(obj2) | +| Nested.java:37:20:37:25 | SSA capture def(getInt(..).x3) | Nested.java:36:7:36:12 | SSA def(x3) | +| Nested.java:40:20:40:25 | SSA capture def(getInt(..).x3) | Nested.java:39:7:39:12 | SSA def(x3) | diff --git a/java/ql/test/library-tests/ssa/captures.ql b/java/ql/test/library-tests/ssa/captures.ql index ae89b91c43a1..1b6217598666 100644 --- a/java/ql/test/library-tests/ssa/captures.ql +++ b/java/ql/test/library-tests/ssa/captures.ql @@ -1,6 +1,6 @@ import java import semmle.code.java.dataflow.SSA -from SsaImplicitInit closure, SsaVariable captured +from SsaCapturedDefinition closure, SsaDefinition captured where closure.captures(captured) select closure, captured diff --git a/java/ql/test/library-tests/ssa/firstUse.expected b/java/ql/test/library-tests/ssa/firstUse.expected index 2d86e6ed1177..6494791be346 100644 --- a/java/ql/test/library-tests/ssa/firstUse.expected +++ b/java/ql/test/library-tests/ssa/firstUse.expected @@ -1,43 +1,43 @@ -| Fields.java:12:19:21:3 | SSA init(this.xs) | Fields.java:13:15:13:16 | xs | -| Fields.java:14:5:14:9 | SSA impl upd[nonlocal](this.xs) | Fields.java:15:9:15:10 | xs | +| Fields.java:12:19:21:3 | SSA entry def(this.xs) | Fields.java:13:15:13:16 | xs | +| Fields.java:14:5:14:9 | SSA call def(this.xs) | Fields.java:15:9:15:10 | xs | | Fields.java:15:5:15:10 | SSA def(x) | Fields.java:16:9:16:9 | x | -| Fields.java:17:7:17:11 | SSA impl upd[nonlocal](this.xs) | Fields.java:18:9:18:15 | this.xs | +| Fields.java:17:7:17:11 | SSA call def(this.xs) | Fields.java:18:9:18:15 | this.xs | | Fields.java:18:5:18:16 | SSA phi(this.xs) | Fields.java:18:9:18:15 | this.xs | | Fields.java:19:5:19:19 | SSA def(this.xs) | Fields.java:20:9:20:10 | xs | -| Fields.java:23:19:49:3 | SSA init(Fields.stat) | Fields.java:27:15:27:18 | stat | -| Fields.java:23:19:49:3 | SSA init(this.xs) | Fields.java:26:15:26:16 | xs | +| Fields.java:23:19:49:3 | SSA entry def(Fields.stat) | Fields.java:27:15:27:18 | stat | +| Fields.java:23:19:49:3 | SSA entry def(this.xs) | Fields.java:26:15:26:16 | xs | | Fields.java:24:12:24:27 | SSA def(f) | Fields.java:25:15:25:15 | f | -| Fields.java:24:12:24:27 | SSA impl upd[explicit qualifier](f.xs) | Fields.java:25:15:25:18 | f.xs | -| Fields.java:24:16:24:27 | SSA impl upd[nonlocal](Fields.stat) | Fields.java:27:15:27:18 | stat | -| Fields.java:28:5:28:12 | SSA impl upd[nonlocal](Fields.stat) | Fields.java:31:9:31:12 | stat | -| Fields.java:28:5:28:12 | SSA impl upd[nonlocal](f.xs) | Fields.java:29:9:29:12 | f.xs | -| Fields.java:28:5:28:12 | SSA impl upd[nonlocal](this.xs) | Fields.java:30:9:30:10 | xs | -| Fields.java:32:5:32:9 | SSA impl upd[nonlocal](Fields.stat) | Fields.java:35:9:35:12 | stat | -| Fields.java:32:5:32:9 | SSA impl upd[nonlocal](f.xs) | Fields.java:33:9:33:12 | f.xs | -| Fields.java:32:5:32:9 | SSA impl upd[nonlocal](this.xs) | Fields.java:34:9:34:10 | xs | +| Fields.java:24:12:24:27 | SSA qualifier def(f.xs) | Fields.java:25:15:25:18 | f.xs | +| Fields.java:24:16:24:27 | SSA call def(Fields.stat) | Fields.java:27:15:27:18 | stat | +| Fields.java:28:5:28:12 | SSA call def(Fields.stat) | Fields.java:31:9:31:12 | stat | +| Fields.java:28:5:28:12 | SSA call def(f.xs) | Fields.java:29:9:29:12 | f.xs | +| Fields.java:28:5:28:12 | SSA call def(this.xs) | Fields.java:30:9:30:10 | xs | +| Fields.java:32:5:32:9 | SSA call def(Fields.stat) | Fields.java:35:9:35:12 | stat | +| Fields.java:32:5:32:9 | SSA call def(f.xs) | Fields.java:33:9:33:12 | f.xs | +| Fields.java:32:5:32:9 | SSA call def(this.xs) | Fields.java:34:9:34:10 | xs | | Fields.java:36:5:36:19 | SSA def(this.xs) | Fields.java:38:9:38:10 | xs | | Fields.java:39:5:39:21 | SSA def(f.xs) | Fields.java:40:9:40:12 | f.xs | | Fields.java:41:5:41:10 | SSA def(z) | Fields.java:42:9:42:9 | z | | Fields.java:43:7:43:22 | SSA def(f) | Fields.java:44:9:44:9 | f | -| Fields.java:43:7:43:22 | SSA impl upd[explicit qualifier](f.xs) | Fields.java:44:9:44:12 | f.xs | -| Fields.java:43:11:43:22 | SSA impl upd[nonlocal](Fields.stat) | Fields.java:48:9:48:12 | stat | +| Fields.java:43:7:43:22 | SSA qualifier def(f.xs) | Fields.java:44:9:44:12 | f.xs | +| Fields.java:43:11:43:22 | SSA call def(Fields.stat) | Fields.java:48:9:48:12 | stat | | Fields.java:44:5:44:13 | SSA phi(Fields.stat) | Fields.java:48:9:48:12 | stat | | Fields.java:44:5:44:13 | SSA phi(f) | Fields.java:44:9:44:9 | f | | Fields.java:44:5:44:13 | SSA phi(f.xs) | Fields.java:44:9:44:12 | f.xs | -| Fields.java:45:5:45:16 | SSA impl upd[nonlocal](Fields.stat) | Fields.java:48:9:48:12 | stat | -| Nested.java:8:29:8:57 | SSA init(next(..).p1) | Nested.java:8:38:8:39 | p1 | -| Nested.java:8:29:8:57 | SSA init(next(..).x1) | Nested.java:8:43:8:44 | x1 | -| Nested.java:16:22:16:34 | SSA init(getInt(..).obj) | Nested.java:16:22:16:24 | obj | +| Fields.java:45:5:45:16 | SSA call def(Fields.stat) | Fields.java:48:9:48:12 | stat | +| Nested.java:8:29:8:57 | SSA capture def(next(..).p1) | Nested.java:8:38:8:39 | p1 | +| Nested.java:8:29:8:57 | SSA capture def(next(..).x1) | Nested.java:8:43:8:44 | x1 | +| Nested.java:16:22:16:34 | SSA capture def(getInt(..).obj) | Nested.java:16:22:16:24 | obj | | Nested.java:18:15:23:5 | SSA def(h2) | Nested.java:25:9:25:10 | h2 | -| Nested.java:19:27:22:7 | SSA init(getInt(..).hash) | Nested.java:21:21:21:24 | hash | -| Nested.java:19:27:22:7 | SSA init(getInt(..).x2) | Nested.java:21:16:21:17 | x2 | +| Nested.java:19:27:22:7 | SSA capture def(getInt(..).hash) | Nested.java:21:21:21:24 | hash | +| Nested.java:19:27:22:7 | SSA capture def(getInt(..).x2) | Nested.java:21:16:21:17 | x2 | | Nested.java:20:19:20:39 | SSA def(hnest) | Nested.java:21:37:21:41 | hnest | -| Nested.java:20:27:20:39 | SSA init(getInt(..).obj) | Nested.java:20:27:20:29 | obj | -| Nested.java:30:23:30:36 | SSA init(getInt(..).obj2) | Nested.java:30:23:30:26 | obj2 | -| Nested.java:33:29:42:3 | SSA init(p3) | Nested.java:35:9:35:10 | p3 | -| Nested.java:37:20:37:25 | SSA init(getInt(..).x3) | Nested.java:37:20:37:21 | x3 | -| Nested.java:40:20:40:25 | SSA init(getInt(..).x3) | Nested.java:40:20:40:21 | x3 | -| Test.java:4:19:32:2 | SSA init(param) | Test.java:9:7:9:11 | param | +| Nested.java:20:27:20:39 | SSA capture def(getInt(..).obj) | Nested.java:20:27:20:29 | obj | +| Nested.java:30:23:30:36 | SSA capture def(getInt(..).obj2) | Nested.java:30:23:30:26 | obj2 | +| Nested.java:33:29:42:3 | SSA param(p3) | Nested.java:35:9:35:10 | p3 | +| Nested.java:37:20:37:25 | SSA capture def(getInt(..).x3) | Nested.java:37:20:37:21 | x3 | +| Nested.java:40:20:40:25 | SSA capture def(getInt(..).x3) | Nested.java:40:20:40:21 | x3 | +| Test.java:4:19:32:2 | SSA param(param) | Test.java:9:7:9:11 | param | | Test.java:6:7:6:11 | SSA def(x) | Test.java:10:4:10:4 | x | | Test.java:6:7:6:11 | SSA def(x) | Test.java:20:10:20:10 | x | | Test.java:10:4:10:6 | SSA def(x) | Test.java:11:10:11:10 | x | @@ -58,15 +58,12 @@ | Test.java:27:25:27:27 | SSA def(i) | Test.java:27:19:27:19 | i | | Test.java:28:4:28:9 | SSA def(x) | Test.java:28:4:28:4 | x | | Test.java:28:4:28:9 | SSA def(x) | Test.java:31:10:31:10 | x | -| TestInstanceOfPattern.java:3:24:9:2 | SSA init(obj) | TestInstanceOfPattern.java:4:7:4:9 | obj | +| TestInstanceOfPattern.java:3:24:9:2 | SSA param(obj) | TestInstanceOfPattern.java:4:7:4:9 | obj | | TestInstanceOfPattern.java:4:29:4:29 | SSA def(s) | TestInstanceOfPattern.java:5:8:5:8 | s | -| TestInstanceOfPattern.java:7:8:7:8 | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:7:8:7:8 | s | -| TestInstanceOfPattern.java:10:25:16:2 | SSA init(obj) | TestInstanceOfPattern.java:11:9:11:11 | obj | +| TestInstanceOfPattern.java:10:25:16:2 | SSA param(obj) | TestInstanceOfPattern.java:11:9:11:11 | obj | | TestInstanceOfPattern.java:11:31:11:31 | SSA def(s) | TestInstanceOfPattern.java:14:8:14:8 | s | -| TestInstanceOfPattern.java:12:8:12:8 | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:12:8:12:8 | s | -| TestInstanceOfPattern.java:17:25:23:2 | SSA init(obj) | TestInstanceOfPattern.java:18:7:18:9 | obj | +| TestInstanceOfPattern.java:17:25:23:2 | SSA param(obj) | TestInstanceOfPattern.java:18:7:18:9 | obj | | TestInstanceOfPattern.java:18:29:18:29 | SSA def(s) | TestInstanceOfPattern.java:18:34:18:34 | s | -| TestInstanceOfPattern.java:21:8:21:8 | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:21:8:21:8 | s | -| TestInstanceOfPattern.java:24:25:30:2 | SSA init(obj) | TestInstanceOfPattern.java:25:7:25:9 | obj | -| TestInstanceOfPattern.java:24:25:30:2 | SSA init(this.s) | TestInstanceOfPattern.java:25:34:25:34 | s | -| TestInstanceOfPattern.java:24:25:30:2 | SSA init(this.s) | TestInstanceOfPattern.java:26:8:26:8 | s | +| TestInstanceOfPattern.java:24:25:30:2 | SSA entry def(this.s) | TestInstanceOfPattern.java:25:34:25:34 | s | +| TestInstanceOfPattern.java:24:25:30:2 | SSA entry def(this.s) | TestInstanceOfPattern.java:26:8:26:8 | s | +| TestInstanceOfPattern.java:24:25:30:2 | SSA param(obj) | TestInstanceOfPattern.java:25:7:25:9 | obj | diff --git a/java/ql/test/library-tests/ssa/firstUse.ql b/java/ql/test/library-tests/ssa/firstUse.ql index bbb5c2d3e385..d38570744354 100644 --- a/java/ql/test/library-tests/ssa/firstUse.ql +++ b/java/ql/test/library-tests/ssa/firstUse.ql @@ -1,6 +1,6 @@ import java import semmle.code.java.dataflow.SSA -from SsaVariable ssa, VarRead use -where use = ssa.getAFirstUse() +from SsaDefinition ssa, VarRead use +where use = ssaGetAFirstUse(ssa) select ssa, use diff --git a/java/ql/test/library-tests/ssa/ssaDef.expected b/java/ql/test/library-tests/ssa/ssaDef.expected index cac2ada3c519..a10b9d327b27 100644 --- a/java/ql/test/library-tests/ssa/ssaDef.expected +++ b/java/ql/test/library-tests/ssa/ssaDef.expected @@ -1,53 +1,53 @@ | Fields.java:13:5:13:17 | x | Fields.java:15:5:15:10 | ...=... | SSA def(x) | -| Fields.java:13:15:13:16 | this.xs | Fields.java:12:19:21:3 | { ... } | SSA init(this.xs) | -| Fields.java:13:15:13:16 | this.xs | Fields.java:14:5:14:9 | upd(...) | SSA impl upd[nonlocal](this.xs) | -| Fields.java:13:15:13:16 | this.xs | Fields.java:17:7:17:11 | upd(...) | SSA impl upd[nonlocal](this.xs) | +| Fields.java:13:15:13:16 | this.xs | Fields.java:12:19:21:3 | { ... } | SSA entry def(this.xs) | +| Fields.java:13:15:13:16 | this.xs | Fields.java:14:5:14:9 | upd(...) | SSA call def(this.xs) | +| Fields.java:13:15:13:16 | this.xs | Fields.java:17:7:17:11 | upd(...) | SSA call def(this.xs) | | Fields.java:13:15:13:16 | this.xs | Fields.java:18:5:18:16 | ; | SSA phi(this.xs) | | Fields.java:13:15:13:16 | this.xs | Fields.java:19:5:19:19 | ...=... | SSA def(this.xs) | | Fields.java:24:5:24:28 | f | Fields.java:24:12:24:27 | f | SSA def(f) | | Fields.java:24:5:24:28 | f | Fields.java:43:7:43:22 | ...=... | SSA def(f) | | Fields.java:24:5:24:28 | f | Fields.java:44:5:44:13 | ; | SSA phi(f) | -| Fields.java:25:15:25:18 | f.xs | Fields.java:24:12:24:27 | f | SSA impl upd[explicit qualifier](f.xs) | -| Fields.java:25:15:25:18 | f.xs | Fields.java:28:5:28:12 | f(...) | SSA impl upd[nonlocal](f.xs) | -| Fields.java:25:15:25:18 | f.xs | Fields.java:32:5:32:9 | f(...) | SSA impl upd[nonlocal](f.xs) | +| Fields.java:25:15:25:18 | f.xs | Fields.java:24:12:24:27 | f | SSA qualifier def(f.xs) | +| Fields.java:25:15:25:18 | f.xs | Fields.java:28:5:28:12 | f(...) | SSA call def(f.xs) | +| Fields.java:25:15:25:18 | f.xs | Fields.java:32:5:32:9 | f(...) | SSA call def(f.xs) | | Fields.java:25:15:25:18 | f.xs | Fields.java:39:5:39:21 | ...=... | SSA def(f.xs) | -| Fields.java:25:15:25:18 | f.xs | Fields.java:43:7:43:22 | ...=... | SSA impl upd[explicit qualifier](f.xs) | +| Fields.java:25:15:25:18 | f.xs | Fields.java:43:7:43:22 | ...=... | SSA qualifier def(f.xs) | | Fields.java:25:15:25:18 | f.xs | Fields.java:44:5:44:13 | ; | SSA phi(f.xs) | | Fields.java:26:5:26:17 | z | Fields.java:41:5:41:10 | ...=... | SSA def(z) | -| Fields.java:26:15:26:16 | this.xs | Fields.java:23:19:49:3 | { ... } | SSA init(this.xs) | -| Fields.java:26:15:26:16 | this.xs | Fields.java:28:5:28:12 | f(...) | SSA impl upd[nonlocal](this.xs) | -| Fields.java:26:15:26:16 | this.xs | Fields.java:32:5:32:9 | f(...) | SSA impl upd[nonlocal](this.xs) | +| Fields.java:26:15:26:16 | this.xs | Fields.java:23:19:49:3 | { ... } | SSA entry def(this.xs) | +| Fields.java:26:15:26:16 | this.xs | Fields.java:28:5:28:12 | f(...) | SSA call def(this.xs) | +| Fields.java:26:15:26:16 | this.xs | Fields.java:32:5:32:9 | f(...) | SSA call def(this.xs) | | Fields.java:26:15:26:16 | this.xs | Fields.java:36:5:36:19 | ...=... | SSA def(this.xs) | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:23:19:49:3 | { ... } | SSA init(Fields.stat) | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:24:16:24:27 | new Fields(...) | SSA impl upd[nonlocal](Fields.stat) | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:28:5:28:12 | f(...) | SSA impl upd[nonlocal](Fields.stat) | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:32:5:32:9 | f(...) | SSA impl upd[nonlocal](Fields.stat) | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:43:11:43:22 | new Fields(...) | SSA impl upd[nonlocal](Fields.stat) | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:23:19:49:3 | { ... } | SSA entry def(Fields.stat) | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:24:16:24:27 | new Fields(...) | SSA call def(Fields.stat) | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:28:5:28:12 | f(...) | SSA call def(Fields.stat) | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:32:5:32:9 | f(...) | SSA call def(Fields.stat) | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:43:11:43:22 | new Fields(...) | SSA call def(Fields.stat) | | Fields.java:27:15:27:18 | Fields.stat | Fields.java:44:5:44:13 | ; | SSA phi(Fields.stat) | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:45:5:45:16 | new Fields(...) | SSA impl upd[nonlocal](Fields.stat) | -| Nested.java:4:26:4:31 | next(..).p1 | Nested.java:8:29:8:57 | { ... } | SSA init(next(..).p1) | -| Nested.java:4:26:4:31 | p1 | Nested.java:4:34:10:3 | { ... } | SSA init(p1) | -| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA init(next(..).x1) | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:45:5:45:16 | new Fields(...) | SSA call def(Fields.stat) | +| Nested.java:4:26:4:31 | next(..).p1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).p1) | +| Nested.java:4:26:4:31 | p1 | Nested.java:4:34:10:3 | { ... } | SSA param(p1) | +| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).x1) | | Nested.java:5:5:5:15 | x1 | Nested.java:5:9:5:14 | x1 | SSA def(x1) | -| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:16:22:16:34 | { ... } | SSA init(getInt(..).obj) | -| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:20:27:20:39 | { ... } | SSA init(getInt(..).obj) | +| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:16:22:16:34 | { ... } | SSA capture def(getInt(..).obj) | +| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:20:27:20:39 | { ... } | SSA capture def(getInt(..).obj) | | Nested.java:15:5:15:30 | obj | Nested.java:15:12:15:29 | obj | SSA def(obj) | -| Nested.java:16:5:16:35 | getInt(..).hash | Nested.java:19:27:22:7 | { ... } | SSA init(getInt(..).hash) | +| Nested.java:16:5:16:35 | getInt(..).hash | Nested.java:19:27:22:7 | { ... } | SSA capture def(getInt(..).hash) | | Nested.java:16:5:16:35 | hash | Nested.java:16:15:16:34 | hash | SSA def(hash) | -| Nested.java:17:5:17:16 | getInt(..).x2 | Nested.java:19:27:22:7 | { ... } | SSA init(getInt(..).x2) | +| Nested.java:17:5:17:16 | getInt(..).x2 | Nested.java:19:27:22:7 | { ... } | SSA capture def(getInt(..).x2) | | Nested.java:17:5:17:16 | x2 | Nested.java:17:9:17:15 | x2 | SSA def(x2) | | Nested.java:18:5:23:6 | h2 | Nested.java:18:15:23:5 | h2 | SSA def(h2) | | Nested.java:20:9:20:40 | hnest | Nested.java:20:19:20:39 | hnest | SSA def(hnest) | -| Nested.java:24:5:24:31 | getInt(..).obj2 | Nested.java:30:23:30:36 | { ... } | SSA init(getInt(..).obj2) | +| Nested.java:24:5:24:31 | getInt(..).obj2 | Nested.java:30:23:30:36 | { ... } | SSA capture def(getInt(..).obj2) | | Nested.java:24:5:24:31 | obj2 | Nested.java:26:7:26:25 | ...=... | SSA def(obj2) | | Nested.java:24:5:24:31 | obj2 | Nested.java:28:7:28:25 | ...=... | SSA def(obj2) | | Nested.java:24:5:24:31 | obj2 | Nested.java:30:5:30:37 | var ...; | SSA phi(obj2) | -| Nested.java:33:21:33:26 | p3 | Nested.java:33:29:42:3 | { ... } | SSA init(p3) | -| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:37:20:37:25 | { ... } | SSA init(getInt(..).x3) | -| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:40:20:40:25 | { ... } | SSA init(getInt(..).x3) | +| Nested.java:33:21:33:26 | p3 | Nested.java:33:29:42:3 | { ... } | SSA param(p3) | +| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:37:20:37:25 | { ... } | SSA capture def(getInt(..).x3) | +| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:40:20:40:25 | { ... } | SSA capture def(getInt(..).x3) | | Nested.java:34:5:34:11 | x3 | Nested.java:36:7:36:12 | ...=... | SSA def(x3) | | Nested.java:34:5:34:11 | x3 | Nested.java:39:7:39:12 | ...=... | SSA def(x3) | -| Test.java:4:8:4:16 | param | Test.java:4:19:32:2 | { ... } | SSA init(param) | +| Test.java:4:8:4:16 | param | Test.java:4:19:32:2 | { ... } | SSA param(param) | | Test.java:4:8:4:16 | param | Test.java:20:10:20:10 | x | SSA phi(param) | | Test.java:4:8:4:16 | param | Test.java:21:8:21:14 | ...++ | SSA def(param) | | Test.java:6:3:6:12 | x | Test.java:6:7:6:11 | x | SSA def(x) | @@ -65,14 +65,11 @@ | Test.java:27:8:27:16 | i | Test.java:27:12:27:16 | i | SSA def(i) | | Test.java:27:8:27:16 | i | Test.java:27:19:27:19 | i | SSA phi(i) | | Test.java:27:8:27:16 | i | Test.java:27:25:27:27 | ...++ | SSA def(i) | -| TestInstanceOfPattern.java:3:12:3:21 | obj | TestInstanceOfPattern.java:3:24:9:2 | { ... } | SSA init(obj) | +| TestInstanceOfPattern.java:3:12:3:21 | obj | TestInstanceOfPattern.java:3:24:9:2 | { ... } | SSA param(obj) | | TestInstanceOfPattern.java:4:22:4:29 | s | TestInstanceOfPattern.java:4:29:4:29 | s | SSA def(s) | -| TestInstanceOfPattern.java:7:8:7:8 | this.s | TestInstanceOfPattern.java:7:8:7:8 | s | SSA impl upd[untracked](this.s) | -| TestInstanceOfPattern.java:10:13:10:22 | obj | TestInstanceOfPattern.java:10:25:16:2 | { ... } | SSA init(obj) | +| TestInstanceOfPattern.java:10:13:10:22 | obj | TestInstanceOfPattern.java:10:25:16:2 | { ... } | SSA param(obj) | | TestInstanceOfPattern.java:11:24:11:31 | s | TestInstanceOfPattern.java:11:31:11:31 | s | SSA def(s) | -| TestInstanceOfPattern.java:12:8:12:8 | this.s | TestInstanceOfPattern.java:12:8:12:8 | s | SSA impl upd[untracked](this.s) | -| TestInstanceOfPattern.java:17:13:17:22 | obj | TestInstanceOfPattern.java:17:25:23:2 | { ... } | SSA init(obj) | +| TestInstanceOfPattern.java:17:13:17:22 | obj | TestInstanceOfPattern.java:17:25:23:2 | { ... } | SSA param(obj) | | TestInstanceOfPattern.java:18:22:18:29 | s | TestInstanceOfPattern.java:18:29:18:29 | s | SSA def(s) | -| TestInstanceOfPattern.java:21:8:21:8 | this.s | TestInstanceOfPattern.java:21:8:21:8 | s | SSA impl upd[untracked](this.s) | -| TestInstanceOfPattern.java:24:13:24:22 | obj | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA init(obj) | -| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA init(this.s) | +| TestInstanceOfPattern.java:24:13:24:22 | obj | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA param(obj) | +| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA entry def(this.s) | diff --git a/java/ql/test/library-tests/ssa/ssaDef.ql b/java/ql/test/library-tests/ssa/ssaDef.ql index c487c539e782..a0702d58e0b5 100644 --- a/java/ql/test/library-tests/ssa/ssaDef.ql +++ b/java/ql/test/library-tests/ssa/ssaDef.ql @@ -1,7 +1,7 @@ import java import semmle.code.java.dataflow.SSA -from SsaVariable ssa, SsaSourceVariable v, string s +from SsaDefinition ssa, SsaSourceVariable v, string s where ssa.getSourceVariable() = v and ( @@ -9,4 +9,4 @@ where or not exists(ssa.toString()) and s = "error" ) -select v, ssa.getCfgNode(), s +select v, ssa.getControlFlowNode(), s diff --git a/java/ql/test/library-tests/ssa/ssaPhi.ql b/java/ql/test/library-tests/ssa/ssaPhi.ql index 8aa0942e90a0..c896c26b0156 100644 --- a/java/ql/test/library-tests/ssa/ssaPhi.ql +++ b/java/ql/test/library-tests/ssa/ssaPhi.ql @@ -1,6 +1,6 @@ import java import semmle.code.java.dataflow.SSA -from SsaPhiNode ssa, SsaSourceVariable v, SsaVariable phiInput -where ssa.getAPhiInput() = phiInput and ssa.getSourceVariable() = v -select v, ssa.getCfgNode(), phiInput.getCfgNode() +from SsaPhiDefinition ssa, SsaSourceVariable v, SsaDefinition phiInput +where ssa.getAnInput() = phiInput and ssa.getSourceVariable() = v +select v, ssa.getControlFlowNode(), phiInput.getControlFlowNode() diff --git a/java/ql/test/library-tests/ssa/ssaUse.expected b/java/ql/test/library-tests/ssa/ssaUse.expected index f55797b309b8..8525f62a883c 100644 --- a/java/ql/test/library-tests/ssa/ssaUse.expected +++ b/java/ql/test/library-tests/ssa/ssaUse.expected @@ -1,6 +1,6 @@ | Fields.java:13:5:13:17 | x | Fields.java:15:5:15:10 | ...=... | SSA def(x) | Fields.java:16:9:16:9 | x | -| Fields.java:13:15:13:16 | this.xs | Fields.java:12:19:21:3 | { ... } | SSA init(this.xs) | Fields.java:13:15:13:16 | xs | -| Fields.java:13:15:13:16 | this.xs | Fields.java:14:5:14:9 | upd(...) | SSA impl upd[nonlocal](this.xs) | Fields.java:15:9:15:10 | xs | +| Fields.java:13:15:13:16 | this.xs | Fields.java:12:19:21:3 | { ... } | SSA entry def(this.xs) | Fields.java:13:15:13:16 | xs | +| Fields.java:13:15:13:16 | this.xs | Fields.java:14:5:14:9 | upd(...) | SSA call def(this.xs) | Fields.java:15:9:15:10 | xs | | Fields.java:13:15:13:16 | this.xs | Fields.java:18:5:18:16 | ; | SSA phi(this.xs) | Fields.java:18:9:18:15 | this.xs | | Fields.java:13:15:13:16 | this.xs | Fields.java:19:5:19:19 | ...=... | SSA def(this.xs) | Fields.java:20:9:20:10 | xs | | Fields.java:24:5:24:28 | f | Fields.java:24:12:24:27 | f | SSA def(f) | Fields.java:25:15:25:15 | f | @@ -12,39 +12,39 @@ | Fields.java:24:5:24:28 | f | Fields.java:24:12:24:27 | f | SSA def(f) | Fields.java:40:9:40:9 | f | | Fields.java:24:5:24:28 | f | Fields.java:44:5:44:13 | ; | SSA phi(f) | Fields.java:44:9:44:9 | f | | Fields.java:24:5:24:28 | f | Fields.java:44:5:44:13 | ; | SSA phi(f) | Fields.java:46:9:46:9 | f | -| Fields.java:25:15:25:18 | f.xs | Fields.java:24:12:24:27 | f | SSA impl upd[explicit qualifier](f.xs) | Fields.java:25:15:25:18 | f.xs | -| Fields.java:25:15:25:18 | f.xs | Fields.java:28:5:28:12 | f(...) | SSA impl upd[nonlocal](f.xs) | Fields.java:29:9:29:12 | f.xs | -| Fields.java:25:15:25:18 | f.xs | Fields.java:32:5:32:9 | f(...) | SSA impl upd[nonlocal](f.xs) | Fields.java:33:9:33:12 | f.xs | -| Fields.java:25:15:25:18 | f.xs | Fields.java:32:5:32:9 | f(...) | SSA impl upd[nonlocal](f.xs) | Fields.java:37:9:37:12 | f.xs | +| Fields.java:25:15:25:18 | f.xs | Fields.java:24:12:24:27 | f | SSA qualifier def(f.xs) | Fields.java:25:15:25:18 | f.xs | +| Fields.java:25:15:25:18 | f.xs | Fields.java:28:5:28:12 | f(...) | SSA call def(f.xs) | Fields.java:29:9:29:12 | f.xs | +| Fields.java:25:15:25:18 | f.xs | Fields.java:32:5:32:9 | f(...) | SSA call def(f.xs) | Fields.java:33:9:33:12 | f.xs | +| Fields.java:25:15:25:18 | f.xs | Fields.java:32:5:32:9 | f(...) | SSA call def(f.xs) | Fields.java:37:9:37:12 | f.xs | | Fields.java:25:15:25:18 | f.xs | Fields.java:39:5:39:21 | ...=... | SSA def(f.xs) | Fields.java:40:9:40:12 | f.xs | | Fields.java:25:15:25:18 | f.xs | Fields.java:44:5:44:13 | ; | SSA phi(f.xs) | Fields.java:44:9:44:12 | f.xs | | Fields.java:25:15:25:18 | f.xs | Fields.java:44:5:44:13 | ; | SSA phi(f.xs) | Fields.java:46:9:46:12 | f.xs | | Fields.java:26:5:26:17 | z | Fields.java:41:5:41:10 | ...=... | SSA def(z) | Fields.java:42:9:42:9 | z | -| Fields.java:26:15:26:16 | this.xs | Fields.java:23:19:49:3 | { ... } | SSA init(this.xs) | Fields.java:26:15:26:16 | xs | -| Fields.java:26:15:26:16 | this.xs | Fields.java:28:5:28:12 | f(...) | SSA impl upd[nonlocal](this.xs) | Fields.java:30:9:30:10 | xs | -| Fields.java:26:15:26:16 | this.xs | Fields.java:32:5:32:9 | f(...) | SSA impl upd[nonlocal](this.xs) | Fields.java:34:9:34:10 | xs | +| Fields.java:26:15:26:16 | this.xs | Fields.java:23:19:49:3 | { ... } | SSA entry def(this.xs) | Fields.java:26:15:26:16 | xs | +| Fields.java:26:15:26:16 | this.xs | Fields.java:28:5:28:12 | f(...) | SSA call def(this.xs) | Fields.java:30:9:30:10 | xs | +| Fields.java:26:15:26:16 | this.xs | Fields.java:32:5:32:9 | f(...) | SSA call def(this.xs) | Fields.java:34:9:34:10 | xs | | Fields.java:26:15:26:16 | this.xs | Fields.java:36:5:36:19 | ...=... | SSA def(this.xs) | Fields.java:38:9:38:10 | xs | | Fields.java:26:15:26:16 | this.xs | Fields.java:36:5:36:19 | ...=... | SSA def(this.xs) | Fields.java:41:9:41:10 | xs | | Fields.java:26:15:26:16 | this.xs | Fields.java:36:5:36:19 | ...=... | SSA def(this.xs) | Fields.java:47:9:47:10 | xs | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:24:16:24:27 | new Fields(...) | SSA impl upd[nonlocal](Fields.stat) | Fields.java:27:15:27:18 | stat | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:28:5:28:12 | f(...) | SSA impl upd[nonlocal](Fields.stat) | Fields.java:31:9:31:12 | stat | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:32:5:32:9 | f(...) | SSA impl upd[nonlocal](Fields.stat) | Fields.java:35:9:35:12 | stat | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:45:5:45:16 | new Fields(...) | SSA impl upd[nonlocal](Fields.stat) | Fields.java:48:9:48:12 | stat | -| Nested.java:4:26:4:31 | next(..).p1 | Nested.java:8:29:8:57 | { ... } | SSA init(next(..).p1) | Nested.java:8:38:8:39 | p1 | -| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA init(next(..).x1) | Nested.java:8:43:8:44 | x1 | -| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA init(next(..).x1) | Nested.java:8:48:8:49 | x1 | -| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA init(next(..).x1) | Nested.java:8:53:8:54 | x1 | -| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:16:22:16:34 | { ... } | SSA init(getInt(..).obj) | Nested.java:16:22:16:24 | obj | -| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:20:27:20:39 | { ... } | SSA init(getInt(..).obj) | Nested.java:20:27:20:29 | obj | -| Nested.java:16:5:16:35 | getInt(..).hash | Nested.java:19:27:22:7 | { ... } | SSA init(getInt(..).hash) | Nested.java:21:21:21:24 | hash | -| Nested.java:17:5:17:16 | getInt(..).x2 | Nested.java:19:27:22:7 | { ... } | SSA init(getInt(..).x2) | Nested.java:21:16:21:17 | x2 | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:24:16:24:27 | new Fields(...) | SSA call def(Fields.stat) | Fields.java:27:15:27:18 | stat | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:28:5:28:12 | f(...) | SSA call def(Fields.stat) | Fields.java:31:9:31:12 | stat | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:32:5:32:9 | f(...) | SSA call def(Fields.stat) | Fields.java:35:9:35:12 | stat | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:45:5:45:16 | new Fields(...) | SSA call def(Fields.stat) | Fields.java:48:9:48:12 | stat | +| Nested.java:4:26:4:31 | next(..).p1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).p1) | Nested.java:8:38:8:39 | p1 | +| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).x1) | Nested.java:8:43:8:44 | x1 | +| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).x1) | Nested.java:8:48:8:49 | x1 | +| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).x1) | Nested.java:8:53:8:54 | x1 | +| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:16:22:16:34 | { ... } | SSA capture def(getInt(..).obj) | Nested.java:16:22:16:24 | obj | +| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:20:27:20:39 | { ... } | SSA capture def(getInt(..).obj) | Nested.java:20:27:20:29 | obj | +| Nested.java:16:5:16:35 | getInt(..).hash | Nested.java:19:27:22:7 | { ... } | SSA capture def(getInt(..).hash) | Nested.java:21:21:21:24 | hash | +| Nested.java:17:5:17:16 | getInt(..).x2 | Nested.java:19:27:22:7 | { ... } | SSA capture def(getInt(..).x2) | Nested.java:21:16:21:17 | x2 | | Nested.java:18:5:23:6 | h2 | Nested.java:18:15:23:5 | h2 | SSA def(h2) | Nested.java:25:9:25:10 | h2 | | Nested.java:20:9:20:40 | hnest | Nested.java:20:19:20:39 | hnest | SSA def(hnest) | Nested.java:21:37:21:41 | hnest | -| Nested.java:24:5:24:31 | getInt(..).obj2 | Nested.java:30:23:30:36 | { ... } | SSA init(getInt(..).obj2) | Nested.java:30:23:30:26 | obj2 | -| Nested.java:33:21:33:26 | p3 | Nested.java:33:29:42:3 | { ... } | SSA init(p3) | Nested.java:35:9:35:10 | p3 | -| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:37:20:37:25 | { ... } | SSA init(getInt(..).x3) | Nested.java:37:20:37:21 | x3 | -| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:40:20:40:25 | { ... } | SSA init(getInt(..).x3) | Nested.java:40:20:40:21 | x3 | -| Test.java:4:8:4:16 | param | Test.java:4:19:32:2 | { ... } | SSA init(param) | Test.java:9:7:9:11 | param | +| Nested.java:24:5:24:31 | getInt(..).obj2 | Nested.java:30:23:30:36 | { ... } | SSA capture def(getInt(..).obj2) | Nested.java:30:23:30:26 | obj2 | +| Nested.java:33:21:33:26 | p3 | Nested.java:33:29:42:3 | { ... } | SSA param(p3) | Nested.java:35:9:35:10 | p3 | +| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:37:20:37:25 | { ... } | SSA capture def(getInt(..).x3) | Nested.java:37:20:37:21 | x3 | +| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:40:20:40:25 | { ... } | SSA capture def(getInt(..).x3) | Nested.java:40:20:40:21 | x3 | +| Test.java:4:8:4:16 | param | Test.java:4:19:32:2 | { ... } | SSA param(param) | Test.java:9:7:9:11 | param | | Test.java:4:8:4:16 | param | Test.java:20:10:20:10 | x | SSA phi(param) | Test.java:21:8:21:12 | param | | Test.java:6:3:6:12 | x | Test.java:6:7:6:11 | x | SSA def(x) | Test.java:10:4:10:4 | x | | Test.java:6:3:6:12 | x | Test.java:10:4:10:6 | ...++ | SSA def(x) | Test.java:11:10:11:10 | x | @@ -58,17 +58,14 @@ | Test.java:27:8:27:16 | i | Test.java:27:19:27:19 | i | SSA phi(i) | Test.java:27:19:27:19 | i | | Test.java:27:8:27:16 | i | Test.java:27:19:27:19 | i | SSA phi(i) | Test.java:27:25:27:25 | i | | Test.java:27:8:27:16 | i | Test.java:27:19:27:19 | i | SSA phi(i) | Test.java:28:9:28:9 | i | -| TestInstanceOfPattern.java:3:12:3:21 | obj | TestInstanceOfPattern.java:3:24:9:2 | { ... } | SSA init(obj) | TestInstanceOfPattern.java:4:7:4:9 | obj | +| TestInstanceOfPattern.java:3:12:3:21 | obj | TestInstanceOfPattern.java:3:24:9:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:4:7:4:9 | obj | | TestInstanceOfPattern.java:4:22:4:29 | s | TestInstanceOfPattern.java:4:29:4:29 | s | SSA def(s) | TestInstanceOfPattern.java:5:8:5:8 | s | -| TestInstanceOfPattern.java:7:8:7:8 | this.s | TestInstanceOfPattern.java:7:8:7:8 | s | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:7:8:7:8 | s | -| TestInstanceOfPattern.java:10:13:10:22 | obj | TestInstanceOfPattern.java:10:25:16:2 | { ... } | SSA init(obj) | TestInstanceOfPattern.java:11:9:11:11 | obj | +| TestInstanceOfPattern.java:10:13:10:22 | obj | TestInstanceOfPattern.java:10:25:16:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:11:9:11:11 | obj | | TestInstanceOfPattern.java:11:24:11:31 | s | TestInstanceOfPattern.java:11:31:11:31 | s | SSA def(s) | TestInstanceOfPattern.java:14:8:14:8 | s | -| TestInstanceOfPattern.java:12:8:12:8 | this.s | TestInstanceOfPattern.java:12:8:12:8 | s | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:12:8:12:8 | s | -| TestInstanceOfPattern.java:17:13:17:22 | obj | TestInstanceOfPattern.java:17:25:23:2 | { ... } | SSA init(obj) | TestInstanceOfPattern.java:18:7:18:9 | obj | +| TestInstanceOfPattern.java:17:13:17:22 | obj | TestInstanceOfPattern.java:17:25:23:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:18:7:18:9 | obj | | TestInstanceOfPattern.java:18:22:18:29 | s | TestInstanceOfPattern.java:18:29:18:29 | s | SSA def(s) | TestInstanceOfPattern.java:18:34:18:34 | s | | TestInstanceOfPattern.java:18:22:18:29 | s | TestInstanceOfPattern.java:18:29:18:29 | s | SSA def(s) | TestInstanceOfPattern.java:19:8:19:8 | s | -| TestInstanceOfPattern.java:21:8:21:8 | this.s | TestInstanceOfPattern.java:21:8:21:8 | s | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:21:8:21:8 | s | -| TestInstanceOfPattern.java:24:13:24:22 | obj | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA init(obj) | TestInstanceOfPattern.java:25:7:25:9 | obj | -| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA init(this.s) | TestInstanceOfPattern.java:25:34:25:34 | s | -| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA init(this.s) | TestInstanceOfPattern.java:26:8:26:8 | s | -| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA init(this.s) | TestInstanceOfPattern.java:28:8:28:8 | s | +| TestInstanceOfPattern.java:24:13:24:22 | obj | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:25:7:25:9 | obj | +| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA entry def(this.s) | TestInstanceOfPattern.java:25:34:25:34 | s | +| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA entry def(this.s) | TestInstanceOfPattern.java:26:8:26:8 | s | +| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA entry def(this.s) | TestInstanceOfPattern.java:28:8:28:8 | s | diff --git a/java/ql/test/library-tests/ssa/ssaUse.ql b/java/ql/test/library-tests/ssa/ssaUse.ql index cab6f47c9555..7bcec95cab88 100644 --- a/java/ql/test/library-tests/ssa/ssaUse.ql +++ b/java/ql/test/library-tests/ssa/ssaUse.ql @@ -1,6 +1,6 @@ import java import semmle.code.java.dataflow.SSA -from SsaVariable ssa, SsaSourceVariable v, Expr use -where use = ssa.getAUse() and ssa.getSourceVariable() = v -select v, ssa.getCfgNode(), ssa.toString(), use +from SsaDefinition ssa, SsaSourceVariable v, Expr use +where use = ssa.getARead() and ssa.getSourceVariable() = v +select v, ssa.getControlFlowNode(), ssa.toString(), use diff --git a/java/ql/test/query-tests/Nullness/C.java b/java/ql/test/query-tests/Nullness/C.java index 881185abd237..edd64cfa79b5 100644 --- a/java/ql/test/query-tests/Nullness/C.java +++ b/java/ql/test/query-tests/Nullness/C.java @@ -254,4 +254,15 @@ public void ex18(boolean b, int[] xs, Object related) { xs[0] = 42; // OK } } + + public void ex19(Object t, Object x) { + boolean b = t != null || x != null; + if (b) { + if (t != null) { + t.hashCode(); // OK + } else { + x.hashCode(); // OK + } + } + } } diff --git a/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected b/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected index e32ff5654e25..54f1e9f8a5aa 100644 --- a/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected +++ b/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected @@ -1,15 +1,28 @@ #select -| Test.java:7:21:7:53 | ... + ... | Test.java:7:46:7:53 | password : String | Test.java:7:21:7:53 | ... + ... | This $@ is written to a log file. | Test.java:7:46:7:53 | password | potentially sensitive information | -| Test.java:8:22:8:52 | ... + ... | Test.java:8:44:8:52 | authToken : String | Test.java:8:22:8:52 | ... + ... | This $@ is written to a log file. | Test.java:8:44:8:52 | authToken | potentially sensitive information | +| Test.java:11:21:11:53 | ... + ... | Test.java:11:46:11:53 | password : String | Test.java:11:21:11:53 | ... + ... | This $@ is written to a log file. | Test.java:11:46:11:53 | password | potentially sensitive information | +| Test.java:12:22:12:52 | ... + ... | Test.java:12:44:12:52 | authToken : String | Test.java:12:22:12:52 | ... + ... | This $@ is written to a log file. | Test.java:12:44:12:52 | authToken | potentially sensitive information | +| Test.java:21:22:21:75 | ... + ... | Test.java:21:44:21:52 | authToken : String | Test.java:21:22:21:75 | ... + ... | This $@ is written to a log file. | Test.java:21:44:21:52 | authToken | potentially sensitive information | +| Test.java:22:22:22:75 | ... + ... | Test.java:22:44:22:52 | authToken : String | Test.java:22:22:22:75 | ... + ... | This $@ is written to a log file. | Test.java:22:44:22:52 | authToken | potentially sensitive information | edges -| Test.java:7:46:7:53 | password : String | Test.java:7:21:7:53 | ... + ... | provenance | Sink:MaD:2 | -| Test.java:8:44:8:52 | authToken : String | Test.java:8:22:8:52 | ... + ... | provenance | Sink:MaD:1 | +| Test.java:11:46:11:53 | password : String | Test.java:11:21:11:53 | ... + ... | provenance | Sink:MaD:2 | +| Test.java:12:44:12:52 | authToken : String | Test.java:12:22:12:52 | ... + ... | provenance | Sink:MaD:1 | +| Test.java:21:44:21:52 | authToken : String | Test.java:21:44:21:67 | substring(...) : String | provenance | MaD:3 | +| Test.java:21:44:21:67 | substring(...) : String | Test.java:21:22:21:75 | ... + ... | provenance | Sink:MaD:1 | +| Test.java:22:44:22:52 | authToken : String | Test.java:22:44:22:67 | substring(...) : String | provenance | MaD:3 | +| Test.java:22:44:22:67 | substring(...) : String | Test.java:22:22:22:75 | ... + ... | provenance | Sink:MaD:1 | models | 1 | Sink: org.apache.logging.log4j; Logger; true; error; (String); ; Argument[0]; log-injection; manual | | 2 | Sink: org.apache.logging.log4j; Logger; true; info; (String); ; Argument[0]; log-injection; manual | +| 3 | Summary: java.lang; String; false; substring; ; ; Argument[this]; ReturnValue; taint; manual | nodes -| Test.java:7:21:7:53 | ... + ... | semmle.label | ... + ... | -| Test.java:7:46:7:53 | password : String | semmle.label | password : String | -| Test.java:8:22:8:52 | ... + ... | semmle.label | ... + ... | -| Test.java:8:44:8:52 | authToken : String | semmle.label | authToken : String | +| Test.java:11:21:11:53 | ... + ... | semmle.label | ... + ... | +| Test.java:11:46:11:53 | password : String | semmle.label | password : String | +| Test.java:12:22:12:52 | ... + ... | semmle.label | ... + ... | +| Test.java:12:44:12:52 | authToken : String | semmle.label | authToken : String | +| Test.java:21:22:21:75 | ... + ... | semmle.label | ... + ... | +| Test.java:21:44:21:52 | authToken : String | semmle.label | authToken : String | +| Test.java:21:44:21:67 | substring(...) : String | semmle.label | substring(...) : String | +| Test.java:22:22:22:75 | ... + ... | semmle.label | ... + ... | +| Test.java:22:44:22:52 | authToken : String | semmle.label | authToken : String | +| Test.java:22:44:22:67 | substring(...) : String | semmle.label | substring(...) : String | subpaths diff --git a/java/ql/test/query-tests/security/CWE-532/Test.java b/java/ql/test/query-tests/security/CWE-532/Test.java index cf983afc287d..6521f7e2df79 100644 --- a/java/ql/test/query-tests/security/CWE-532/Test.java +++ b/java/ql/test/query-tests/security/CWE-532/Test.java @@ -3,11 +3,22 @@ class Test { void test(String password, String authToken, String username, String nullToken, String stringTokenizer) { Logger logger = null; + int zero = 0; + int four = 4; + short zeroS = 0; + long fourL = 4L; logger.info("User's password is: " + password); // $ Alert logger.error("Auth failed for: " + authToken); // $ Alert logger.error("Auth failed for: " + username); // Safe logger.error("Auth failed for: " + nullToken); // Safe logger.error("Auth failed for: " + stringTokenizer); // Safe + logger.error("Auth failed for: " + authToken.substring(4) + "..."); // Safe + logger.error("Auth failed for: " + authToken.substring(four) + "..."); // Safe + logger.error("Auth failed for: " + authToken.substring(0,4) + "..."); // Safe + logger.error("Auth failed for: " + authToken.substring(zero,four) + "..."); // Safe + logger.error("Auth failed for: " + authToken.substring((int)zeroS,(int)fourL) + "..."); // Safe + logger.error("Auth failed for: " + authToken.substring(1,5) + "..."); // $ Alert + logger.error("Auth failed for: " + authToken.substring(0,8) + "..."); // $ Alert } } diff --git a/javascript/extractor/src/com/semmle/jcorn/Parser.java b/javascript/extractor/src/com/semmle/jcorn/Parser.java index 63f49e148911..b0bc89645597 100644 --- a/javascript/extractor/src/com/semmle/jcorn/Parser.java +++ b/javascript/extractor/src/com/semmle/jcorn/Parser.java @@ -286,6 +286,7 @@ protected void raise(int pos, String msg) { raise(pos, msg, false); } + @SuppressWarnings("ReturnValueIgnored") protected void raise(Position loc, String msg, boolean recoverable) { msg += " (" + loc.getLine() + ":" + loc.getColumn() + ")"; SyntaxError err = new SyntaxError(msg, loc, this.pos); @@ -3114,7 +3115,7 @@ protected BlockStatement parseBlock(boolean allowStrict) { } first = false; } - if (oldStrict == Boolean.FALSE) this.setStrict(false); + if (Boolean.FALSE.equals(oldStrict)) this.setStrict(false); return this.finishNode(new BlockStatement(new SourceLocation(startLoc), body)); } diff --git a/javascript/extractor/src/com/semmle/jcorn/flow/FlowParser.java b/javascript/extractor/src/com/semmle/jcorn/flow/FlowParser.java index cb2dad0f978a..7475994c27ed 100644 --- a/javascript/extractor/src/com/semmle/jcorn/flow/FlowParser.java +++ b/javascript/extractor/src/com/semmle/jcorn/flow/FlowParser.java @@ -141,6 +141,7 @@ private void reset() { options.onRecoverableError(this.onRecoverableError); } + @SuppressWarnings("ReturnValueIgnored") private void commit() { // commit buffered tokens options.onToken(this.onToken); diff --git a/javascript/extractor/src/com/semmle/js/ast/AFunctionExpression.java b/javascript/extractor/src/com/semmle/js/ast/AFunctionExpression.java index e097be125cf8..1546d6f3b1f7 100644 --- a/javascript/extractor/src/com/semmle/js/ast/AFunctionExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/AFunctionExpression.java @@ -35,8 +35,8 @@ public AFunctionExpression( id, params, body, - generator == Boolean.TRUE, - async == Boolean.TRUE, + Boolean.TRUE.equals(generator), + Boolean.TRUE.equals(async), typeParameters, parameterTypes, parameterDecorators, diff --git a/javascript/extractor/src/com/semmle/js/ast/ComprehensionBlock.java b/javascript/extractor/src/com/semmle/js/ast/ComprehensionBlock.java index 4c767c5fbed0..4fcf9421a745 100644 --- a/javascript/extractor/src/com/semmle/js/ast/ComprehensionBlock.java +++ b/javascript/extractor/src/com/semmle/js/ast/ComprehensionBlock.java @@ -10,7 +10,7 @@ public ComprehensionBlock(SourceLocation loc, IPattern left, Expression right, B super("ComprehensionBlock", loc); this.left = left; this.right = right; - this.of = of != Boolean.FALSE; + this.of = !Boolean.FALSE.equals(of); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/ComprehensionExpression.java b/javascript/extractor/src/com/semmle/js/ast/ComprehensionExpression.java index b95d9ead5ff2..3aa9feb1b312 100644 --- a/javascript/extractor/src/com/semmle/js/ast/ComprehensionExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/ComprehensionExpression.java @@ -19,7 +19,7 @@ public ComprehensionExpression( this.body = body; this.blocks = blocks; this.filter = filter; - this.generator = generator == Boolean.TRUE; + this.generator = Boolean.TRUE.equals(generator); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/ForInStatement.java b/javascript/extractor/src/com/semmle/js/ast/ForInStatement.java index 579a6198fe12..cffba4781a9b 100644 --- a/javascript/extractor/src/com/semmle/js/ast/ForInStatement.java +++ b/javascript/extractor/src/com/semmle/js/ast/ForInStatement.java @@ -16,7 +16,7 @@ public class ForInStatement extends EnhancedForStatement { public ForInStatement( SourceLocation loc, Node left, Expression right, Statement body, Boolean each) { super("ForInStatement", loc, left, right, body); - this.each = each == Boolean.TRUE; + this.each = Boolean.TRUE.equals(each); } public boolean isEach() { diff --git a/javascript/extractor/src/com/semmle/js/ast/InvokeExpression.java b/javascript/extractor/src/com/semmle/js/ast/InvokeExpression.java index 534f9ffb2121..5d59be92f1b5 100644 --- a/javascript/extractor/src/com/semmle/js/ast/InvokeExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/InvokeExpression.java @@ -27,8 +27,8 @@ public InvokeExpression( this.callee = callee; this.typeArguments = typeArguments; this.arguments = arguments; - this.optional = optional == Boolean.TRUE; - this.onOptionalChain = onOptionalChain == Boolean.TRUE; + this.optional = Boolean.TRUE.equals(optional); + this.onOptionalChain = Boolean.TRUE.equals(onOptionalChain); } /** The callee expression of this invocation. */ diff --git a/javascript/extractor/src/com/semmle/js/ast/Literal.java b/javascript/extractor/src/com/semmle/js/ast/Literal.java index 3c53798b8512..f513adc14b56 100644 --- a/javascript/extractor/src/com/semmle/js/ast/Literal.java +++ b/javascript/extractor/src/com/semmle/js/ast/Literal.java @@ -76,7 +76,7 @@ public boolean isFalsy() { if (isRegExp()) return false; return value == null || value instanceof Number && ((Number) value).intValue() == 0 - || value == Boolean.FALSE + || Boolean.FALSE.equals(value) || value instanceof String && ((String) value).isEmpty(); } diff --git a/javascript/extractor/src/com/semmle/js/ast/MemberExpression.java b/javascript/extractor/src/com/semmle/js/ast/MemberExpression.java index b540decd48e7..342fe4c1fd2a 100644 --- a/javascript/extractor/src/com/semmle/js/ast/MemberExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/MemberExpression.java @@ -22,9 +22,9 @@ public MemberExpression( super("MemberExpression", loc); this.object = object; this.property = property; - this.computed = computed == Boolean.TRUE; - this.optional = optional == Boolean.TRUE; - this.onOptionalChain = onOptionalChain == Boolean.TRUE; + this.computed = Boolean.TRUE.equals(computed); + this.optional = Boolean.TRUE.equals(optional); + this.onOptionalChain = Boolean.TRUE.equals(onOptionalChain); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/Property.java b/javascript/extractor/src/com/semmle/js/ast/Property.java index b4da797e76d2..7f986161fde3 100644 --- a/javascript/extractor/src/com/semmle/js/ast/Property.java +++ b/javascript/extractor/src/com/semmle/js/ast/Property.java @@ -59,8 +59,8 @@ public Property( } this.rawValue = rawValue; this.kind = Kind.valueOf(StringUtil.uc(kind)); - this.computed = computed == Boolean.TRUE; - this.method = method == Boolean.TRUE; + this.computed = Boolean.TRUE.equals(computed); + this.method = Boolean.TRUE.equals(method); this.decorators = new ArrayList(); } diff --git a/javascript/extractor/src/com/semmle/js/ast/TemplateElement.java b/javascript/extractor/src/com/semmle/js/ast/TemplateElement.java index afebf51e7ee5..3fb8556e2735 100644 --- a/javascript/extractor/src/com/semmle/js/ast/TemplateElement.java +++ b/javascript/extractor/src/com/semmle/js/ast/TemplateElement.java @@ -10,7 +10,7 @@ public TemplateElement(SourceLocation loc, Object cooked, String raw, Boolean ta super("TemplateElement", loc); this.cooked = cooked; this.raw = raw; - this.tail = tail == Boolean.TRUE; + this.tail = Boolean.TRUE.equals(tail); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/UnaryExpression.java b/javascript/extractor/src/com/semmle/js/ast/UnaryExpression.java index c0a77e3bc774..32f43bad1237 100644 --- a/javascript/extractor/src/com/semmle/js/ast/UnaryExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/UnaryExpression.java @@ -14,7 +14,7 @@ public UnaryExpression(SourceLocation loc, String operator, Expression argument, super("UnaryExpression", loc); this.operator = operator; this.argument = argument; - this.prefix = prefix == Boolean.TRUE; + this.prefix = Boolean.TRUE.equals(prefix); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/UpdateExpression.java b/javascript/extractor/src/com/semmle/js/ast/UpdateExpression.java index 59a3880a3ee5..1c69a1dd1501 100644 --- a/javascript/extractor/src/com/semmle/js/ast/UpdateExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/UpdateExpression.java @@ -11,7 +11,7 @@ public UpdateExpression( super("UpdateExpression", loc); this.operator = operator; this.argument = argument; - this.prefix = prefix == Boolean.TRUE; + this.prefix = Boolean.TRUE.equals(prefix); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/YieldExpression.java b/javascript/extractor/src/com/semmle/js/ast/YieldExpression.java index c8c681d24932..abd5fd13d110 100644 --- a/javascript/extractor/src/com/semmle/js/ast/YieldExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/YieldExpression.java @@ -8,7 +8,7 @@ public class YieldExpression extends Expression { public YieldExpression(SourceLocation loc, Expression argument, Boolean delegating) { super("YieldExpression", loc); this.argument = argument; - this.delegating = delegating == Boolean.TRUE; + this.delegating = Boolean.TRUE.equals(delegating); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java b/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java index d9298243be0f..c344f9437208 100644 --- a/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java +++ b/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java @@ -18,7 +18,7 @@ public FunctionType( JSDocTypeExpression result) { super(loc, "FunctionType"); this._this = _this; - this._new = _new == Boolean.TRUE; + this._new = Boolean.TRUE.equals(_new); this.params = params; this.result = result; } diff --git a/javascript/extractor/src/com/semmle/js/ast/jsdoc/UnaryTypeConstructor.java b/javascript/extractor/src/com/semmle/js/ast/jsdoc/UnaryTypeConstructor.java index dcded09e66d2..1489f9242517 100644 --- a/javascript/extractor/src/com/semmle/js/ast/jsdoc/UnaryTypeConstructor.java +++ b/javascript/extractor/src/com/semmle/js/ast/jsdoc/UnaryTypeConstructor.java @@ -19,7 +19,7 @@ public UnaryTypeConstructor( String operator) { super(loc, type); this.expression = expression; - this.prefix = prefix == Boolean.TRUE; + this.prefix = Boolean.TRUE.equals(prefix); this.operator = operator; } diff --git a/javascript/extractor/src/com/semmle/js/ast/regexp/CharacterClass.java b/javascript/extractor/src/com/semmle/js/ast/regexp/CharacterClass.java index 6a46830d851b..a0d5812efe66 100644 --- a/javascript/extractor/src/com/semmle/js/ast/regexp/CharacterClass.java +++ b/javascript/extractor/src/com/semmle/js/ast/regexp/CharacterClass.java @@ -11,7 +11,7 @@ public class CharacterClass extends RegExpTerm { public CharacterClass(SourceLocation loc, List elements, Boolean inverted) { super(loc, "CharacterClass"); this.elements = elements; - this.inverted = inverted == Boolean.TRUE; + this.inverted = Boolean.TRUE.equals(inverted); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/regexp/Quantifier.java b/javascript/extractor/src/com/semmle/js/ast/regexp/Quantifier.java index 54fd40168d26..18058c73fb15 100644 --- a/javascript/extractor/src/com/semmle/js/ast/regexp/Quantifier.java +++ b/javascript/extractor/src/com/semmle/js/ast/regexp/Quantifier.java @@ -10,7 +10,7 @@ public abstract class Quantifier extends RegExpTerm { public Quantifier(SourceLocation loc, String type, RegExpTerm operand, Boolean greedy) { super(loc, type); this.operand = operand; - this.greedy = greedy == Boolean.TRUE; + this.greedy = Boolean.TRUE.equals(greedy); } /** The quantified term. */ diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 9f27fdae99c4..b36b8f521a07 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,21 @@ +## 2.6.18 + +No user-facing changes. + +## 2.6.17 + +No user-facing changes. + +## 2.6.16 + +### Minor Analysis Improvements + +- JavaScript `DataFlow::globalVarRef` now recognizes `document.defaultView` as an alias of `window`, allowing flows such as `document.defaultView.history.pushState(...)` to be modeled and found by queries relying on `globalVarRef("history")`. + +## 2.6.15 + +No user-facing changes. + ## 2.6.14 No user-facing changes. diff --git a/javascript/ql/lib/Expressions/ExprHasNoEffect.qll b/javascript/ql/lib/Expressions/ExprHasNoEffect.qll index 9813d9b32ed9..86f9d4133d88 100644 --- a/javascript/ql/lib/Expressions/ExprHasNoEffect.qll +++ b/javascript/ql/lib/Expressions/ExprHasNoEffect.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for the 'js/useless-expression' query. */ +overlay[local?] +module; import javascript import DOMProperties @@ -60,6 +62,7 @@ predicate isDeclaration(Expr e) { /** * Holds if there exists a getter for a property called `name` anywhere in the program. */ +overlay[global] predicate isGetterProperty(string name) { // there is a call of the form `Object.defineProperty(..., name, descriptor)` ... exists(CallToObjectDefineProperty defProp | name = defProp.getPropertyName() | @@ -85,6 +88,7 @@ predicate isGetterProperty(string name) { /** * A property access that may invoke a getter. */ +overlay[global] class GetterPropertyAccess extends PropAccess { override predicate isImpure() { isGetterProperty(this.getPropertyName()) } } @@ -123,6 +127,7 @@ predicate isReceiverSuppressingCall(CallExpr c, Expr dummy, PropAccess callee) { * even if they do, the call itself is useless and should be flagged by this * query. */ +overlay[global] predicate noSideEffects(Expr e) { e.isPure() or @@ -148,6 +153,7 @@ predicate isCompoundExpression(Expr e) { /** * Holds if the expression `e` should be reported as having no effect. */ +overlay[global] predicate hasNoEffect(Expr e) { noSideEffects(e) and inVoidContext(e) and diff --git a/javascript/ql/lib/LanguageFeatures/UnusedIndexVariable.qll b/javascript/ql/lib/LanguageFeatures/UnusedIndexVariable.qll index ed53158d51c9..c9905d98fccc 100644 --- a/javascript/ql/lib/LanguageFeatures/UnusedIndexVariable.qll +++ b/javascript/ql/lib/LanguageFeatures/UnusedIndexVariable.qll @@ -1,6 +1,8 @@ /** * Provides a predicate for identifying unused index variables in loops. */ +overlay[local?] +module; import javascript diff --git a/javascript/ql/lib/change-notes/released/2.6.15.md b/javascript/ql/lib/change-notes/released/2.6.15.md new file mode 100644 index 000000000000..f69028c68915 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.6.15.md @@ -0,0 +1,3 @@ +## 2.6.15 + +No user-facing changes. diff --git a/javascript/ql/lib/change-notes/released/2.6.16.md b/javascript/ql/lib/change-notes/released/2.6.16.md new file mode 100644 index 000000000000..61f372759bf6 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.6.16.md @@ -0,0 +1,5 @@ +## 2.6.16 + +### Minor Analysis Improvements + +- JavaScript `DataFlow::globalVarRef` now recognizes `document.defaultView` as an alias of `window`, allowing flows such as `document.defaultView.history.pushState(...)` to be modeled and found by queries relying on `globalVarRef("history")`. diff --git a/javascript/ql/lib/change-notes/released/2.6.17.md b/javascript/ql/lib/change-notes/released/2.6.17.md new file mode 100644 index 000000000000..b421ccb0379b --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.6.17.md @@ -0,0 +1,3 @@ +## 2.6.17 + +No user-facing changes. diff --git a/javascript/ql/lib/change-notes/released/2.6.18.md b/javascript/ql/lib/change-notes/released/2.6.18.md new file mode 100644 index 000000000000..d04860dce6b7 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.6.18.md @@ -0,0 +1,3 @@ +## 2.6.18 + +No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 022aeff4e02f..ce85aee60d13 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.6.14 +lastReleaseVersion: 2.6.18 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 46e5661f216e..c0553e5c29cc 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.14 +version: 2.6.18 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/lib/semmle/javascript/AMD.qll b/javascript/ql/lib/semmle/javascript/AMD.qll index 4828aff27cc4..479be828f926 100644 --- a/javascript/ql/lib/semmle/javascript/AMD.qll +++ b/javascript/ql/lib/semmle/javascript/AMD.qll @@ -2,6 +2,8 @@ * Provides classes for working with * [Asynchronous Module Definitions](https://github.com/amdjs/amdjs-api/wiki/AMD). */ +overlay[local?] +module; import javascript private import semmle.javascript.internal.CachedStages @@ -62,9 +64,11 @@ class AmdModuleDefinition extends CallExpr instanceof AmdModuleDefinition::Range } /** DEPRECATED. Use `getDependencyExpr` instead. */ + overlay[global] deprecated PathExpr getDependency(int i) { result = this.getDependencyExpr(i) } /** DEPRECATED. Use `getADependencyExpr` instead. */ + overlay[global] deprecated PathExpr getADependency() { result = this.getADependencyExpr() } /** Gets the `i`th dependency of this module definition. */ @@ -194,16 +198,19 @@ class AmdModuleDefinition extends CallExpr instanceof AmdModuleDefinition::Range * Gets an abstract value representing one or more values that may flow * into this module's `module.exports` property. */ + overlay[global] DefiniteAbstractValue getAModuleExportsValue() { result = [this.getAnImplicitExportsValue(), this.getAnExplicitExportsValue()] } + overlay[global] pragma[noinline, nomagic] private AbstractValue getAnImplicitExportsValue() { // implicit exports: anything that is returned from the factory function result = this.getModuleExpr().analyze().getAValue() } + overlay[global] pragma[noinline] private AbstractValue getAnExplicitExportsValue() { // explicit exports: anything assigned to `module.exports` @@ -227,6 +234,7 @@ class AmdModuleDefinition extends CallExpr instanceof AmdModuleDefinition::Range private predicate isPseudoDependency(string s) { s = ["exports", "require", "module"] } /** An AMD dependency, considered as a path expression. */ +overlay[global] private class AmdDependencyPath extends PathExprCandidate { AmdDependencyPath() { exists(AmdModuleDefinition amd | @@ -239,6 +247,7 @@ private class AmdDependencyPath extends PathExprCandidate { } /** A constant path element appearing in an AMD dependency expression. */ +overlay[global] deprecated private class ConstantAmdDependencyPathElement extends PathExpr, ConstantString { ConstantAmdDependencyPathElement() { this = any(AmdDependencyPath amd).getAPart() } @@ -281,6 +290,7 @@ private class AmdDependencyImport extends Import { * Specifically, we look for files whose absolute path ends with the imported path, possibly * adding well-known JavaScript file extensions like `.js`. */ + overlay[global] private File guessTarget() { exists(FilePath imported, string abspath, string dirname, string basename | this.targetCandidate(result, abspath, imported, dirname, basename) @@ -303,6 +313,7 @@ private class AmdDependencyImport extends Import { * Additionally, `abspath` is bound to the absolute path of `f`, `imported` to the imported path, and * `dirname` and `basename` to the dirname and basename (respectively) of `imported`. */ + overlay[global] private predicate targetCandidate( File f, string abspath, FilePath imported, string dirname, string basename ) { @@ -316,10 +327,12 @@ private class AmdDependencyImport extends Import { /** * Gets the module whose absolute path matches this import, if there is only a single such module. */ + overlay[global] private Module resolveByAbsolutePath() { result.getFile() = unique(File file | file = this.guessTarget()) } + overlay[global] override Module getImportedModule() { result = super.getImportedModule() or @@ -348,14 +361,12 @@ private class AmdDependencyImport extends Import { */ class AmdModule extends Module { cached - AmdModule() { - Stages::DataFlowStage::ref() and - exists(unique(AmdModuleDefinition def | amdModuleTopLevel(def, this))) - } + AmdModule() { exists(unique(AmdModuleDefinition def | amdModuleTopLevel(def, this))) } /** Gets the definition of this module. */ AmdModuleDefinition getDefine() { amdModuleTopLevel(result, this) } + overlay[global] override DataFlow::Node getAnExportedValue(string name) { exists(DataFlow::PropWrite pwn | result = pwn.getRhs() | pwn.getBase().analyze().getAValue() = this.getDefine().getAModuleExportsValue() and @@ -363,6 +374,7 @@ class AmdModule extends Module { ) } + overlay[global] override DataFlow::Node getABulkExportedNode() { // Assigned to `module.exports` via the factory's `module` parameter exists(AbstractModuleObject m, DataFlow::PropWrite write | diff --git a/javascript/ql/lib/semmle/javascript/AST.qll b/javascript/ql/lib/semmle/javascript/AST.qll index db0a2e153d50..c37a4e938a23 100644 --- a/javascript/ql/lib/semmle/javascript/AST.qll +++ b/javascript/ql/lib/semmle/javascript/AST.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with the AST-based representation of JavaScript programs. */ +overlay[local?] +module; import javascript private import internal.StmtContainers @@ -172,6 +174,7 @@ class AstNode extends @ast_node, NodeInStmtContainer { * The TypeScript compiler emits no code for ambient declarations, but they * can affect name resolution and type checking at compile-time. */ + overlay[caller?] pragma[inline] predicate isAmbient() { this.isAmbientInternal() @@ -470,9 +473,12 @@ module AST { */ class ValueNode extends AstNode, @dataflownode { /** Gets type inference results for this element. */ + overlay[global] DataFlow::AnalyzedNode analyze() { result = DataFlow::valueNode(this).analyze() } /** Gets the data flow node associated with this program element. */ + overlay[caller?] + pragma[inline] DataFlow::ValueNode flow() { result = DataFlow::valueNode(this) } /** @@ -481,6 +487,7 @@ module AST { * This can be used to map an expression to the class it refers to, or * associate it with a named value coming from an dependency. */ + overlay[global] ExprNameBindingNode getNameBinding() { result = this } /** @@ -490,6 +497,7 @@ module AST { * (according to the type system), or to associate it with a named type coming * from a dependency. */ + overlay[global] TypeNameBindingNode getTypeBinding() { TypeResolution::valueHasType(this, result) } } } diff --git a/javascript/ql/lib/semmle/javascript/CFG.qll b/javascript/ql/lib/semmle/javascript/CFG.qll index 95e1e9aef72a..f7943647d77b 100644 --- a/javascript/ql/lib/semmle/javascript/CFG.qll +++ b/javascript/ql/lib/semmle/javascript/CFG.qll @@ -272,6 +272,8 @@ * Note that the `import` statement as a whole is part of the CFG of the body, while its single * import specifier `x as y` forms part of the preamble. */ +overlay[local?] +module; import javascript private import internal.StmtContainers diff --git a/javascript/ql/lib/semmle/javascript/Classes.qll b/javascript/ql/lib/semmle/javascript/Classes.qll index 394ab7910276..7f6ea5ba4925 100644 --- a/javascript/ql/lib/semmle/javascript/Classes.qll +++ b/javascript/ql/lib/semmle/javascript/Classes.qll @@ -4,6 +4,8 @@ * Class declarations and class expressions are modeled by (QL) classes `ClassDeclaration` * and `ClassExpression`, respectively, which are both subclasses of `ClassDefinition`. */ +overlay[local?] +module; import javascript @@ -119,6 +121,7 @@ class ClassOrInterface extends @class_or_interface, TypeParameterized { * * Anonymous classes and interfaces do not have a canonical name. */ + overlay[global] deprecated TypeName getTypeName() { result.getADefinition() = this } /** @@ -253,6 +256,7 @@ class ClassDefinition extends @class_definition, ClassOrInterface, AST::ValueNod /** * Gets the definition of the super class of this class, if it can be determined. */ + overlay[global] ClassDefinition getSuperClassDefinition() { result = this.getSuperClass().analyze().getAValue().(AbstractClass).getClass() } @@ -580,6 +584,7 @@ class MemberDeclaration extends @property, Documentable { int getMemberIndex() { properties(this, _, result, _, _) } /** Holds if the name of this member is computed by an impure expression. */ + overlay[global] predicate hasImpureNameExpr() { this.isComputed() and this.getNameExpr().isImpure() } /** diff --git a/javascript/ql/lib/semmle/javascript/Closure.qll b/javascript/ql/lib/semmle/javascript/Closure.qll index c31698333393..930e94a77d77 100644 --- a/javascript/ql/lib/semmle/javascript/Closure.qll +++ b/javascript/ql/lib/semmle/javascript/Closure.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with the Closure-Library module system. */ +overlay[local?] +module; import javascript @@ -40,6 +42,7 @@ module Closure { /** * A reference to a Closure namespace. */ + overlay[global] deprecated class ClosureNamespaceRef extends DataFlow::Node instanceof ClosureNamespaceRef::Range { /** * Gets the namespace being referenced. @@ -47,6 +50,7 @@ module Closure { string getClosureNamespace() { result = super.getClosureNamespace() } } + overlay[global] deprecated module ClosureNamespaceRef { /** * A reference to a Closure namespace. @@ -64,9 +68,11 @@ module Closure { /** * A data flow node that returns the value of a closure namespace. */ + overlay[global] deprecated class ClosureNamespaceAccess extends ClosureNamespaceRef instanceof ClosureNamespaceAccess::Range { } + overlay[global] deprecated module ClosureNamespaceAccess { /** * A data flow node that returns the value of a closure namespace. @@ -79,6 +85,7 @@ module Closure { /** * A call to a method on the `goog.` namespace, as a closure reference. */ + overlay[global] abstract deprecated private class DefaultNamespaceRef extends DataFlow::MethodCallNode, ClosureNamespaceRef::Range { @@ -91,6 +98,7 @@ module Closure { * Holds if `node` is the data flow node corresponding to the expression in * a top-level expression statement. */ + overlay[global] deprecated private predicate isTopLevelExpr(DataFlow::Node node) { any(TopLevel tl).getAChildStmt().(ExprStmt).getExpr().flow() = node } @@ -98,6 +106,7 @@ module Closure { /** * A top-level call to `goog.provide`. */ + overlay[global] deprecated private class DefaultClosureProvideCall extends DefaultNamespaceRef { DefaultClosureProvideCall() { this.getMethodName() = "provide" and @@ -108,12 +117,14 @@ module Closure { /** * A top-level call to `goog.provide`. */ + overlay[global] deprecated class ClosureProvideCall extends ClosureNamespaceRef, DataFlow::MethodCallNode instanceof DefaultClosureProvideCall { } /** * A call to `goog.require`. */ + overlay[global] deprecated private class DefaultClosureRequireCall extends DefaultNamespaceRef, ClosureNamespaceAccess::Range { @@ -123,12 +134,14 @@ module Closure { /** * A call to `goog.require`. */ + overlay[global] deprecated class ClosureRequireCall extends ClosureNamespaceAccess, DataFlow::MethodCallNode instanceof DefaultClosureRequireCall { } /** * A top-level call to `goog.module` or `goog.declareModuleId`. */ + overlay[global] deprecated private class DefaultClosureModuleDeclaration extends DefaultNamespaceRef { DefaultClosureModuleDeclaration() { (this.getMethodName() = "module" or this.getMethodName() = "declareModuleId") and @@ -139,6 +152,7 @@ module Closure { /** * A top-level call to `goog.module` or `goog.declareModuleId`. */ + overlay[global] deprecated class ClosureModuleDeclaration extends ClosureNamespaceRef, DataFlow::MethodCallNode instanceof DefaultClosureModuleDeclaration { } @@ -156,6 +170,7 @@ module Closure { /** * Gets the call to `goog.module` or `goog.declareModuleId` in this module. */ + overlay[global] deprecated ClosureModuleDeclaration getModuleDeclaration() { result.getTopLevel() = this } /** @@ -181,6 +196,7 @@ module Closure { result = this.getScope().getVariable("exports") } + overlay[global] override DataFlow::Node getAnExportedValue(string name) { exists(DataFlow::PropWrite write, Expr base | result = write.getRhs() and @@ -193,6 +209,7 @@ module Closure { ) } + overlay[global] override DataFlow::Node getABulkExportedNode() { result = this.getExportsVariable().getAnAssignedExpr().flow() } @@ -232,6 +249,7 @@ module Closure { /** * Holds if `name` is a closure namespace, including proper namespace prefixes. */ + overlay[global] pragma[noinline] predicate isClosureNamespace(string name) { exists(string namespace | @@ -253,6 +271,7 @@ module Closure { * Holds if a prefix of `name` is a closure namespace. */ bindingset[name] + overlay[global] private predicate hasClosureNamespacePrefix(string name) { isClosureNamespace(name.substring(0, name.indexOf("."))) or @@ -262,6 +281,7 @@ module Closure { /** * Gets the closure namespace path addressed by the given data flow node, if any. */ + overlay[global] string getClosureNamespaceFromSourceNode(DataFlow::SourceNode node) { node = AccessPath::getAReferenceOrAssignmentTo(result) and hasClosureNamespacePrefix(result) @@ -270,6 +290,7 @@ module Closure { /** * Gets the closure namespace path written to by the given property write, if any. */ + overlay[global] string getWrittenClosureNamespace(DataFlow::PropWrite node) { node.getRhs() = AccessPath::getAnAssignmentTo(result) and hasClosureNamespacePrefix(result) @@ -278,6 +299,7 @@ module Closure { /** * Gets a data flow node that refers to the given value exported from a Closure module. */ + overlay[global] DataFlow::SourceNode moduleImport(string moduleName) { getClosureNamespaceFromSourceNode(result) = moduleName } @@ -285,6 +307,7 @@ module Closure { /** * A call to `goog.bind`, as a partial function invocation. */ + overlay[global] private class BindCall extends DataFlow::PartialInvokeNode::Range, DataFlow::CallNode { BindCall() { this = moduleImport("goog.bind").getACall() } diff --git a/javascript/ql/lib/semmle/javascript/Comments.qll b/javascript/ql/lib/semmle/javascript/Comments.qll index 889843728a25..6365127cad01 100644 --- a/javascript/ql/lib/semmle/javascript/Comments.qll +++ b/javascript/ql/lib/semmle/javascript/Comments.qll @@ -1,4 +1,6 @@ /** Provides classes for working with JavaScript comments. */ +overlay[local?] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/Constants.qll b/javascript/ql/lib/semmle/javascript/Constants.qll index 21e70869c67c..acf154346cb6 100644 --- a/javascript/ql/lib/semmle/javascript/Constants.qll +++ b/javascript/ql/lib/semmle/javascript/Constants.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with expressions that evaluate to constant values. */ +overlay[local?] +module; import javascript private import semmle.javascript.internal.CachedStages diff --git a/javascript/ql/lib/semmle/javascript/DefUse.qll b/javascript/ql/lib/semmle/javascript/DefUse.qll index a9d021f939e9..60e0a728691d 100644 --- a/javascript/ql/lib/semmle/javascript/DefUse.qll +++ b/javascript/ql/lib/semmle/javascript/DefUse.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for working with variable definitions and uses. */ +overlay[local?] +module; import javascript @@ -231,6 +233,7 @@ class VarUse extends ControlFlowNode, @varref instanceof RValue { * * For global variables, each definition is considered to reach each use. */ + overlay[global] VarDef getADef() { result = this.getSsaVariable().getDefinition().getAContributingVarDef() or result.getAVariable() = this.getVariable().(GlobalVariable) @@ -241,5 +244,6 @@ class VarUse extends ControlFlowNode, @varref instanceof RValue { * * This predicate is only defined for variables that can be SSA-converted. */ + overlay[global] SsaVariable getSsaVariable() { result.getAUse() = this } } diff --git a/javascript/ql/lib/semmle/javascript/E4X.qll b/javascript/ql/lib/semmle/javascript/E4X.qll index cd112d60664e..4fef3ba2389c 100644 --- a/javascript/ql/lib/semmle/javascript/E4X.qll +++ b/javascript/ql/lib/semmle/javascript/E4X.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with E4X. */ +overlay[local?] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll index e584697c1e44..3710942e9e47 100644 --- a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll +++ b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll @@ -1,4 +1,6 @@ /** Provides classes for working with ECMAScript 2015 modules. */ +overlay[local?] +module; import javascript private import semmle.javascript.internal.CachedStages @@ -29,11 +31,13 @@ class ES2015Module extends Module { /** Gets an export declaration in this module. */ ExportDeclaration getAnExport() { result.getTopLevel() = this } + overlay[global] override DataFlow::Node getAnExportedValue(string name) { exists(ExportDeclaration ed | ed = this.getAnExport() and result = ed.getSourceNode(name)) } /** Holds if this module exports variable `v` under the name `name`. */ + overlay[global] predicate exportsAs(LexicalName v, string name) { this.getAnExport().exportsAs(v, name) } override predicate isStrict() { @@ -50,6 +54,7 @@ class ES2015Module extends Module { * When a module has both named and `default` exports, the non-standard interpretation can lead to * ambiguities, so we only allow the standard interpretation in that case. */ + overlay[global] predicate hasBothNamedAndDefaultExports() { hasNamedExports(this) and hasDefaultExport(this) @@ -59,6 +64,7 @@ class ES2015Module extends Module { /** * Holds if `mod` contains one or more named export declarations other than `default`. */ +overlay[global] private predicate hasNamedExports(ES2015Module mod) { mod.getAnExport().(ExportNamedDeclaration).getASpecifier().getExportedName() != "default" or @@ -71,6 +77,7 @@ private predicate hasNamedExports(ES2015Module mod) { /** * Holds if this module contains a default export. */ +overlay[global] private predicate hasDefaultExport(ES2015Module mod) { // export default foo; mod.getAnExport() instanceof ExportDefaultDeclaration @@ -172,6 +179,7 @@ class ImportDeclaration extends Stmt, Import, @import_declaration { } /** A literal path expression appearing in an `import` declaration. */ +overlay[global] deprecated private class LiteralImportPath extends PathExpr, ConstantString { LiteralImportPath() { exists(ImportDeclaration req | this = req.getChildExpr(-1)) } @@ -198,6 +206,7 @@ deprecated private class LiteralImportPath extends PathExpr, ConstantString { */ class ImportSpecifier extends Expr, @import_specifier { /** Gets the import declaration in which this specifier appears. */ + overlay[global] ImportDeclaration getImportDeclaration() { result.getASpecifier() = this } /** Gets the imported symbol; undefined for default and namespace import specifiers. */ @@ -297,6 +306,7 @@ class BulkImportDeclaration extends ImportDeclaration { * import console, { log } from 'console'; * ``` */ +overlay[global] class SelectiveImportDeclaration extends ImportDeclaration { SelectiveImportDeclaration() { not this instanceof BulkImportDeclaration } @@ -330,10 +340,22 @@ class SelectiveImportDeclaration extends ImportDeclaration { */ abstract class ExportDeclaration extends Stmt, @export_declaration { /** Gets the module to which this export declaration belongs. */ + overlay[global] ES2015Module getEnclosingModule() { this = result.getAnExport() } /** Holds if this export declaration exports variable `v` under the name `name`. */ - abstract predicate exportsAs(LexicalName v, string name); + overlay[global] + final predicate exportsAs(LexicalName v, string name) { + this.exportsDirectlyAs(v, name) + or + this.(ReExportDeclaration).reExportsAs(v, name) + } + + /** + * Holds if this export declaration exports variable `v` under the name `name`, + * not counting re-exports. + */ + predicate exportsDirectlyAs(LexicalName v, string name) { none() } /** * Gets the data flow node corresponding to the value this declaration exports @@ -356,7 +378,18 @@ abstract class ExportDeclaration extends Stmt, @export_declaration { * exports under the same name. In particular, its source node belongs * to module `a` or possibly to some other module from which `a` re-exports. */ - abstract DataFlow::Node getSourceNode(string name); + overlay[global] + final DataFlow::Node getSourceNode(string name) { + result = this.getDirectSourceNode(name) + or + result = this.(ReExportDeclaration).getReExportedSourceNode(name) + } + + /** + * Gets the data flow node corresponding to the value this declaration exports + * under the name `name`, not including sources that come from a re-export. + */ + DataFlow::Node getDirectSourceNode(string name) { none() } /** Holds if is declared with the `type` keyword, so only types are exported. */ predicate isTypeOnly() { has_type_keyword(this) } @@ -407,19 +440,21 @@ class BulkReExportDeclaration extends ReExportDeclaration, @export_all_declarati /** Gets the name of the module from which this declaration re-exports. */ override ConstantString getImportedPath() { result = this.getChildExpr(0) } - override predicate exportsAs(LexicalName v, string name) { + overlay[global] + override predicate reExportsAs(LexicalName v, string name) { this.getReExportedES2015Module().exportsAs(v, name) and - not isShadowedFromBulkExport(this, name) + not isShadowedFromBulkExport(this.getEnclosingModule(), name) } - override DataFlow::Node getSourceNode(string name) { + overlay[global] + override DataFlow::Node getReExportedSourceNode(string name) { result = this.getReExportedES2015Module().getAnExport().getSourceNode(name) } } /** - * Holds if the given bulk export `reExport` should not re-export `name` because there is an explicit export - * of that name in the same module. + * Holds if bulk re-exports in `mod` should not re-export `name` because there is an explicit export + * of that name in `mod`. * * At compile time, shadowing works across declaration spaces. * For instance, directly exporting an interface `X` will block a variable `X` from being re-exported: @@ -430,8 +465,9 @@ class BulkReExportDeclaration extends ReExportDeclaration, @export_all_declarati * At runtime, the interface `X` will have been removed, so `X` is actually re-exported anyway, * but we ignore this subtlety. */ -private predicate isShadowedFromBulkExport(BulkReExportDeclaration reExport, string name) { - exists(ExportNamedDeclaration other | other.getTopLevel() = reExport.getEnclosingModule() | +overlay[global] +private predicate isShadowedFromBulkExport(Module mod, string name) { + exists(ExportNamedDeclaration other | other.getTopLevel() = mod | other.getAnExportedDecl().getName() = name or other.getASpecifier().getExportedName() = name @@ -452,7 +488,7 @@ class ExportDefaultDeclaration extends ExportDeclaration, @export_default_declar /** Gets the operand statement or expression that is exported by this declaration. */ ExprOrStmt getOperand() { result = this.getChild(0) } - override predicate exportsAs(LexicalName v, string name) { + override predicate exportsDirectlyAs(LexicalName v, string name) { name = "default" and v = this.getADecl().getVariable() } @@ -464,7 +500,7 @@ class ExportDefaultDeclaration extends ExportDeclaration, @export_default_declar ) } - override DataFlow::Node getSourceNode(string name) { + override DataFlow::Node getDirectSourceNode(string name) { name = "default" and result = DataFlow::valueNode(this.getOperand()) } } @@ -506,19 +542,20 @@ class ExportNamedDeclaration extends ExportDeclaration, @export_named_declaratio /** Gets the variable declaration, if any, exported by this named export. */ VarDecl getADecl() { result = this.getAnExportedDecl() } - override predicate exportsAs(LexicalName v, string name) { - exists(LexicalDecl vd | vd = this.getAnExportedDecl() | - name = vd.getName() and v = vd.getALexicalName() - ) - or - exists(ExportSpecifier spec | spec = this.getASpecifier() and name = spec.getExportedName() | - v = spec.getLocal().(LexicalAccess).getALexicalName() + override predicate exportsDirectlyAs(LexicalName v, string name) { + ( + exists(LexicalDecl vd | vd = this.getAnExportedDecl() | + name = vd.getName() and v = vd.getALexicalName() + ) or - this.(ReExportDeclaration).getReExportedES2015Module().exportsAs(v, spec.getLocalName()) - ) + exists(ExportSpecifier spec | spec = this.getASpecifier() and name = spec.getExportedName() | + v = spec.getLocal().(LexicalAccess).getALexicalName() + ) + ) and + not (this.isTypeOnly() and v instanceof Variable) } - override DataFlow::Node getSourceNode(string name) { + override DataFlow::Node getDirectSourceNode(string name) { exists(VarDef d | d.getTarget() = this.getADecl() | name = d.getTarget().(VarDecl).getName() and result = DataFlow::valueNode(d.getSource()) @@ -534,12 +571,11 @@ class ExportNamedDeclaration extends ExportDeclaration, @export_named_declaratio exists(ExportSpecifier spec | spec = this.getASpecifier() and name = spec.getExportedName() | not exists(this.getImportedPath()) and result = DataFlow::valueNode(spec.getLocal()) or - exists(ReExportDeclaration red | red = this | - result = red.getReExportedES2015Module().getAnExport().getSourceNode(spec.getLocalName()) - or - spec instanceof ExportNamespaceSpecifier and - result = DataFlow::valueNode(spec) - ) + // For `export * as B from ".."`, we use the ExportNamespaceSpecifier as a representative for the + // object that gets exposed as `B`. + this instanceof ReExportDeclaration and + spec instanceof ExportNamespaceSpecifier and + result = DataFlow::valueNode(spec) ) } @@ -555,6 +591,7 @@ class ExportNamedDeclaration extends ExportDeclaration, @export_named_declaratio private import semmle.javascript.dataflow.internal.PreCallGraphStep +overlay[global] private class ExportNamespaceStep extends PreCallGraphStep { override predicate storeStep(DataFlow::Node pred, DataFlow::SourceNode succ, string prop) { exists(ExportNamedDeclaration exprt, ExportNamespaceSpecifier spec | @@ -566,18 +603,6 @@ private class ExportNamespaceStep extends PreCallGraphStep { } } -/** - * An export declaration with the `type` modifier. - */ -private class TypeOnlyExportDeclaration extends ExportNamedDeclaration { - TypeOnlyExportDeclaration() { this.isTypeOnly() } - - override predicate exportsAs(LexicalName v, string name) { - super.exportsAs(v, name) and - not v instanceof Variable - } -} - /** * An export specifier in an export declaration. * @@ -745,17 +770,34 @@ abstract class ReExportDeclaration extends ExportDeclaration { abstract ConstantString getImportedPath(); /** Gets the module from which this declaration re-exports, if it is an ES2015 module. */ + overlay[global] ES2015Module getReExportedES2015Module() { result = this.getReExportedModule() } /** Gets the module from which this declaration re-exports. */ + overlay[global] cached Module getReExportedModule() { Stages::Imports::ref() and result.getFile() = ImportPathResolver::resolveExpr(this.getImportedPath()) } + + /** + * Holds if this re-export declaration ultimately re-exports `v` (from another module) + * under the given `name`. + */ + overlay[global] + abstract predicate reExportsAs(LexicalName v, string name); + + /** + * Gets the data flow node (from another module) corresponding to the value that is re-exported + * under the name `name`. + */ + overlay[global] + abstract DataFlow::Node getReExportedSourceNode(string name); } /** A literal path expression appearing in a re-export declaration. */ +overlay[global] deprecated private class LiteralReExportPath extends PathExpr, ConstantString { LiteralReExportPath() { exists(ReExportDeclaration bred | this = bred.getImportedPath()) } @@ -778,6 +820,21 @@ class SelectiveReExportDeclaration extends ReExportDeclaration, ExportNamedDecla override ConstantString getImportedPath() { result = ExportNamedDeclaration.super.getImportedPath() } + + overlay[global] + override predicate reExportsAs(LexicalName v, string name) { + exists(ExportSpecifier spec | spec = this.getASpecifier() and name = spec.getExportedName() | + this.getReExportedES2015Module().exportsAs(v, spec.getLocalName()) + ) and + not (this.isTypeOnly() and v instanceof Variable) + } + + overlay[global] + override DataFlow::Node getReExportedSourceNode(string name) { + exists(ExportSpecifier spec | spec = this.getASpecifier() and name = spec.getExportedName() | + result = this.getReExportedES2015Module().getAnExport().getSourceNode(spec.getLocalName()) + ) + } } /** @@ -794,14 +851,4 @@ class SelectiveReExportDeclaration extends ReExportDeclaration, ExportNamedDecla */ class OriginalExportDeclaration extends ExportDeclaration { OriginalExportDeclaration() { not this instanceof ReExportDeclaration } - - override predicate exportsAs(LexicalName v, string name) { - this.(ExportDefaultDeclaration).exportsAs(v, name) or - this.(ExportNamedDeclaration).exportsAs(v, name) - } - - override DataFlow::Node getSourceNode(string name) { - result = this.(ExportDefaultDeclaration).getSourceNode(name) or - result = this.(ExportNamedDeclaration).getSourceNode(name) - } } diff --git a/javascript/ql/lib/semmle/javascript/Errors.qll b/javascript/ql/lib/semmle/javascript/Errors.qll index 6a5d73566a44..9015e89efbf4 100644 --- a/javascript/ql/lib/semmle/javascript/Errors.qll +++ b/javascript/ql/lib/semmle/javascript/Errors.qll @@ -1,4 +1,6 @@ /** Provides classes for working with syntax errors. */ +overlay[local?] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/Expr.qll b/javascript/ql/lib/semmle/javascript/Expr.qll index ae02511ba410..008cc1283770 100644 --- a/javascript/ql/lib/semmle/javascript/Expr.qll +++ b/javascript/ql/lib/semmle/javascript/Expr.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with expressions. */ +overlay[local?] +module; import javascript private import semmle.javascript.internal.CachedStages @@ -115,12 +117,14 @@ class Expr extends @expr, ExprOrStmt, ExprOrType, AST::ValueNode { string getStringValue() { Stages::Ast::ref() and result = getStringValue(this) } /** Holds if this expression is impure, that is, its evaluation could have side effects. */ + overlay[global] predicate isImpure() { any() } /** * Holds if this expression is pure, that is, its evaluation is guaranteed * to be side-effect free. */ + overlay[global] predicate isPure() { not this.isImpure() } /** @@ -153,21 +157,25 @@ class Expr extends @expr, ExprOrStmt, ExprOrType, AST::ValueNode { * Holds if this expression accesses the global variable `g`, either directly * or through the `window` object. */ + overlay[global] predicate accessesGlobal(string g) { this.flow().accessesGlobal(g) } /** * Holds if this expression may evaluate to `s`. */ + overlay[global] predicate mayHaveStringValue(string s) { this.flow().mayHaveStringValue(s) } /** * Holds if this expression may evaluate to `b`. */ + overlay[global] predicate mayHaveBooleanValue(boolean b) { this.flow().mayHaveBooleanValue(b) } /** * Holds if this expression may refer to the initial value of parameter `p`. */ + overlay[global] predicate mayReferToParameter(Parameter p) { DataFlow::parameterNode(p).flowsToExpr(this) } /** @@ -178,6 +186,7 @@ class Expr extends @expr, ExprOrStmt, ExprOrType, AST::ValueNode { * Has no result if the expression is in a JavaScript file or in a TypeScript * file that was extracted without type information. */ + overlay[global] deprecated Type getType() { ast_node_type(this, result) } /** @@ -240,21 +249,16 @@ class Expr extends @expr, ExprOrStmt, ExprOrType, AST::ValueNode { ) } - pragma[inline] - private Stmt getRawEnclosingStmt(Expr e) { - // For performance reasons, we need the enclosing statement without overrides - enclosing_stmt(e, result) - } - /** * Gets the data-flow node where exceptions thrown by this expression will * propagate if this expression causes an exception to be thrown. */ + overlay[caller?] pragma[inline] DataFlow::Node getExceptionTarget() { - result = getCatchParameterFromStmt(this.getRawEnclosingStmt(this)) + result = getCatchParameterFromStmt(getRawEnclosingStmt(this)) or - not exists(getCatchParameterFromStmt(this.getRawEnclosingStmt(this))) and + not exists(getCatchParameterFromStmt(getRawEnclosingStmt(this))) and result = any(DataFlow::FunctionNode f | f.getFunction() = this.getContainer()).getExceptionalReturn() } @@ -267,6 +271,13 @@ private DataFlow::Node getCatchParameterFromStmt(Stmt stmt) { DataFlow::parameterNode(stmt.getEnclosingTryCatchStmt().getACatchClause().getAParameter()) } +overlay[caller?] +pragma[inline] +private Stmt getRawEnclosingStmt(Expr e) { + // For performance reasons, we need the enclosing statement without overrides + enclosing_stmt(e, result) +} + /** * An identifier. * @@ -301,6 +312,7 @@ class Identifier extends @identifier, ExprOrType { * ``` */ class Label extends @label, Identifier, Expr { + overlay[global] override predicate isImpure() { none() } override string getAPrimaryQlClass() { result = "Label" } @@ -330,6 +342,7 @@ class Literal extends @literal, Expr { */ string getRawValue() { literals(_, result, this) } + overlay[global] override predicate isImpure() { none() } override string getAPrimaryQlClass() { result = "Literal" } @@ -352,6 +365,7 @@ class ParExpr extends @par_expr, Expr { override int getIntValue() { result = this.getExpression().getIntValue() } + overlay[global] override predicate isImpure() { this.getExpression().isImpure() } override Expr getUnderlyingValue() { result = this.getExpression().getUnderlyingValue() } @@ -500,6 +514,7 @@ class RegExpLiteral extends @regexp_literal, Literal, RegExpParent { * ``` */ class ThisExpr extends @this_expr, Expr { + overlay[global] override predicate isImpure() { none() } /** @@ -555,6 +570,7 @@ class ArrayExpr extends @array_expr, Expr { /** Holds if this array literal has an omitted element. */ predicate hasOmittedElement() { this.elementIsOmitted(_) } + overlay[global] override predicate isImpure() { this.getAnElement().isImpure() } override string getAPrimaryQlClass() { result = "ArrayExpr" } @@ -597,6 +613,7 @@ class ObjectExpr extends @obj_expr, Expr { */ predicate hasTrailingComma() { this.getLastToken().getPreviousToken().getValue() = "," } + overlay[global] override predicate isImpure() { this.getAProperty().isImpure() } override string getAPrimaryQlClass() { result = "ObjectExpr" } @@ -664,6 +681,7 @@ class Property extends @property, Documentable { * Holds if this property is impure, that is, the evaluation of its name or * its initializer expression could have side effects. */ + overlay[global] predicate isImpure() { this.isComputed() and this.getNameExpr().isImpure() or @@ -826,6 +844,7 @@ class FunctionExpr extends @function_expr, Expr, Function { Stages::Ast::ref() and result = Expr.super.getContainer() } + overlay[global] override predicate isImpure() { none() } override string getAPrimaryQlClass() { result = "FunctionExpr" } @@ -846,6 +865,7 @@ class ArrowFunctionExpr extends @arrow_function_expr, Expr, Function { override StmtContainer getEnclosingContainer() { result = Expr.super.getContainer() } + overlay[global] override predicate isImpure() { none() } override Function getThisBinder() { @@ -877,6 +897,7 @@ class SeqExpr extends @seq_expr, Expr { /** Gets the last expression in this sequence. */ Expr getLastOperand() { result = this.getOperand(this.getNumOperands() - 1) } + overlay[global] override predicate isImpure() { this.getAnOperand().isImpure() } override Expr getUnderlyingValue() { result = this.getLastOperand().getUnderlyingValue() } @@ -906,6 +927,7 @@ class ConditionalExpr extends @conditional_expr, Expr { /** Gets either the 'then' or the 'else' expression of this conditional. */ Expr getABranch() { result = this.getConsequent() or result = this.getAlternate() } + overlay[global] override predicate isImpure() { this.getCondition().isImpure() or this.getABranch().isImpure() @@ -985,6 +1007,7 @@ class InvokeExpr extends @invokeexpr, Expr { * * This predicate is an approximation, computed using only local data flow. */ + overlay[global] predicate hasOptionArgument(int i, string name, Expr value) { value = this.flow().(DataFlow::InvokeNode).getOptionArgument(i, name).asExpr() } @@ -997,6 +1020,7 @@ class InvokeExpr extends @invokeexpr, Expr { * * This predicate is only populated for files extracted with full TypeScript extraction. */ + overlay[global] deprecated CallSignatureType getResolvedSignature() { invoke_expr_signature(this, result) } /** @@ -1014,6 +1038,7 @@ class InvokeExpr extends @invokeexpr, Expr { * * This predicate is only populated for files extracted with full TypeScript extraction. */ + overlay[global] deprecated CanonicalFunctionName getResolvedCalleeName() { ast_node_symbol(this, result) } /** @@ -1022,6 +1047,7 @@ class InvokeExpr extends @invokeexpr, Expr { * Note that the resolved function may be overridden in a subclass and thus is not * necessarily the actual target of this invocation at runtime. */ + overlay[global] Function getResolvedCallee() { TypeResolution::callTarget(this, result) } } @@ -1156,6 +1182,7 @@ class DotExpr extends @dot_expr, PropAccess { /** Gets the identifier specifying the name of the accessed property. */ Identifier getProperty() { result = this.getChildExpr(1) } + overlay[global] override predicate isImpure() { this.getBase().isImpure() } override string getAPrimaryQlClass() { result = "DotExpr" } @@ -1176,6 +1203,7 @@ class IndexExpr extends @index_expr, PropAccess { override string getPropertyName() { result = this.getIndex().(Literal).getValue() } + overlay[global] override predicate isImpure() { this.getBase().isImpure() or this.getIndex().isImpure() @@ -1201,6 +1229,7 @@ class UnaryExpr extends @unaryexpr, Expr { /** Gets the operator of this expression. */ string getOperator() { none() } + overlay[global] override predicate isImpure() { this.getOperand().isImpure() } override ControlFlowNode getFirstControlFlowNode() { @@ -1302,6 +1331,7 @@ class VoidExpr extends @void_expr, UnaryExpr { class DeleteExpr extends @delete_expr, UnaryExpr { override string getOperator() { result = "delete" } + overlay[global] override predicate isImpure() { any() } } @@ -1352,6 +1382,7 @@ class BinaryExpr extends @binaryexpr, Expr { /** Gets the operator of this expression. */ string getOperator() { none() } + overlay[global] override predicate isImpure() { this.getAnOperand().isImpure() } override ControlFlowNode getFirstControlFlowNode() { @@ -1617,13 +1648,19 @@ private string getConstantString(Expr e) { result = e.(TemplateElement).getValue() } +pragma[nomagic] +private predicate hasConstantStringValue(Expr e) { + exists(getConstantString(e)) + or + hasAllConstantLeafs(e.getUnderlyingValue()) +} + /** * Holds if `add` is a string-concatenation where all the transitive leafs have a constant string value. */ private predicate hasAllConstantLeafs(AddExpr add) { - forex(Expr leaf | leaf = getAnAddOperand*(add) and not exists(getAnAddOperand(leaf)) | - exists(getConstantString(leaf)) - ) + hasConstantStringValue(add.getLeftOperand()) and + hasConstantStringValue(add.getRightOperand()) } /** @@ -2233,6 +2270,7 @@ class YieldExpr extends @yield_expr, Expr { /** Holds if this is a `yield*` expression. */ predicate isDelegating() { is_delegating(this) } + overlay[global] override predicate isImpure() { any() } override ControlFlowNode getFirstControlFlowNode() { @@ -2289,6 +2327,7 @@ class ComprehensionExpr extends @comprehension_expr, Expr { /** Gets the body expression of this comprehension. */ Expr getBody() { result = this.getChildExpr(0) } + overlay[global] override predicate isImpure() { this.getABlock().isImpure() or this.getAFilter().isImpure() or @@ -2349,6 +2388,7 @@ class ComprehensionBlock extends @comprehension_block, Expr { /** Gets the domain over which this comprehension block iterates. */ Expr getDomain() { result = this.getChildExpr(1) } + overlay[global] override predicate isImpure() { this.getIterator().isImpure() or this.getDomain().isImpure() @@ -2675,6 +2715,7 @@ class AwaitExpr extends @await_expr, Expr { /** Gets the operand of this `await` expression. */ Expr getOperand() { result = this.getChildExpr(0) } + overlay[global] override predicate isImpure() { any() } override ControlFlowNode getFirstControlFlowNode() { @@ -2698,6 +2739,7 @@ class AwaitExpr extends @await_expr, Expr { * ``` */ class FunctionSentExpr extends @function_sent_expr, Expr { + overlay[global] override predicate isImpure() { none() } override string getAPrimaryQlClass() { result = "FunctionSentExpr" } @@ -2857,6 +2899,7 @@ class DynamicImportExpr extends @dynamic_import, Expr, Import { } /** A literal path expression appearing in a dynamic import. */ +overlay[global] deprecated private class LiteralDynamicImportPath extends PathExpr, ConstantString { LiteralDynamicImportPath() { exists(DynamicImportExpr di | this.getParentExpr*() = di.getSource()) @@ -2919,6 +2962,7 @@ class OptionalChainRoot extends ChainElem { * ``` */ class ImportMetaExpr extends @import_meta_expr, Expr { + overlay[global] override predicate isImpure() { none() } override string getAPrimaryQlClass() { result = "ImportMetaExpr" } diff --git a/javascript/ql/lib/semmle/javascript/Extend.qll b/javascript/ql/lib/semmle/javascript/Extend.qll index d0eeade58928..b871a74a03b7 100644 --- a/javascript/ql/lib/semmle/javascript/Extend.qll +++ b/javascript/ql/lib/semmle/javascript/Extend.qll @@ -1,6 +1,8 @@ /** * Provides classes for reasoning about `extend`-like functions. */ +overlay[local?] +module; import javascript @@ -169,6 +171,7 @@ private class FunctionalExtendCallShallow extends ExtendCall { * * Since all object properties are preserved, we model this as a value-preserving step. */ +overlay[global] private class ExtendCallStep extends PreCallGraphStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { exists(ExtendCall extend | @@ -184,6 +187,7 @@ private import semmle.javascript.dataflow.internal.PreCallGraphStep /** * A step through a cloning library, such as `clone` or `fclone`. */ +overlay[global] private class CloneStep extends PreCallGraphStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { exists(DataFlow::CallNode call | diff --git a/javascript/ql/lib/semmle/javascript/Externs.qll b/javascript/ql/lib/semmle/javascript/Externs.qll index a2a2533d8494..22d6d03d7dd0 100644 --- a/javascript/ql/lib/semmle/javascript/Externs.qll +++ b/javascript/ql/lib/semmle/javascript/Externs.qll @@ -36,6 +36,8 @@ * Array.prototype.length; * */ +overlay[local?] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/Files.qll b/javascript/ql/lib/semmle/javascript/Files.qll index b9274d92ebaa..556d25911f11 100644 --- a/javascript/ql/lib/semmle/javascript/Files.qll +++ b/javascript/ql/lib/semmle/javascript/Files.qll @@ -1,4 +1,6 @@ /** Provides classes for working with files and folders. */ +overlay[local?] +module; import javascript private import NodeModuleResolutionImpl @@ -33,12 +35,14 @@ module Folder = Impl::Folder; /** A folder. */ class Folder extends Container, Impl::Folder { /** Gets the file or subfolder in this folder that has the given `name`, if any. */ + overlay[global] Container getChildContainer(string name) { result = this.getAChildContainer() and result.getBaseName() = name } /** Gets the file in this folder that has the given `stem` and `extension`, if any. */ + overlay[global] File getFile(string stem, string extension) { result = this.getAChildContainer() and result.getStem() = stem and @@ -46,6 +50,7 @@ class Folder extends Container, Impl::Folder { } /** Like `getFile` except `d.ts` is treated as a single extension. */ + overlay[global] private File getFileLongExtension(string stem, string extension) { not (stem.matches("%.d") and extension = "ts") and result = this.getFile(stem, extension) @@ -65,6 +70,7 @@ class Folder extends Container, Impl::Folder { * * HTML files will not be found by this method. */ + overlay[global] File getJavaScriptFile(string stem) { result = min(int p, string ext | @@ -78,6 +84,7 @@ class Folder extends Container, Impl::Folder { * Gets an implementation file and/or a typings file from this folder that has the given `stem`. * This could be a single `.ts` file or a pair of `.js` and `.d.ts` files. */ + overlay[global] File getJavaScriptFileOrTypings(string stem) { exists(File jsFile | jsFile = this.getJavaScriptFile(stem) | result = jsFile @@ -88,6 +95,7 @@ class Folder extends Container, Impl::Folder { } /** Gets a subfolder contained in this folder. */ + overlay[global] Folder getASubFolder() { result = this.getAChildContainer() } } diff --git a/javascript/ql/lib/semmle/javascript/Functions.qll b/javascript/ql/lib/semmle/javascript/Functions.qll index b72bfbc888e9..186ef1bc0289 100644 --- a/javascript/ql/lib/semmle/javascript/Functions.qll +++ b/javascript/ql/lib/semmle/javascript/Functions.qll @@ -1,4 +1,6 @@ /** Provides classes for working with functions. */ +overlay[local?] +module; import javascript @@ -434,11 +436,13 @@ class Function extends @function, Parameterized, TypeParameterized, StmtContaine * * This predicate is only populated for files extracted with full TypeScript extraction. */ + overlay[global] deprecated CanonicalFunctionName getCanonicalName() { ast_node_symbol(this, result) } /** * Gets the call signature of this function, as determined by the TypeScript compiler, if any. */ + overlay[global] deprecated CallSignatureType getCallSignature() { declared_function_signature(this, result) } } diff --git a/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll b/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll index 4a461961f8af..7b3004dbde43 100644 --- a/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll +++ b/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll @@ -1,6 +1,8 @@ /** * Provides predicates for associating qualified names with data flow nodes. */ +overlay[local?] +module; import javascript private import semmle.javascript.dataflow.InferredTypes @@ -204,6 +206,7 @@ module AccessPath { * Holds if the global `accessPath` is only assigned to from one file, not counting * self-assignments. */ + overlay[global] predicate isAssignedInUniqueFile(string accessPath) { strictcount(File f | isAssignedInFile(accessPath, f)) = 1 } @@ -354,6 +357,7 @@ module AccessPath { * Gets a variable that is relevant for the computations in the `GetLaterAccess` module. * This predicate restricts as much as it can, but without depending on `getAVariableRef`. */ + overlay[caller?] pragma[inline] private SsaVariable getARelevantVariableSimple() { // The variable might be used where `getLaterBaseAccess()` is called. @@ -405,6 +409,7 @@ module AccessPath { * } * ``` */ + overlay[caller?] pragma[inline] DataFlow::Node getAReferenceTo(Root root, string path) { path = fromReference(result, root) and @@ -428,6 +433,7 @@ module AccessPath { * })(NS = NS || {}); * ``` */ + overlay[caller?] pragma[inline] DataFlow::Node getAReferenceTo(string path) { path = fromReference(result, DataFlow::globalAccessPathRootPseudoNode()) @@ -449,6 +455,7 @@ module AccessPath { * } * ``` */ + overlay[caller?] pragma[inline] DataFlow::Node getAnAssignmentTo(Root root, string path) { path = fromRhs(result, root) and @@ -470,6 +477,7 @@ module AccessPath { * })(foo = foo || {}); * ``` */ + overlay[caller?] pragma[inline] DataFlow::Node getAnAssignmentTo(string path) { path = fromRhs(result, DataFlow::globalAccessPathRootPseudoNode()) @@ -480,6 +488,7 @@ module AccessPath { * * See `getAReferenceTo` and `getAnAssignmentTo` for more details. */ + overlay[caller?] pragma[inline] DataFlow::Node getAReferenceOrAssignmentTo(string path) { result = getAReferenceTo(path) @@ -492,6 +501,7 @@ module AccessPath { * * See `getAReferenceTo` and `getAnAssignmentTo` for more details. */ + overlay[caller?] pragma[inline] DataFlow::Node getAReferenceOrAssignmentTo(Root root, string path) { result = getAReferenceTo(root, path) @@ -502,6 +512,7 @@ module AccessPath { /** * Holds if there is a step from `pred` to `succ` through an assignment to an access path. */ + overlay[caller?] pragma[inline] predicate step(DataFlow::Node pred, DataFlow::Node succ) { exists(string name, Root root | @@ -519,6 +530,7 @@ module AccessPath { /** * Gets a `SourceNode` that refers to the same value or access path as the given node. */ + overlay[caller?] pragma[inline] DataFlow::SourceNode getAnAliasedSourceNode(DataFlow::Node node) { exists(DataFlow::SourceNode root, string accessPath | @@ -657,7 +669,7 @@ module AccessPath { */ cached predicate hasDominatingWrite(DataFlow::PropRead read) { - Stages::TypeTracking::ref() and + Stages::DataFlowStage::ref() and // within the same basic block. exists(ReachableBasicBlock bb, Root root, string path, int ranking | read.asExpr() = rankedAccessPath(bb, root, path, ranking, AccessPathRead()) and diff --git a/javascript/ql/lib/semmle/javascript/HTML.qll b/javascript/ql/lib/semmle/javascript/HTML.qll index 43b66db459ff..fa3deaf661f2 100644 --- a/javascript/ql/lib/semmle/javascript/HTML.qll +++ b/javascript/ql/lib/semmle/javascript/HTML.qll @@ -1,4 +1,6 @@ /** Provides classes for working with HTML documents. */ +overlay[local?] +module; import javascript @@ -283,6 +285,7 @@ module HTML { /** * A path string arising from the `src` attribute of a `script` tag. */ + overlay[global] deprecated private class ScriptSrcPath extends PathString { ScriptSrcPath() { scriptSrc(this, _) } diff --git a/javascript/ql/lib/semmle/javascript/JSDoc.qll b/javascript/ql/lib/semmle/javascript/JSDoc.qll index 85b7695cd70e..48d2a984ec43 100644 --- a/javascript/ql/lib/semmle/javascript/JSDoc.qll +++ b/javascript/ql/lib/semmle/javascript/JSDoc.qll @@ -1,4 +1,6 @@ /** Provides classes for working with JSDoc comments. */ +overlay[local?] +module; import javascript private import semmle.javascript.internal.CachedStages @@ -627,6 +629,7 @@ module JSDoc { /** * A statement container which may declare JSDoc name aliases. */ + overlay[global] deprecated class Environment extends StmtContainer { /** * Gets the fully qualified name aliased by the given unqualified name diff --git a/javascript/ql/lib/semmle/javascript/JSON.qll b/javascript/ql/lib/semmle/javascript/JSON.qll index 19fc3ec84d7a..ba5b42ba1ee7 100644 --- a/javascript/ql/lib/semmle/javascript/JSON.qll +++ b/javascript/ql/lib/semmle/javascript/JSON.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with JSON data. */ +overlay[local?] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/JSX.qll b/javascript/ql/lib/semmle/javascript/JSX.qll index ed8a7b097a6b..ab9a4339bf75 100644 --- a/javascript/ql/lib/semmle/javascript/JSX.qll +++ b/javascript/ql/lib/semmle/javascript/JSX.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with JSX code. */ +overlay[local?] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/Lines.qll b/javascript/ql/lib/semmle/javascript/Lines.qll index 1db9187008a1..e0f675aa6e08 100644 --- a/javascript/ql/lib/semmle/javascript/Lines.qll +++ b/javascript/ql/lib/semmle/javascript/Lines.qll @@ -4,6 +4,8 @@ * This information is only available for snapshots that have been extracted with * the `--extract-program-text` flag. */ +overlay[local?] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/Locations.qll b/javascript/ql/lib/semmle/javascript/Locations.qll index a3ad79ef93ea..4aa93dd69377 100644 --- a/javascript/ql/lib/semmle/javascript/Locations.qll +++ b/javascript/ql/lib/semmle/javascript/Locations.qll @@ -1,4 +1,6 @@ /** Provides classes for working with locations and program elements that have locations. */ +overlay[local?] +module; import javascript @@ -30,6 +32,7 @@ final class Location extends @location_default { int getNumLines() { result = this.getEndLine() - this.getStartLine() + 1 } /** Holds if this location starts before location `that`. */ + overlay[caller?] pragma[inline] predicate startsBefore(Location that) { exists(string f, int sl1, int sc1, int sl2, int sc2 | @@ -43,6 +46,7 @@ final class Location extends @location_default { } /** Holds if this location ends after location `that`. */ + overlay[caller?] pragma[inline] predicate endsAfter(Location that) { exists(string f, int el1, int ec1, int el2, int ec2 | diff --git a/javascript/ql/lib/semmle/javascript/Modules.qll b/javascript/ql/lib/semmle/javascript/Modules.qll index 8b0330b708ba..9bd9ce434517 100644 --- a/javascript/ql/lib/semmle/javascript/Modules.qll +++ b/javascript/ql/lib/semmle/javascript/Modules.qll @@ -3,6 +3,8 @@ * ECMAScript 2015-style modules, and the older CommonJS and AMD-style * modules. */ +overlay[local?] +module; import javascript private import semmle.javascript.internal.CachedStages @@ -23,9 +25,11 @@ abstract class Module extends TopLevel { Import getAnImport() { result.getTopLevel() = this } /** Gets a module from which this module imports. */ + overlay[global] Module getAnImportedModule() { result = this.getAnImport().getImportedModule() } /** Gets a symbol exported by this module. */ + overlay[global] string getAnExportedSymbol() { exists(this.getAnExportedValue(result)) } /** @@ -39,12 +43,14 @@ abstract class Module extends TopLevel { * Symbols defined in another module that are re-exported by * this module are only sometimes considered. */ + overlay[global] cached abstract DataFlow::Node getAnExportedValue(string name); /** * Gets a value that is exported as the whole exports object of this module. */ + overlay[global] cached DataFlow::Node getABulkExportedNode() { none() } // overridden in subclasses @@ -55,6 +61,7 @@ abstract class Module extends TopLevel { * This can be used to determine which value a default-import will likely refer to, * as the interaction between different module types is not standardized. */ + overlay[global] DataFlow::Node getDefaultOrBulkExport() { result = [this.getAnExportedValue("default"), this.getABulkExportedNode()] } @@ -69,6 +76,7 @@ abstract class Module extends TopLevel { * This predicate is not part of the public API, it is only exposed to allow * overriding by subclasses. */ + overlay[global] deprecated predicate searchRoot(PathExpr path, Folder searchRoot, int priority) { path.getEnclosingModule() = this and priority = 0 and @@ -90,6 +98,7 @@ abstract class Module extends TopLevel { * resolves to a folder containing a main module (such as `index.js`), then * that file is the result. */ + overlay[global] deprecated File resolve(PathExpr path) { path.getEnclosingModule() = this and ( @@ -124,6 +133,7 @@ abstract class Import extends AstNode { abstract Module getEnclosingModule(); /** DEPRECATED. Use `getImportedPathExpr` instead. */ + overlay[global] deprecated PathExpr getImportedPath() { result = this.getImportedPathExpr() } /** Gets the (unresolved) path that this import refers to. */ @@ -138,6 +148,7 @@ abstract class Import extends AstNode { * Any externs module whose name exactly matches the imported * path is assumed to be a possible target of the import. */ + overlay[global] Module resolveExternsImport() { result.isExterns() and result.getName() = this.getImportedPathString() } @@ -145,16 +156,19 @@ abstract class Import extends AstNode { /** * Gets the module the path of this import resolves to. */ + overlay[global] Module resolveImportedPath() { result.getFile() = this.getImportedFile() } /** * Gets the module the path of this import resolves to. */ + overlay[global] File getImportedFile() { result = ImportPathResolver::resolveExpr(this.getImportedPathExpr()) } /** * DEPRECATED. Use `getImportedModule()` instead. */ + overlay[global] deprecated Module resolveFromTypeScriptSymbol() { exists(CanonicalName symbol | ast_node_symbol(this, symbol) and @@ -170,6 +184,7 @@ abstract class Import extends AstNode { * behavior of Node.js imports, which prefer core modules such as `fs` over any * source module of the same name. */ + overlay[global] cached Module getImportedModule() { Stages::Imports::ref() and @@ -210,6 +225,7 @@ abstract class Import extends AstNode { * in cases where it would cause ambiguity between named exports and properties * of a default export. */ + overlay[global] final DataFlow::Node getImportedModuleNodeStrict() { result = this.getImportedModuleNode() and not ( diff --git a/javascript/ql/lib/semmle/javascript/NPM.qll b/javascript/ql/lib/semmle/javascript/NPM.qll index cbe580b45689..857fc1638047 100644 --- a/javascript/ql/lib/semmle/javascript/NPM.qll +++ b/javascript/ql/lib/semmle/javascript/NPM.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with NPM module definitions and dependencies. */ +overlay[local?] +module; import javascript private import NodeModuleResolutionImpl diff --git a/javascript/ql/lib/semmle/javascript/NodeJS.qll b/javascript/ql/lib/semmle/javascript/NodeJS.qll index 7e9e2fdea904..0fbd8d79a749 100644 --- a/javascript/ql/lib/semmle/javascript/NodeJS.qll +++ b/javascript/ql/lib/semmle/javascript/NodeJS.qll @@ -17,6 +17,7 @@ private import semmle.javascript.dataflow.internal.DataFlowNode * process.stdout.write(fs.readFileSync(process.argv[i], 'utf8')); * ``` */ +overlay[local?] class NodeModule extends Module { NodeModule() { is_module(this) and @@ -36,11 +37,13 @@ class NodeModule extends Module { * Gets an abstract value representing one or more values that may flow * into this module's `module.exports` property. */ + overlay[global] pragma[noinline] DefiniteAbstractValue getAModuleExportsValue() { result = this.getAModuleExportsProperty().getAValue() } + overlay[global] pragma[noinline] private AbstractProperty getAModuleExportsProperty() { result.getBase().(AbstractModuleObject).getModule() = this and @@ -52,12 +55,14 @@ class NodeModule extends Module { * For performance this predicate only computes relevant expressions (in `getAModuleExportsCandidate`). * So if using this predicate - consider expanding the list of relevant expressions. */ + overlay[global] DataFlow::AnalyzedNode getAModuleExportsNode() { result = getAModuleExportsCandidate() and result.getAValue() = this.getAModuleExportsValue() } /** Gets a symbol exported by this module. */ + overlay[global] override string getAnExportedSymbol() { result = super.getAnExportedSymbol() or @@ -70,6 +75,7 @@ class NodeModule extends Module { ) } + overlay[global] override DataFlow::Node getAnExportedValue(string name) { // a property write whose base is `exports` or `module.exports` exists(DataFlow::PropWrite pwn | result = pwn.getRhs() | @@ -114,6 +120,7 @@ class NodeModule extends Module { ) } + overlay[global] override DataFlow::Node getABulkExportedNode() { Stages::Imports::ref() and exists(DataFlow::PropWrite write | @@ -124,6 +131,7 @@ class NodeModule extends Module { } /** Gets a symbol that the module object inherits from its prototypes. */ + overlay[global] private string getAnImplicitlyExportedSymbol() { exists(ExternalConstructor ec | ec = this.getPrototypeOfExportedExpr() | result = ec.getAMember().getName() @@ -136,6 +144,7 @@ class NodeModule extends Module { } /** Gets an externs declaration of the prototype object of a value exported by this module. */ + overlay[global] private ExternalConstructor getPrototypeOfExportedExpr() { exists(AbstractValue exported | exported = this.getAModuleExportsValue() | result instanceof ObjectExternal @@ -146,6 +155,7 @@ class NodeModule extends Module { ) } + overlay[global] deprecated override predicate searchRoot(PathExpr path, Folder searchRoot, int priority) { path.getEnclosingModule() = this and exists(string pathval | pathval = path.getValue() | @@ -224,6 +234,7 @@ predicate findNodeModulesFolder(Folder f, Folder nodeModules, int distance) { /** * A Node.js `require` variable. */ +overlay[local?] private class RequireVariable extends Variable { RequireVariable() { this = any(ModuleScope m).getVariable("require") @@ -236,6 +247,7 @@ private class RequireVariable extends Variable { } } +overlay[local?] private predicate isModuleModule(EarlyStageNode nd) { exists(ImportDeclaration imp | imp.getRawImportPath() = "module" | nd = TDestructuredModuleImportNode(imp) @@ -249,6 +261,7 @@ private predicate isModuleModule(EarlyStageNode nd) { ) } +overlay[local?] private predicate isCreateRequire(EarlyStageNode nd) { exists(PropAccess prop | isModuleModule(TValueNode(prop.getBase())) and @@ -278,6 +291,7 @@ private predicate isCreateRequire(EarlyStageNode nd) { /** * Holds if `nd` may refer to `require`, either directly or modulo local data flow. */ +overlay[local?] cached private predicate isRequire(EarlyStageNode nd) { exists(VarAccess access | @@ -320,6 +334,7 @@ private predicate isRequire(EarlyStageNode nd) { * require('fs') * ``` */ +overlay[local?] class Require extends CallExpr, Import { Require() { isRequire(TValueNode(this.getCallee())) } diff --git a/javascript/ql/lib/semmle/javascript/Promises.qll b/javascript/ql/lib/semmle/javascript/Promises.qll index 2feb92e2e553..6868505b22a7 100644 --- a/javascript/ql/lib/semmle/javascript/Promises.qll +++ b/javascript/ql/lib/semmle/javascript/Promises.qll @@ -186,11 +186,13 @@ module Promises { /** * Gets the pseudo-field used to describe resolved values in a promise. */ + overlay[local?] string valueProp() { result = "$PromiseResolveField$" } /** * Gets the pseudo-field used to describe rejected values in a promise. */ + overlay[local?] string errorProp() { result = "$PromiseRejectField$" } /** A property set containing the pseudo-properites of a promise object. */ @@ -236,6 +238,7 @@ module PromiseTypeTracking { * * These type-tracking steps are already included in the default type-tracking steps (through `PreCallGraphStep`). */ + overlay[caller?] pragma[inline] DataFlow::Node promiseStep(DataFlow::Node pred, StepSummary summary) { exists(string field | field = Promises::valueProp() | @@ -254,6 +257,7 @@ module PromiseTypeTracking { * Gets the result from a single step through a promise, from `pred` with tracker `t2` to `result` with tracker `t`. * This can be loading a resolved value from a promise, storing a value in a promise, or copying a resolved value from one promise to another. */ + overlay[caller?] pragma[inline] DataFlow::SourceNode promiseStep( DataFlow::SourceNode pred, DataFlow::TypeTracker t, DataFlow::TypeTracker t2 diff --git a/javascript/ql/lib/semmle/javascript/Regexp.qll b/javascript/ql/lib/semmle/javascript/Regexp.qll index ea2993ae7da8..c42df3939c22 100644 --- a/javascript/ql/lib/semmle/javascript/Regexp.qll +++ b/javascript/ql/lib/semmle/javascript/Regexp.qll @@ -4,6 +4,8 @@ * Regular expression literals are represented as an abstract syntax tree of regular expression * terms. */ +overlay[local?] +module; import javascript private import semmle.javascript.dataflow.InferredTypes @@ -150,6 +152,7 @@ class RegExpTerm extends Locatable, @regexpterm { * /[a-z]+/g; // YES - Regexp literals are always used as regexp * ``` */ + overlay[global] predicate isUsedAsRegExp() { exists(RegExpParent parent | parent = this.getRootTerm().getParent() | parent instanceof RegExpLiteral @@ -964,6 +967,7 @@ class RegExpParseError extends Error, @regexp_parse_error { /** * Holds if `func` is a method defined on `String.prototype` with name `name`. */ +overlay[global] private predicate isNativeStringMethod(Function func, string name) { exists(ExternalInstanceMemberDecl decl | decl.hasQualifiedName("String", name) and @@ -975,6 +979,7 @@ private predicate isNativeStringMethod(Function func, string name) { * Holds if `name` is the name of a property on a Match object returned by `String.prototype.match`, * not including array indices. */ +overlay[global] private predicate isMatchObjectProperty(string name) { any(ExternalInstanceMemberDecl decl).hasQualifiedName("Array", name) or @@ -982,6 +987,7 @@ private predicate isMatchObjectProperty(string name) { } /** Holds if `call` is a call to `match` whose result is used in a way that is incompatible with Match objects. */ +overlay[global] private predicate isUsedAsNonMatchObject(DataFlow::MethodCallNode call) { call.getMethodName() = ["match", "matchAll"] and call.getNumArgument() = 1 and @@ -1006,10 +1012,11 @@ private predicate isUsedAsNonMatchObject(DataFlow::MethodCallNode call) { /** * Holds if `value` is used in a way that suggests it returns a number. */ +overlay[global] pragma[inline] private predicate isUsedAsNumber(DataFlow::LocalSourceNode value) { any(Comparison compare) - .hasOperands(value.getALocalUse().asExpr(), any(Expr e | e.analyze().getAType() = TTNumber())) + .hasOperands(value.getALocalUse().asExpr(), any(Expr e | canBeNumber(e.analyze()))) or value.flowsToExpr(any(ArithmeticExpr e).getAnOperand()) or @@ -1024,20 +1031,31 @@ private predicate isUsedAsNumber(DataFlow::LocalSourceNode value) { ) } +bindingset[node] +overlay[global] +pragma[inline_late] +private predicate canBeString(DataFlow::AnalyzedNode node) { node.getAType() = TTString() } + +bindingset[node] +overlay[global] +pragma[inline_late] +private predicate canBeNumber(DataFlow::AnalyzedNode node) { node.getAType() = TTNumber() } + /** * Holds if `source` may be interpreted as a regular expression. */ +overlay[global] cached predicate isInterpretedAsRegExp(DataFlow::Node source) { Stages::Taint::ref() and - source.analyze().getAType() = TTString() and + canBeString(source) and ( // The first argument to an invocation of `RegExp` (with or without `new`). source = DataFlow::globalVarRef("RegExp").getAnInvocation().getArgument(0) or // The argument of a call that coerces the argument to a regular expression. exists(DataFlow::MethodCallNode mce, string methodName | - mce.getReceiver().analyze().getAType() = TTString() and + canBeString(mce.getReceiver()) and mce.getMethodName() = methodName and not exists(Function func | func = mce.getACallee() | not isNativeStringMethod(func, methodName) @@ -1073,6 +1091,7 @@ predicate isInterpretedAsRegExp(DataFlow::Node source) { * Gets a node whose value may flow (inter-procedurally) to `re`, where it is interpreted * as a part of a regular expression. */ +overlay[global] private DataFlow::Node regExpSource(DataFlow::Node re, DataFlow::TypeBackTracker t) { t.start() and re = result and @@ -1090,6 +1109,7 @@ private DataFlow::Node regExpSource(DataFlow::Node re, DataFlow::TypeBackTracker * Gets a node whose value may flow (inter-procedurally) to `re`, where it is interpreted * as a part of a regular expression. */ +overlay[global] private DataFlow::Node regExpSource(DataFlow::Node re) { result = regExpSource(re, DataFlow::TypeBackTracker::end()) } @@ -1098,6 +1118,7 @@ private DataFlow::Node regExpSource(DataFlow::Node re) { * A node whose value may flow to a position where it is interpreted * as a part of a regular expression. */ +overlay[global] abstract class RegExpPatternSource extends DataFlow::Node { /** * Gets a node where the pattern of this node is parsed as a part of @@ -1126,6 +1147,7 @@ abstract class RegExpPatternSource extends DataFlow::Node { /** * A regular expression literal, viewed as the pattern source for itself. */ +overlay[global] private class RegExpLiteralPatternSource extends RegExpPatternSource, DataFlow::ValueNode { override RegExpLiteral astNode; @@ -1145,6 +1167,7 @@ private class RegExpLiteralPatternSource extends RegExpPatternSource, DataFlow:: * A node whose string value may flow to a position where it is interpreted * as a part of a regular expression. */ +overlay[global] private class StringRegExpPatternSource extends RegExpPatternSource { DataFlow::Node parse; @@ -1169,6 +1192,7 @@ private class StringRegExpPatternSource extends RegExpPatternSource { * A node whose string value may flow to a position where it is interpreted * as a part of a regular expression. */ +overlay[global] private class StringConcatRegExpPatternSource extends RegExpPatternSource { DataFlow::Node parse; @@ -1331,6 +1355,7 @@ module RegExp { /** * Gets the AST of a regular expression object that can flow to `node`. */ + overlay[global] RegExpTerm getRegExpObjectFromNode(DataFlow::Node node) { exists(DataFlow::RegExpCreationNode regexp | regexp.getAReference().flowsTo(node) and @@ -1342,6 +1367,7 @@ module RegExp { * Gets the AST of a regular expression that can flow to `node`, * including `RegExp` objects as well as strings interpreted as regular expressions. */ + overlay[global] RegExpTerm getRegExpFromNode(DataFlow::Node node) { result = getRegExpObjectFromNode(node) or diff --git a/javascript/ql/lib/semmle/javascript/SSA.qll b/javascript/ql/lib/semmle/javascript/SSA.qll index a2c5bf1d34e6..04d08c2343f6 100644 --- a/javascript/ql/lib/semmle/javascript/SSA.qll +++ b/javascript/ql/lib/semmle/javascript/SSA.qll @@ -73,6 +73,8 @@ * expression in `k` induces a re-capture of `x` to reflect the fact that `x` * is incremented between the two `console.log` calls. */ +overlay[local?] +module; import javascript private import semmle.javascript.dataflow.Refinements diff --git a/javascript/ql/lib/semmle/javascript/Stmt.qll b/javascript/ql/lib/semmle/javascript/Stmt.qll index 93eb1d1dea07..95ae6f5be597 100644 --- a/javascript/ql/lib/semmle/javascript/Stmt.qll +++ b/javascript/ql/lib/semmle/javascript/Stmt.qll @@ -1,4 +1,6 @@ /** Provides classes for working with statements. */ +overlay[local?] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/Templates.qll b/javascript/ql/lib/semmle/javascript/Templates.qll index 5e2b4a2d8aae..d6eaef945894 100644 --- a/javascript/ql/lib/semmle/javascript/Templates.qll +++ b/javascript/ql/lib/semmle/javascript/Templates.qll @@ -1,4 +1,6 @@ /** Provides classes for working with ECMAScript 2015-style template expressions. */ +overlay[local?] +module; import javascript @@ -58,6 +60,7 @@ class TemplateLiteral extends Expr, @template_literal { */ int getNumElement() { result = count(this.getAnElement()) } + overlay[global] override predicate isImpure() { this.getAnElement().isImpure() } override string getAPrimaryQlClass() { result = "TemplateLiteral" } diff --git a/javascript/ql/lib/semmle/javascript/Tokens.qll b/javascript/ql/lib/semmle/javascript/Tokens.qll index c9eeef69dfba..cb55a8296e6d 100644 --- a/javascript/ql/lib/semmle/javascript/Tokens.qll +++ b/javascript/ql/lib/semmle/javascript/Tokens.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with the token-based representation of JavaScript programs. */ +overlay[local?] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll b/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll index 6d0a13c4a38f..dacc3913e658 100644 --- a/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll +++ b/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll @@ -1,6 +1,8 @@ /** * Provides classes for reasoning about type annotations independently of dialect. */ +overlay[local?] +module; import javascript private import internal.StmtContainers @@ -18,6 +20,7 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { * This can be used to map a type name to the class/interface it refers to, or * associate it with a named type coming from an dependency. */ + overlay[global] TypeNameBindingNode getTypeBinding() { result = this } /** Holds if this is the `any` type. */ @@ -90,6 +93,7 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { * * Holds if this is a reference to the type with qualified name `globalName` relative to the global scope. */ + overlay[global] deprecated predicate hasQualifiedName(string globalName) { UnderlyingTypes::nodeHasUnderlyingType(this, globalName) } @@ -99,6 +103,7 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { * * Holds if this is a reference to the type exported from `moduleName` under the name `exportedName`. */ + overlay[global] deprecated predicate hasQualifiedName(string moduleName, string exportedName) { UnderlyingTypes::nodeHasUnderlyingType(this, moduleName, exportedName) } @@ -107,6 +112,7 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { * Holds if this is a reference to the type with qualified name `globalName` relative to the global scope, * or is declared as a subtype thereof, or is a union or intersection containing such a type. */ + overlay[global] final predicate hasUnderlyingType(string globalName) { UnderlyingTypes::nodeHasUnderlyingType(this, globalName) } @@ -115,6 +121,7 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { * Holds if this is a reference to the type exported from `moduleName` under the name `exportedName`, * or is declared as a subtype thereof, or is a union or intersection containing such a type. */ + overlay[global] final predicate hasUnderlyingType(string moduleName, string exportedName) { UnderlyingTypes::nodeHasUnderlyingType(this, moduleName, exportedName) } @@ -135,6 +142,7 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { * * Note that this has no result for JSDoc type annotations. */ + overlay[global] deprecated Type getType() { none() } /** @@ -142,5 +150,6 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { * * This unfolds nullability modifiers and generic type applications. */ + overlay[global] final DataFlow::ClassNode getClass() { UnderlyingTypes::nodeHasUnderlyingClassType(this, result) } } diff --git a/javascript/ql/lib/semmle/javascript/TypeScript.qll b/javascript/ql/lib/semmle/javascript/TypeScript.qll index 79b71fcd8c05..7772ff3e21ab 100644 --- a/javascript/ql/lib/semmle/javascript/TypeScript.qll +++ b/javascript/ql/lib/semmle/javascript/TypeScript.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + import javascript /** @@ -31,6 +34,7 @@ class NamespaceDefinition extends Stmt, @namespace_definition, AST::ValueNode { /** * Gets the canonical name of the namespace being defined. */ + overlay[global] deprecated Namespace getNamespace() { result.getADefinition() = this } } @@ -111,11 +115,13 @@ class TypeDefinition extends AstNode, @type_definition { /** * Gets the canonical name of the type being defined. */ + overlay[global] deprecated TypeName getTypeName() { result.getADefinition() = this } /** * Gets the type defined by this declaration. */ + overlay[global] deprecated Type getType() { ast_node_type(this.getIdentifier(), result) } override string getAPrimaryQlClass() { result = "TypeDefinition" } @@ -221,6 +227,7 @@ class ExternalModuleReference extends Expr, Import, @external_module_reference { } /** A literal path expression appearing in an external module reference. */ +overlay[global] deprecated private class LiteralExternalModulePath extends PathExpr, ConstantString { LiteralExternalModulePath() { exists(ExternalModuleReference emr | this.getParentExpr*() = emr.getExpression()) @@ -268,6 +275,7 @@ class TypeAliasDeclaration extends @type_alias_declaration, TypeParameterized, S /** * Gets the canonical name of the type being defined. */ + overlay[global] deprecated TypeName getTypeName() { result.getADefinition() = this } override string getAPrimaryQlClass() { result = "TypeAliasDeclaration" } @@ -548,6 +556,7 @@ class LocalNamespaceName extends @local_namespace_name, LexicalName { /** * Gets the canonical name of the namespace referenced by this name. */ + overlay[global] deprecated Namespace getNamespace() { result = this.getADeclaration().getNamespace() } override DeclarationSpace getDeclarationSpace() { result = "namespace" } @@ -568,6 +577,7 @@ class TypeExpr extends ExprOrType, @typeexpr, TypeAnnotation { * Has no result if this occurs in a TypeScript file that was extracted * without type information. */ + overlay[global] deprecated override Type getType() { ast_node_type(this, result) } override Stmt getEnclosingStmt() { result = ExprOrType.super.getEnclosingStmt() } @@ -692,6 +702,7 @@ class TypeAccess extends @typeaccess, TypeExpr, TypeRef { /** * Gets the canonical name of the type being accessed. */ + overlay[global] deprecated TypeName getTypeName() { ast_node_symbol(this, result) } override string getAPrimaryQlClass() { result = "TypeAccess" } @@ -1379,6 +1390,7 @@ class LocalNamespaceDecl extends VarDecl, NamespaceRef { /** * Gets the canonical name of the namespace being defined or aliased by this name. */ + overlay[global] deprecated Namespace getNamespace() { ast_node_symbol(this, result) } } @@ -1397,6 +1409,7 @@ class NamespaceAccess extends TypeExpr, NamespaceRef, @namespace_access { /** * Gets the canonical name of the namespace being accessed. */ + overlay[global] deprecated Namespace getNamespace() { ast_node_symbol(this, result) } override string getAPrimaryQlClass() { result = "NamespaceAccess" } @@ -1506,6 +1519,7 @@ class EnumDeclaration extends NamespaceDefinition, @enum_declaration, AST::Value /** * Gets the canonical name of the type being defined. */ + overlay[global] deprecated TypeName getTypeName() { ast_node_symbol(this, result) } /** @@ -1594,6 +1608,7 @@ class EnumMember extends AstNode, @enum_member { /** * Gets the canonical name of the type defined by this enum member. */ + overlay[global] deprecated TypeName getTypeName() { ast_node_symbol(this, result) } override string getAPrimaryQlClass() { result = "EnumMember" } @@ -1762,6 +1777,7 @@ class TypeRootFolder extends Folder { /** * Gets the priority with which this type root folder should be used from within the given search root. */ + overlay[global] int getSearchPriority(Folder searchRoot) { findNodeModulesFolder(searchRoot, this.getNodeModulesFolder(), result) } @@ -1780,6 +1796,7 @@ class TypeRootFolder extends Folder { * For instance, there may be many AST nodes representing different uses of the * `number` keyword, but there only exists one `number` type. */ +overlay[global] deprecated class Type extends @type { /** * Gets a string representation of this type. @@ -1984,6 +2001,7 @@ deprecated class Type extends @type { * * A union type or intersection type, such as `string | number` or `T & U`. */ +overlay[global] deprecated class UnionOrIntersectionType extends Type, @union_or_intersection_type { /** * Gets the `i`th member of this union or intersection, starting at 0. @@ -2012,6 +2030,7 @@ deprecated class UnionOrIntersectionType extends Type, @union_or_intersection_ty * Note that the `boolean` type is represented as the union `true | false`, * but is still displayed as `boolean` in string representations. */ +overlay[global] deprecated class UnionType extends UnionOrIntersectionType, @union_type { } /** @@ -2022,6 +2041,7 @@ deprecated class UnionType extends UnionOrIntersectionType, @union_type { } * * An intersection type, such as `T & {x: number}`. */ +overlay[global] deprecated class IntersectionType extends UnionOrIntersectionType, @intersection_type { } /** @@ -2040,6 +2060,7 @@ deprecated class IntersectionType extends UnionOrIntersectionType, @intersection * Foreign array-like objects such as `HTMLCollection` are not normal JavaScript arrays, * and their corresponding types are not considered array types either. */ +overlay[global] deprecated class ArrayType extends Type { ArrayType() { this instanceof @tuple_type or @@ -2061,6 +2082,7 @@ deprecated class ArrayType extends Type { * * An array type such as `Array`, or equivalently, `string[]`. */ +overlay[global] deprecated class PlainArrayType extends ArrayType, TypeReference { PlainArrayType() { this.hasQualifiedName("Array") } @@ -2075,6 +2097,7 @@ deprecated class PlainArrayType extends ArrayType, TypeReference { * * A read-only array type such as `ReadonlyArray`. */ +overlay[global] deprecated class ReadonlyArrayType extends ArrayType, TypeReference { ReadonlyArrayType() { this.hasQualifiedName("ReadonlyArray") } } @@ -2087,6 +2110,7 @@ deprecated class ReadonlyArrayType extends ArrayType, TypeReference { * * A tuple type, such as `[number, string]`. */ +overlay[global] deprecated class TupleType extends ArrayType, @tuple_type { /** * Gets the `i`th member of this tuple type, starting at 0. @@ -2148,6 +2172,7 @@ deprecated class TupleType extends ArrayType, @tuple_type { * * The predefined `any` type. */ +overlay[global] deprecated class AnyType extends Type, @any_type { } /** @@ -2158,6 +2183,7 @@ deprecated class AnyType extends Type, @any_type { } * * The predefined `unknown` type. */ +overlay[global] deprecated class UnknownType extends Type, @unknown_type { } /** @@ -2168,6 +2194,7 @@ deprecated class UnknownType extends Type, @unknown_type { } * * The predefined `string` type. */ +overlay[global] deprecated class StringType extends Type, @string_type { } /** @@ -2178,6 +2205,7 @@ deprecated class StringType extends Type, @string_type { } * * The predefined `number` type. */ +overlay[global] deprecated class NumberType extends Type, @number_type { } /** @@ -2188,6 +2216,7 @@ deprecated class NumberType extends Type, @number_type { } * * The predefined `bigint` type. */ +overlay[global] deprecated class BigIntType extends Type, @bigint_type { } /** @@ -2198,6 +2227,7 @@ deprecated class BigIntType extends Type, @bigint_type { } * * A boolean, number, or string literal type. */ +overlay[global] deprecated class LiteralType extends Type, @literal_type { /** * Gets the string value of this literal. @@ -2213,6 +2243,7 @@ deprecated class LiteralType extends Type, @literal_type { * * The boolean literal type `true` or `false`. */ +overlay[global] deprecated class BooleanLiteralType extends LiteralType, @boolean_literal_type { /** * Gets the boolean value represented by this type. @@ -2227,6 +2258,7 @@ deprecated class BooleanLiteralType extends LiteralType, @boolean_literal_type { /** * A number literal as a static type. */ +overlay[global] deprecated class NumberLiteralType extends LiteralType, @number_literal_type { override string getStringValue() { type_literal_value(this, result) } @@ -2249,6 +2281,7 @@ deprecated class NumberLiteralType extends LiteralType, @number_literal_type { * * A string literal as a static type. */ +overlay[global] deprecated class StringLiteralType extends LiteralType, @string_literal_type { override string getStringValue() { type_literal_value(this, result) } } @@ -2261,6 +2294,7 @@ deprecated class StringLiteralType extends LiteralType, @string_literal_type { * * A bigint literal as a static type. */ +overlay[global] deprecated class BigIntLiteralType extends LiteralType { override string getStringValue() { type_literal_value(this, result) } @@ -2283,6 +2317,7 @@ deprecated class BigIntLiteralType extends LiteralType { * * The `boolean` type, internally represented as the union type `true | false`. */ +overlay[global] deprecated class BooleanType extends UnionType { BooleanType() { this.getAnElementType() instanceof @true_type and @@ -2299,6 +2334,7 @@ deprecated class BooleanType extends UnionType { * * The `string` type or a string literal type. */ +overlay[global] deprecated class StringLikeType extends Type { StringLikeType() { this instanceof StringType or @@ -2314,6 +2350,7 @@ deprecated class StringLikeType extends Type { * * The `number` type or a number literal type. */ +overlay[global] deprecated class NumberLikeType extends Type { NumberLikeType() { this instanceof NumberType or @@ -2329,6 +2366,7 @@ deprecated class NumberLikeType extends Type { * * The `boolean`, `true,` or `false` type. */ +overlay[global] deprecated class BooleanLikeType extends Type { BooleanLikeType() { this instanceof BooleanType or @@ -2344,6 +2382,7 @@ deprecated class BooleanLikeType extends Type { * * The `void` type. */ +overlay[global] deprecated class VoidType extends Type, @void_type { } /** @@ -2354,6 +2393,7 @@ deprecated class VoidType extends Type, @void_type { } * * The `undefined` type. */ +overlay[global] deprecated class UndefinedType extends Type, @undefined_type { } /** @@ -2364,6 +2404,7 @@ deprecated class UndefinedType extends Type, @undefined_type { } * * The `null` type. */ +overlay[global] deprecated class NullType extends Type, @null_type { } /** @@ -2374,6 +2415,7 @@ deprecated class NullType extends Type, @null_type { } * * The `never` type. */ +overlay[global] deprecated class NeverType extends Type, @never_type { } /** @@ -2384,6 +2426,7 @@ deprecated class NeverType extends Type, @never_type { } * * The `symbol` type or a specific `unique symbol` type. */ +overlay[global] deprecated class SymbolType extends Type, @symbol_type { } /** @@ -2394,6 +2437,7 @@ deprecated class SymbolType extends Type, @symbol_type { } * * The `symbol` type. */ +overlay[global] deprecated class PlainSymbolType extends SymbolType, @plain_symbol_type { } /** @@ -2404,6 +2448,7 @@ deprecated class PlainSymbolType extends SymbolType, @plain_symbol_type { } * * A `unique symbol` type. */ +overlay[global] deprecated class UniqueSymbolType extends SymbolType, @unique_symbol_type { /** * Gets the canonical name of the variable exposing the symbol. @@ -2438,6 +2483,7 @@ deprecated class UniqueSymbolType extends SymbolType, @unique_symbol_type { * * The `object` type. */ +overlay[global] deprecated class ObjectKeywordType extends Type, @objectkeyword_type { } /** @@ -2448,6 +2494,7 @@ deprecated class ObjectKeywordType extends Type, @objectkeyword_type { } * * A type that refers to a class, interface, enum, or enum member. */ +overlay[global] deprecated class TypeReference extends Type, @type_reference { /** * Gets the canonical name of the type being referenced. @@ -2506,6 +2553,7 @@ deprecated class TypeReference extends Type, @type_reference { * * A type that refers to a class, possibly with type arguments. */ +overlay[global] deprecated class ClassType extends TypeReference { ClassDefinition declaration; @@ -2525,6 +2573,7 @@ deprecated class ClassType extends TypeReference { * * A type that refers to an interface, possibly with type arguents. */ +overlay[global] deprecated class InterfaceType extends TypeReference { InterfaceDeclaration declaration; @@ -2544,6 +2593,7 @@ deprecated class InterfaceType extends TypeReference { * * A type that refers to an enum. */ +overlay[global] deprecated class EnumType extends TypeReference { EnumDeclaration declaration; @@ -2563,6 +2613,7 @@ deprecated class EnumType extends TypeReference { * * A type that refers to the value of an enum member. */ +overlay[global] deprecated class EnumLiteralType extends TypeReference { EnumMember declaration; @@ -2582,6 +2633,7 @@ deprecated class EnumLiteralType extends TypeReference { * * A type that refers to a type alias. */ +overlay[global] deprecated class TypeAliasReference extends TypeReference { TypeAliasReference() { type_alias(this, _) } @@ -2601,6 +2653,7 @@ deprecated class TypeAliasReference extends TypeReference { * * An anonymous interface type, such as `{ x: number }`. */ +overlay[global] deprecated class AnonymousInterfaceType extends Type, @object_type { } /** @@ -2611,6 +2664,7 @@ deprecated class AnonymousInterfaceType extends Type, @object_type { } * * A type that refers to a type variable. */ +overlay[global] deprecated class TypeVariableType extends Type, @typevariable_type { /** * Gets a syntactic declaration of this type variable. @@ -2656,6 +2710,7 @@ deprecated class TypeVariableType extends Type, @typevariable_type { * * A type that refers to a type variable declared on a class, interface or function. */ +overlay[global] deprecated class CanonicalTypeVariableType extends TypeVariableType, @canonical_type_variable_type { override TypeName getHostType() { result = this.getCanonicalName().getParent() } @@ -2681,6 +2736,7 @@ deprecated class CanonicalTypeVariableType extends TypeVariableType, @canonical_ * - `(x: T) => T` * - `(x: S, y: T) => T`. */ +overlay[global] deprecated class LexicalTypeVariableType extends TypeVariableType, @lexical_type_variable_type { override string getName() { types(this, _, result) // The toString value contains the name. @@ -2703,6 +2759,7 @@ deprecated class LexicalTypeVariableType extends TypeVariableType, @lexical_type * } * ``` */ +overlay[global] deprecated class ThisType extends Type, @this_type { /** * Gets the type containing the `this` type. @@ -2721,6 +2778,7 @@ deprecated class ThisType extends Type, @this_type { * The type of a named value, `typeof X`, typically denoting the type of * a class constructor, namespace object, enum object, or module object. */ +overlay[global] deprecated class TypeofType extends Type, @typeof_type { /** * Gets the canonical name of the named value. @@ -2801,6 +2859,7 @@ module SignatureKind { * * A function or constructor signature in a TypeScript type. */ +overlay[global] deprecated class CallSignatureType extends @signature_type { /** * Gets a value indicating if this is a function or constructor signature. @@ -2955,6 +3014,7 @@ deprecated class CallSignatureType extends @signature_type { * * A function call signature in a type, that is, a signature without the `new` keyword. */ +overlay[global] deprecated class FunctionCallSignatureType extends CallSignatureType, @function_signature_type { } /** @@ -2965,6 +3025,7 @@ deprecated class FunctionCallSignatureType extends CallSignatureType, @function_ * * A constructor call signature in a type, that is, a signature with the `new` keyword. */ +overlay[global] deprecated class ConstructorCallSignatureType extends CallSignatureType, @constructor_signature_type { } @@ -2976,6 +3037,7 @@ deprecated class ConstructorCallSignatureType extends CallSignatureType, @constr * - It has one type parameter, say, `T` * - It has a `then` method whose first argument is a callback that takes a `T` as argument. */ +overlay[global] deprecated private class PromiseTypeName extends TypeName { PromiseTypeName() { // The name must suggest it is a promise. @@ -3005,6 +3067,7 @@ deprecated private class PromiseTypeName extends TypeName { * This includes types whose name and `then` method signature suggest it is a promise, * such as `PromiseLike` and `Thenable`. */ +overlay[global] deprecated class PromiseType extends TypeReference { PromiseType() { this.getNumTypeArgument() = 1 and diff --git a/javascript/ql/lib/semmle/javascript/Variables.qll b/javascript/ql/lib/semmle/javascript/Variables.qll index adc0ad5b9c87..aa97233af49b 100644 --- a/javascript/ql/lib/semmle/javascript/Variables.qll +++ b/javascript/ql/lib/semmle/javascript/Variables.qll @@ -1,4 +1,6 @@ /** Provides classes for modeling program variables. */ +overlay[local?] +module; import javascript @@ -62,6 +64,7 @@ class LocalScope extends Scope { */ class ModuleScope extends Scope, @module_scope { /** Gets the module that induces this scope. */ + overlay[global] Module getModule() { result = this.getScopeElement() } override string toString() { result = "module scope" } @@ -256,6 +259,7 @@ class VarRef extends @varref, Identifier, BindingPattern, LexicalRef { override VarRef getABindingVarRef() { result = this } + overlay[global] override predicate isImpure() { none() } override Expr getUnderlyingReference() { result = this } @@ -543,6 +547,7 @@ class ArrayPattern extends DestructuringPattern, @array_pattern { /** Holds if this array pattern has an omitted element. */ predicate hasOmittedElement() { this.elementIsOmitted(_) } + overlay[global] override predicate isImpure() { this.getAnElement().isImpure() } override VarRef getABindingVarRef() { @@ -583,6 +588,7 @@ class ObjectPattern extends DestructuringPattern, @object_pattern { /** Gets the rest property pattern of this object pattern, if any. */ override Expr getRest() { result = this.getChildExpr(-1) } + overlay[global] override predicate isImpure() { this.getAPropertyPattern().isImpure() } override VarRef getABindingVarRef() { @@ -640,6 +646,7 @@ class PropertyPattern extends @property, AstNode { ObjectPattern getObjectPattern() { properties(this, result, _, _, _) } /** Holds if this pattern is impure, that is, if its evaluation could have side effects. */ + overlay[global] predicate isImpure() { this.isComputed() and this.getNameExpr().isImpure() or @@ -844,6 +851,7 @@ class SimpleParameter extends Parameter, VarDecl { * Gets a use of this parameter that refers to its initial value as * passed in from the caller. */ + overlay[global] VarUse getAnInitialUse() { exists(SsaDefinition ssa | ssa.getAContributingVarDef() = this and diff --git a/javascript/ql/lib/semmle/javascript/XML.qll b/javascript/ql/lib/semmle/javascript/XML.qll index 54157809260b..e4073362fc6f 100644 --- a/javascript/ql/lib/semmle/javascript/XML.qll +++ b/javascript/ql/lib/semmle/javascript/XML.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with XML files and their content. */ +overlay[local?] +module; import semmle.files.FileSystem private import codeql.xml.Xml diff --git a/javascript/ql/lib/semmle/javascript/YAML.qll b/javascript/ql/lib/semmle/javascript/YAML.qll index a312d78b6fbe..21b0825c8617 100644 --- a/javascript/ql/lib/semmle/javascript/YAML.qll +++ b/javascript/ql/lib/semmle/javascript/YAML.qll @@ -4,6 +4,8 @@ * YAML documents are represented as abstract syntax trees whose nodes * are either YAML values or alias nodes referring to another YAML value. */ +overlay[local?] +module; import javascript private import codeql.yaml.Yaml as LibYaml diff --git a/javascript/ql/lib/semmle/javascript/dataflow/AbstractValues.qll b/javascript/ql/lib/semmle/javascript/dataflow/AbstractValues.qll index 41509516cc16..8692f1b6ff31 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/AbstractValues.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/AbstractValues.qll @@ -37,6 +37,8 @@ * they represent; additionally, indefinite abstract values record * the source of imprecision that caused them to arise. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.internal.AbstractValuesImpl @@ -57,6 +59,7 @@ class AbstractValue extends TAbstractValue { * Gets the Boolean value some concrete value represented by this * abstract value coerces to. */ + pragma[nomagic] abstract boolean getBooleanValue(); /** @@ -97,6 +100,7 @@ class AbstractValue extends TAbstractValue { * In all cases, purely local flow tracking is used to find prototype objects, so * this predicate cannot be relied on to compute all possible prototype objects. */ + overlay[global] DefiniteAbstractValue getAPrototype() { exists(AbstractProtoProperty proto | proto.getBase() = this and diff --git a/javascript/ql/lib/semmle/javascript/dataflow/AdditionalFlowSteps.qll b/javascript/ql/lib/semmle/javascript/dataflow/AdditionalFlowSteps.qll index b37c1610ec1d..1688d4b67c55 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/AdditionalFlowSteps.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/AdditionalFlowSteps.qll @@ -33,21 +33,25 @@ private import semmle.javascript.internal.CachedStages * Note: For performance reasons, all subclasses of this class should be part * of the standard library. Use `isAdditionalFlowStep` for query-specific flow steps. */ +overlay[local?] class AdditionalFlowStep extends Unit { /** * Holds if `pred` → `succ` should be considered a value-preserving data flow edge.f */ + overlay[global] predicate step(DataFlow::Node pred, DataFlow::Node succ) { none() } /** * Holds if `pred` → `succ` should be considered a value-preserving data flow edge that * crosses calling contexts. */ + overlay[global] predicate jumpStep(DataFlow::Node pred, DataFlow::Node succ) { none() } /** * Holds if `pred` should be stored in the given `content` of the object `succ`. */ + overlay[global] predicate storeStep(DataFlow::Node pred, DataFlow::ContentSet contents, DataFlow::Node succ) { none() } @@ -55,6 +59,7 @@ class AdditionalFlowStep extends Unit { /** * Holds if the given `content` of the object in `pred` should be read into `succ`. */ + overlay[global] predicate readStep(DataFlow::Node pred, DataFlow::ContentSet contents, DataFlow::Node succ) { none() } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/Configuration.qll b/javascript/ql/lib/semmle/javascript/dataflow/Configuration.qll index 82c59dd7e29d..423727b4ecee 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/Configuration.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/Configuration.qll @@ -625,15 +625,19 @@ abstract class LabeledBarrierGuardNode extends BarrierGuardNode { * * For use with load/store steps in `DataFlow::SharedFlowStep` and TypeTracking. */ +overlay[local?] module PseudoProperties { /** Holds if `s` is a pseudo-property. */ bindingset[s] + overlay[caller?] predicate isPseudoProperty(string s) { s.matches("$%$") } bindingset[s] + overlay[caller?] private string pseudoProperty(string s) { result = "$" + s + "$" } bindingset[s, v] + overlay[caller?] private string pseudoProperty(string s, string v) { result = "$" + s + "|" + v + "$" } /** @@ -680,6 +684,7 @@ module PseudoProperties { * Gets a pseudo-property for the location of a map value where the key is `key`. * The string value of the `key` is encoded in the result, and there is only a result if the string value of `key` is known. */ + overlay[caller?] pragma[inline] string mapValueKnownKey(DataFlow::Node key) { result = mapValueKey(any(string s | key.mayHaveStringValue(s))) @@ -689,17 +694,20 @@ module PseudoProperties { * Gets a pseudo-property for the location of a map value where the key is `key`. */ bindingset[key] + overlay[caller?] string mapValueKey(string key) { result = pseudoProperty("mapValue", key) } /** * Holds if `prop` equals `mapValueKey(key)` for some value of `key`. */ bindingset[prop] + overlay[caller?] predicate isMapValueKey(string prop) { prop.matches("$mapValue|%$") } /** * Gets a pseudo-property for the location of a map value where the key is `key`. */ + overlay[caller?] pragma[inline] string mapValue(DataFlow::Node key) { result = mapValueKnownKey(key) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/CustomAbstractValueDefinitions.qll b/javascript/ql/lib/semmle/javascript/dataflow/CustomAbstractValueDefinitions.qll index 5a762f4aa1bb..e4cc05595ec3 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/CustomAbstractValueDefinitions.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/CustomAbstractValueDefinitions.qll @@ -7,6 +7,8 @@ * For performance reasons, all subclasses of `CustomAbstractValueDefinition` * should be part of the standard library. */ +overlay[local?] +module; private import javascript private import internal.AbstractValuesImpl @@ -32,6 +34,7 @@ class CustomAbstractValueFromDefinition extends AbstractValue, TCustomAbstractVa override predicate isIndefinite(DataFlow::Incompleteness cause) { def.isIndefinite(cause) } + overlay[global] override DefiniteAbstractValue getAPrototype() { result = def.getAPrototype() } override predicate hasLocationInfo( @@ -98,6 +101,7 @@ abstract class CustomAbstractValueDefinition extends Locatable { * Gets an abstract value that represents a prototype object of the * induced abstract value. */ + overlay[global] AbstractValue getAPrototype() { exists(AbstractProtoProperty proto | proto.getBase() = this.getAbstractValue() and @@ -119,6 +123,7 @@ abstract class CustomAbstractValueDefinition extends Locatable { /** * Flow analysis for custom abstract values. */ +overlay[global] class CustomAbstractValueFromDefinitionNode extends DataFlow::AnalyzedNode, DataFlow::ValueNode { CustomAbstractValueFromDefinition val; diff --git a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll index 3d5308eabf51..e51917eee195 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll @@ -17,6 +17,8 @@ * Flow through global variables, object properties or function calls is not * modeled (except for immediately invoked functions as explained above). */ +overlay[local?] +module; import javascript private import internal.CallGraphs @@ -64,9 +66,11 @@ module DataFlow { * `p.getALocalSource()` does _not_ return the corresponding argument, and * `p.isIncomplete("call")` holds. */ + overlay[global] predicate isIncomplete(Incompleteness cause) { isIncomplete(this, cause) } /** Gets type inference results for this data flow node. */ + overlay[global] AnalyzedNode analyze() { result = this } /** Gets the expression corresponding to this data flow node, if any. */ @@ -124,11 +128,13 @@ module DataFlow { int getIntValue() { result = this.asExpr().getIntValue() } /** Gets a function value that may reach this node. */ + overlay[global] final FunctionNode getAFunctionValue() { CallGraph::getAFunctionReference(result, 0).flowsTo(this) } /** Gets a function value that may reach this node with the given `imprecision` level. */ + overlay[global] final FunctionNode getAFunctionValue(int imprecision) { CallGraph::getAFunctionReference(result, imprecision).flowsTo(this) } @@ -137,6 +143,7 @@ module DataFlow { * Gets a function value that may reach this node, * possibly derived from a partial function invocation. */ + overlay[global] final FunctionNode getABoundFunctionValue(int boundArgs) { result = this.getAFunctionValue() and boundArgs = 0 or @@ -192,6 +199,7 @@ module DataFlow { FlowSteps::identityFunctionStep(result, this) } + overlay[global] private NameResolution::Node getNameResolutionNode() { this = valueNode(result) or @@ -205,6 +213,7 @@ module DataFlow { * Holds if this node is annotated with the given named type, * or is declared as a subtype thereof, or is a union or intersection containing such a type. */ + overlay[global] cached predicate hasUnderlyingType(string globalName) { Stages::TypeTracking::ref() and @@ -218,6 +227,7 @@ module DataFlow { * Holds if this node is annotated with the given named type, * or is declared as a subtype thereof, or is a union or intersection containing such a type. */ + overlay[global] cached predicate hasUnderlyingType(string moduleName, string typeName) { Stages::TypeTracking::ref() and @@ -466,6 +476,7 @@ module DataFlow { /** * Gets an accessor (`get` or `set` method) that may be invoked by this property reference. */ + overlay[global] final DataFlow::FunctionNode getAnAccessorCallee() { result = CallGraph::getAnAccessorCallee(this) } @@ -1419,11 +1430,13 @@ module DataFlow { * This predicate is only defined for expressions, properties, and for statements that declare * a function, a class, or a TypeScript namespace or enum. */ + pragma[nomagic] ValueNode valueNode(AstNode nd) { result.getAstNode() = nd } /** * Gets the data flow node corresponding to `e`. */ + overlay[caller?] pragma[inline] ExprNode exprNode(Expr e) { result = valueNode(e) } @@ -1762,6 +1775,7 @@ module DataFlow { ) } + overlay[global] private class ReflectiveParamsStep extends LegacyPreCallGraphStep { override predicate loadStep(DataFlow::Node obj, DataFlow::Node element, string prop) { exists(DataFlow::ReflectiveParametersNode params, DataFlow::FunctionNode f, int i | @@ -1774,6 +1788,7 @@ module DataFlow { } /** A taint step from the reflective parameters node to any parameter. */ + overlay[global] private class ReflectiveParamsTaintStep extends TaintTracking::LegacyTaintStep { override predicate step(DataFlow::Node obj, DataFlow::Node element) { exists(DataFlow::ReflectiveParametersNode params, DataFlow::FunctionNode f | @@ -1787,6 +1802,7 @@ module DataFlow { /** * Holds if there is a step from `pred` to `succ` through a field accessed through `this` in a class. */ + overlay[global] predicate localFieldStep(DataFlow::Node pred, DataFlow::Node succ) { exists(ClassNode cls, string prop | pred = AccessPath::getAnAssignmentTo(cls.getADirectSuperClass*().getAReceiverNode(), prop) or @@ -1819,6 +1835,7 @@ module DataFlow { * `p.getALocalSource()` does _not_ return the corresponding argument, and * `p.isIncomplete("call")` holds. */ + overlay[global] predicate isIncomplete(Node nd, Incompleteness cause) { exists(SsaVariable ssa | nd = TSsaDefNode(ssa.getDefinition()) | defIsIncomplete(ssa.(SsaExplicitDefinition).getDef(), cause) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/FlowSummary.qll b/javascript/ql/lib/semmle/javascript/dataflow/FlowSummary.qll index eb7160683a76..c4661b321ea6 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/FlowSummary.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/FlowSummary.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for defining flow summaries. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.internal.sharedlib.FlowSummaryImpl as Impl diff --git a/javascript/ql/lib/semmle/javascript/dataflow/InferredTypes.qll b/javascript/ql/lib/semmle/javascript/dataflow/InferredTypes.qll index b7b2b9ba1e5b..cfce0fd20cd5 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/InferredTypes.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/InferredTypes.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + /** * Types inferred by the flow analysis, represented as type tags. * diff --git a/javascript/ql/lib/semmle/javascript/dataflow/Nodes.qll b/javascript/ql/lib/semmle/javascript/dataflow/Nodes.qll index 0e6394a6f557..d854dfc3f628 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/Nodes.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/Nodes.qll @@ -3,6 +3,8 @@ * as nodes corresponding to function definitions or nodes corresponding to * parameters. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dependencies.Dependencies @@ -158,6 +160,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN * addEventHandler("click", foo.bind(this, "value of x")) * ``` */ + overlay[global] ParameterNode getABoundCallbackParameter(int callback, int param) { exists(int boundArgs | result = @@ -178,6 +181,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN private ObjectLiteralNode getOptionsArgument(int i) { result.flowsTo(this.getArgument(i)) } /** Gets an abstract value representing possible callees of this call site. */ + overlay[global] final AbstractValue getACalleeValue() { exists(DataFlow::Node callee, DataFlow::AnalyzedNode analyzed | pragma[only_bind_into](callee) = this.getCalleeNode() and @@ -192,6 +196,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN * To alter the call graph as seen by the interprocedural data flow libraries, override * the `getACallee(int imprecision)` predicate instead. */ + overlay[global] final Function getACallee() { result = this.getACallee(0) } /** @@ -206,6 +211,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN * This predicate can be overridden to alter the call graph used by the interprocedural * data flow libraries. */ + overlay[global] Function getACallee(int imprecision) { result = CallGraph::getACallee(this, imprecision).getFunction() } @@ -214,6 +220,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN * Holds if the approximation of possible callees for this call site is * affected by the given analysis incompleteness `cause`. */ + overlay[global] predicate isIndefinite(DataFlow::Incompleteness cause) { this.getACalleeValue().isIndefinite(cause) } @@ -229,6 +236,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN * independent contexts, so tracking flow through it leads to * imprecision. */ + overlay[global] predicate isImprecise() { this.isIndefinite("global") and exists(DefiniteAbstractValue v | v = this.getACalleeValue() | not v instanceof AbstractCallable) @@ -238,6 +246,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN * Holds if our approximation of possible callees for this call site is * likely to be incomplete. */ + overlay[global] predicate isIncomplete() { // the flow analysis identifies a source of incompleteness other than // global flow (which usually leads to imprecision rather than incompleteness) @@ -248,6 +257,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN * Holds if our approximation of possible callees for this call site is * likely to be imprecise or incomplete. */ + overlay[global] predicate isUncertain() { this.isImprecise() or this.isIncomplete() } /** @@ -383,6 +393,9 @@ DataFlow::SourceNode globalObjectRef() { // DOM result = globalVariable("window") or + // DOM alias via `document.defaultView` + result = globalVariable("document").getAPropertyRead("defaultView") + or // Node.js result = globalVariable("global") or @@ -763,7 +776,7 @@ module ModuleImportNode { cached ModuleImportNode moduleImport(string path) { // NB. internal modules may be imported with a "node:" prefix - Stages::Imports::ref() and result.getPath() = ["node:" + path, path] + result.getPath() = ["node:" + path, path] } /** @@ -771,6 +784,7 @@ ModuleImportNode moduleImport(string path) { * `require("lodash")` in a context where a package.json file includes * `"lodash"` as a dependency. */ +overlay[global] ModuleImportNode dependencyModuleImport(Dependency dep) { result = dep.getAUse("import").(Import).getImportedModuleNode() } @@ -861,6 +875,7 @@ module MemberKind { * * Additional patterns can be recognized as class nodes, by extending `DataFlow::ClassNode::Range`. */ +overlay[global] class ClassNode extends DataFlow::ValueNode, DataFlow::SourceNode { override AST::ValueNode astNode; AbstractCallable function; @@ -1329,6 +1344,7 @@ class ClassNode extends DataFlow::ValueNode, DataFlow::SourceNode { /** * Helper predicate to get a prototype reference in a file. */ +overlay[global] private DataFlow::PropRef getAPrototypeReferenceInFile(string name, File f) { result.getBase() = AccessPath::getAReferenceOrAssignmentTo(name) and result.getPropertyName() = "prototype" and @@ -1338,6 +1354,7 @@ private DataFlow::PropRef getAPrototypeReferenceInFile(string name, File f) { /** * Helper predicate to get an instantiation in a file. */ +overlay[global] private DataFlow::NewNode getAnInstantiationInFile(string name, File f) { result = AccessPath::getAReferenceTo(name).(DataFlow::LocalSourceNode).getAnInstantiation() and result.getFile() = f @@ -1346,6 +1363,7 @@ private DataFlow::NewNode getAnInstantiationInFile(string name, File f) { /** * Gets a reference to the function `func`, where there exists a read/write of the "prototype" property on that reference. */ +overlay[global] pragma[noinline] private DataFlow::SourceNode getAFunctionValueWithPrototype(AbstractValue func) { exists(result.getAPropertyReference("prototype")) and @@ -1353,6 +1371,7 @@ private DataFlow::SourceNode getAFunctionValueWithPrototype(AbstractValue func) func instanceof AbstractCallable // the join-order goes bad if `func` has type `AbstractFunction`. } +overlay[global] module ClassNode { /** * A dataflow node that should be considered a class node. @@ -1435,6 +1454,7 @@ module ClassNode { * _.partial(fn, x, y, z) * ``` */ +overlay[global] class PartialInvokeNode extends DataFlow::Node instanceof PartialInvokeNode::Range { /** Gets a node holding a callback invoked by this partial invocation node. */ DataFlow::Node getACallbackNode() { @@ -1470,6 +1490,7 @@ class PartialInvokeNode extends DataFlow::Node instanceof PartialInvokeNode::Ran } } +overlay[global] module PartialInvokeNode { /** * A data flow node that performs a partial function application. @@ -1717,6 +1738,7 @@ class RegExpCreationNode extends DataFlow::SourceNode { predicate maybeGlobal() { RegExp::maybeGlobal(this.tryGetFlags()) } /** Gets a data flow node referring to this regular expression. */ + overlay[global] private DataFlow::SourceNode getAReference(DataFlow::TypeTracker t) { t.start() and result = this @@ -1725,6 +1747,7 @@ class RegExpCreationNode extends DataFlow::SourceNode { } /** Gets a data flow node referring to this regular expression. */ + overlay[global] cached DataFlow::SourceNode getAReference() { Stages::FlowSteps::ref() and @@ -1736,6 +1759,7 @@ class RegExpCreationNode extends DataFlow::SourceNode { * A guard node for a variable in a negative condition, such as `x` in `if(!x)`. * Can be added to a `isBarrier` in a data-flow configuration to block flow through such checks. */ +overlay[global] class VarAccessBarrier extends DataFlow::Node { VarAccessBarrier() { exists(ConditionGuardNode guard, SsaRefinementNode refinement | diff --git a/javascript/ql/lib/semmle/javascript/dataflow/Refinements.qll b/javascript/ql/lib/semmle/javascript/dataflow/Refinements.qll index feb0187487e5..2fa76caed79a 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/Refinements.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/Refinements.qll @@ -27,6 +27,8 @@ * so the refinement can evaluate to both `true` and `false` for the same * candidate value. */ +overlay[local?] +module; import javascript private import AbstractValues @@ -45,6 +47,7 @@ abstract class RefinementCandidate extends Expr { /** * Gets a refinement value inferred for this expression in context `ctxt`. */ + overlay[global] pragma[nomagic] abstract RefinementValue eval(RefinementContext ctxt); } @@ -64,6 +67,7 @@ class Refinement extends Expr instanceof RefinementCandidate { /** * Gets a refinement value inferred for this expression in context `ctxt`. */ + overlay[global] RefinementValue eval(RefinementContext ctxt) { result = super.eval(ctxt) } } @@ -71,6 +75,7 @@ class Refinement extends Expr instanceof RefinementCandidate { abstract private class LiteralRefinement extends RefinementCandidate, Literal { override SsaSourceVariable getARefinedVar() { none() } + overlay[global] override RefinementValue eval(RefinementContext ctxt) { ctxt.appliesTo(this) and result = this.eval() } @@ -78,16 +83,19 @@ abstract private class LiteralRefinement extends RefinementCandidate, Literal { /** * Gets the refinement value that represents this literal. */ + overlay[global] RefinementValue eval() { result = TAny() } } /** A `null` literal, viewed as a refinement expression. */ private class NullLiteralRefinement extends LiteralRefinement, NullLiteral { + overlay[global] override RefinementValue eval() { result = TValueWithType(TTNull()) } } /** A Boolean literal, viewed as a refinement expression. */ private class BoolRefinement extends LiteralRefinement, BooleanLiteral { + overlay[global] override RefinementValue eval() { exists(boolean b | b.toString() = this.getValue() | result = TBoolConstant(b)) } @@ -95,11 +103,13 @@ private class BoolRefinement extends LiteralRefinement, BooleanLiteral { /** A constant string, viewed as a refinement expression. */ private class StringRefinement extends LiteralRefinement, ConstantString { + overlay[global] override RefinementValue eval() { result = TStringConstant(this.getStringValue()) } } /** A numeric literal, viewed as a refinement expression. */ abstract private class NumberRefinement extends LiteralRefinement, NumberLiteral { + overlay[global] override RefinementValue eval() { result = TValueWithType(TTNumber()) } } @@ -112,6 +122,7 @@ abstract private class NumberRefinement extends LiteralRefinement, NumberLiteral private class IntRefinement extends NumberRefinement, NumberLiteral { IntRefinement() { this.getValue().toInt() = 0 } + overlay[global] override RefinementValue eval() { result = TIntConstant(this.getValue().toInt()) } } @@ -123,6 +134,7 @@ private class UndefinedInRefinement extends RefinementCandidate, { override SsaSourceVariable getARefinedVar() { none() } + overlay[global] override RefinementValue eval(RefinementContext ctxt) { ctxt.appliesTo(this) and result = TValueWithType(TTUndefined()) @@ -135,6 +147,7 @@ private class VariableRefinement extends RefinementCandidate, VarUse { override SsaSourceVariable getARefinedVar() { result = this.getVariable() } + overlay[global] override RefinementValue eval(RefinementContext ctxt) { ctxt.appliesTo(this) and result = ctxt.(VarRefinementContext).getAValue() @@ -149,6 +162,7 @@ private class ParRefinement extends RefinementCandidate, ParExpr { result = this.getExpression().(RefinementCandidate).getARefinedVar() } + overlay[global] override RefinementValue eval(RefinementContext ctxt) { result = this.getExpression().(RefinementCandidate).eval(ctxt) } @@ -162,6 +176,7 @@ private class TypeofRefinement extends RefinementCandidate, TypeofExpr { result = this.getOperand().(RefinementCandidate).getARefinedVar() } + overlay[global] override RefinementValue eval(RefinementContext ctxt) { exists(RefinementValue opVal | opVal = this.getOperand().(RefinementCandidate).eval(ctxt) and @@ -182,6 +197,7 @@ private class EqRefinement extends RefinementCandidate, EqualityTest { result = this.getRightOperand().(RefinementCandidate).getARefinedVar() } + overlay[global] override RefinementValue eval(RefinementContext ctxt) { exists(RefinementCandidate l, RefinementValue lv, RefinementCandidate r, RefinementValue rv | l = this.getLeftOperand() and @@ -220,6 +236,7 @@ private class IndexRefinement extends RefinementCandidate, IndexExpr { result = this.getIndex().(RefinementCandidate).getARefinedVar() } + overlay[global] override RefinementValue eval(RefinementContext ctxt) { exists( RefinementCandidate base, RefinementValue baseVal, RefinementCandidate index, @@ -242,6 +259,7 @@ private class IndexRefinement extends RefinementCandidate, IndexExpr { * if any. */ bindingset[s, i] +overlay[global] private RefinementValue evalIndex(StringConstant s, IntConstant i) { result = TStringConstant(s.getValue().charAt(i.getValue())) } @@ -249,6 +267,7 @@ private RefinementValue evalIndex(StringConstant s, IntConstant i) { /** * A context in which a refinement expression is analyzed. */ +overlay[global] newtype TRefinementContext = /** * A refinement context associated with refinement `ref`, specifying that variable `var` @@ -266,6 +285,7 @@ newtype TRefinementContext = /** * A context in which a refinement expression is analyzed. */ +overlay[global] class RefinementContext extends TRefinementContext { /** * Holds if refinement expression `cand` might be analyzed in this context. @@ -280,6 +300,7 @@ class RefinementContext extends TRefinementContext { * A refinement context specifying that some variable is assumed to have one particular * abstract value. */ +overlay[global] class VarRefinementContext extends RefinementContext, TVarRefinementContext { override predicate appliesTo(RefinementCandidate cand) { exists(AnalyzedRefinement ref, SsaSourceVariable var | diff --git a/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll b/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll index 7503e5001e0f..55614388e7bd 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll @@ -5,6 +5,8 @@ * Note that unlike `TypeTracking.qll`, this library only performs * local tracking within a function. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.TypeTracking @@ -192,6 +194,7 @@ class SourceNode extends DataFlow::Node instanceof SourceNode::Range { * * See `TypeTracker` for more details about how to use this. */ + overlay[global] pragma[inline] DataFlow::SourceNode track(TypeTracker t2, TypeTracker t) { t = t2.step(this, result) } @@ -200,6 +203,7 @@ class SourceNode extends DataFlow::Node instanceof SourceNode::Range { * * See `TypeBackTracker` for more details about how to use this. */ + overlay[global] pragma[inline] DataFlow::SourceNode backtrack(TypeBackTracker t2, TypeBackTracker t) { t2 = t.step(result, this) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/TypeInference.qll b/javascript/ql/lib/semmle/javascript/dataflow/TypeInference.qll index 32ad78eb2c6d..a5e686a90c25 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/TypeInference.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/TypeInference.qll @@ -92,10 +92,15 @@ class AnalyzedNode extends DataFlow::Node { PrimitiveType getAPrimitiveType() { result = this.getAValue().toPrimitive().getType() } /** Gets a Boolean value that this node evaluates to. */ + bindingset[this] + overlay[caller?] + pragma[inline_late] boolean getABooleanValue() { result = this.getAValue().getBooleanValue() } /** Gets the unique Boolean value that this node evaluates to, if any. */ - boolean getTheBooleanValue() { forex(boolean bv | bv = this.getABooleanValue() | result = bv) } + overlay[caller?] + pragma[inline] + boolean getTheBooleanValue() { result = unique( | | this.getABooleanValue()) } /** Gets the unique type inferred for this node, if any. */ InferredType getTheType() { result = unique(InferredType t | t = this.getAType()) } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/AbstractValuesImpl.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/AbstractValuesImpl.qll index 6bcef1dc4128..65f0d24e48df 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/AbstractValuesImpl.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/AbstractValuesImpl.qll @@ -3,6 +3,8 @@ * * Provides a representation for abstract values. */ +overlay[local?] +module; private import javascript import semmle.javascript.dataflow.AbstractValues diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/AccessPaths.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/AccessPaths.qll index 3bcc36a65773..bd9928105178 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/AccessPaths.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/AccessPaths.qll @@ -14,6 +14,8 @@ * to the same value have the same access paths, so access paths are neither sound nor * complete as an approximation of expression semantics. */ +overlay[local?] +module; import javascript private import semmle.javascript.internal.CachedStages diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/AdditionalFlowInternal.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/AdditionalFlowInternal.qll index d7f92ce8dd30..ed07ffa73955 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/AdditionalFlowInternal.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/AdditionalFlowInternal.qll @@ -5,6 +5,7 @@ private import semmle.javascript.dataflow.internal.DataFlowPrivate /** * Gets a data-flow node synthesized using `AdditionalFlowInternal#needsSynthesizedNode`. */ +overlay[local?] DataFlow::Node getSynthesizedNode(AstNode node, string tag) { result = TGenericSynthesizedNode(node, tag, _) } @@ -12,6 +13,7 @@ DataFlow::Node getSynthesizedNode(AstNode node, string tag) { /** * An extension to `AdditionalFlowStep` with additional internal-only predicates. */ +overlay[local?] class AdditionalFlowInternal extends DataFlow::AdditionalFlowStep { /** * Holds if a data-flow node should be synthesized for the pair `(node, tag)`. @@ -25,10 +27,12 @@ class AdditionalFlowInternal extends DataFlow::AdditionalFlowStep { /** * Holds if `node` should only permit flow of values stored in `contents`. */ + overlay[global] predicate expectsContent(DataFlow::Node node, DataFlow::ContentSet contents) { none() } /** * Holds if `node` should not permit flow of values stored in `contents`. */ + overlay[global] predicate clearsContent(DataFlow::Node node, DataFlow::ContentSet contents) { none() } } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/BarrierGuards.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/BarrierGuards.qll index 39c4b604fd7d..2d7ab902d286 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/BarrierGuards.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/BarrierGuards.qll @@ -358,25 +358,18 @@ module MakeStateBarrierGuard< } /** - * Gets a logical `and` expression, or parenthesized expression, that contains `guard`. + * Gets any of the ancestors of `guard` that preserves the value of `possibleOutcome`. Includes the guard itself. */ - private Expr getALogicalAndParent(BarrierGuard guard) { - barrierGuardIsRelevant(guard) and result = guard.asExpr() + private Expr getALogicalOperatorParent(BarrierGuard guard, boolean possibleOutcome) { + barrierGuardIsRelevant(guard) and result = guard.asExpr() and possibleOutcome = [true, false] or - result.(LogAndExpr).getAnOperand() = getALogicalAndParent(guard) + result.(LogOrExpr).getAnOperand() = getALogicalOperatorParent(guard, possibleOutcome) and + possibleOutcome = false or - result.getUnderlyingValue() = getALogicalAndParent(guard) - } - - /** - * Gets a logical `or` expression, or parenthesized expression, that contains `guard`. - */ - private Expr getALogicalOrParent(BarrierGuard guard) { - barrierGuardIsRelevant(guard) and result = guard.asExpr() + result.(LogAndExpr).getAnOperand() = getALogicalOperatorParent(guard, possibleOutcome) and + possibleOutcome = true or - result.(LogOrExpr).getAnOperand() = getALogicalOrParent(guard) - or - result.getUnderlyingValue() = getALogicalOrParent(guard) + result.getUnderlyingValue() = getALogicalOperatorParent(guard, possibleOutcome) } final private class FinalFunction = Function; @@ -394,15 +387,7 @@ module MakeStateBarrierGuard< exists(BarrierGuard guard | barrierGuardIsRelevant(guard) and exists(Expr e | - exists(Expr returnExpr | - returnExpr = guard.asExpr() - or - // ad hoc support for conjunctions: - getALogicalAndParent(guard) = returnExpr and guardOutcome = true - or - // ad hoc support for disjunctions: - getALogicalOrParent(guard) = returnExpr and guardOutcome = false - | + exists(Expr returnExpr | returnExpr = getALogicalOperatorParent(guard, guardOutcome) | exists(SsaExplicitDefinition ssa | ssa.getDef().getSource() = returnExpr and ssa.getVariable().getAUse() = this.getAReturnedExpr() diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/CallGraphs.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/CallGraphs.qll index cc4c883381ea..67f4e55a5bb8 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/CallGraphs.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/CallGraphs.qll @@ -97,9 +97,14 @@ module CallGraph { not exists(read.getPropertyName()) and result = read and // there exists only local reads of the object, nothing else. - forex(DataFlow::Node ref | ref = obj.getALocalUse() and exists(ref.asExpr()) | - ref = [obj, any(DataFlow::PropRead r).getBase()] - ) + objectOnlyUsedForPropRead(obj) + ) + } + + pragma[nomagic] + private predicate objectOnlyUsedForPropRead(DataFlow::ObjectLiteralNode obj) { + forex(DataFlow::Node ref | ref = obj.getALocalUse() and exists(ref.asExpr()) | + ref = [obj, any(DataFlow::PropRead r).getBase()] ) } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll index a5af2737c186..787a766c897e 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import javascript private import semmle.javascript.frameworks.data.internal.ApiGraphModels as ApiGraphModels private import semmle.javascript.dataflow.internal.FlowSummaryPrivate as FlowSummaryPrivate @@ -194,6 +197,7 @@ module Public { */ class ContentSet extends TContentSet { /** Gets a content that may be stored into when storing into this set. */ + overlay[caller?] pragma[inline] Content getAStoreContent() { result = this.asSingleton() @@ -333,12 +337,14 @@ module Public { /** * A content set containing only the given content. */ + overlay[caller?] pragma[inline] ContentSet singleton(Content content) { result.asSingleton() = content } /** * A content set corresponding to the given property name. */ + overlay[caller?] pragma[inline] ContentSet property(PropertyName name) { result.asSingleton().asPropertyName() = name } @@ -399,6 +405,7 @@ module Public { * If `bound` is too large, it is truncated to the greatest lower bound we can represent. */ bindingset[bound] + overlay[caller?] ContentSet arrayElementLowerBoundFromInt(int bound) { result = arrayElementLowerBound(bound.minimum(getMaxPreciseArrayIndex() + 1)) } @@ -409,6 +416,7 @@ module Public { * If `n` is too large, it is truncated to the greatest lower bound we can represent. */ bindingset[n] + overlay[caller?] ContentSet arrayElementFromInt(int n) { result = arrayElementKnown(n) or @@ -448,6 +456,7 @@ module Public { * If `key` is not one of the keys we track precisely, this is mapped to the unknown key instead. */ bindingset[key] + overlay[caller?] ContentSet mapValueFromKey(string key) { result = mapValueWithKnownKey(key) or @@ -510,6 +519,7 @@ module Public { * are mapped to their corresponding content sets (which are no longer seen as property names). */ bindingset[propertyName] + overlay[caller?] ContentSet fromLegacyProperty(string propertyName) { result = fromLegacyPseudoProperty(propertyName) or diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowNode.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowNode.qll index 8d54f639cb0a..315c8706bc00 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowNode.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowNode.qll @@ -3,6 +3,8 @@ * * Contains the raw data type underlying `DataFlow::Node`. */ +overlay[local?] +module; private import javascript private import codeql.util.Boolean diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll index 7f80a43437bd..f8836e51ad91 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import javascript private import semmle.javascript.dataflow.internal.CallGraphs private import semmle.javascript.dataflow.internal.DataFlowNode @@ -310,6 +313,7 @@ private predicate returnNodeImpl(DataFlow::Node node, ReturnKind kind) { kind = MkExceptionalReturnKind() } +overlay[global] private DataFlow::Node getAnOutNodeImpl(DataFlowCall call, ReturnKind kind) { kind = MkNormalReturnKind() and result = call.asOrdinaryCall() or @@ -336,10 +340,12 @@ class ReturnNode extends DataFlow::Node { } /** A node that receives an output from a call. */ +overlay[global] class OutNode extends DataFlow::Node { OutNode() { this = getAnOutNodeImpl(_, _) } } +overlay[global] OutNode getAnOutNode(DataFlowCall call, ReturnKind kind) { result = getAnOutNodeImpl(call, kind) } cached @@ -416,9 +422,11 @@ abstract class LibraryCallable extends string { LibraryCallable() { any() } /** Gets a call to this library callable. */ + overlay[global] DataFlow::InvokeNode getACall() { none() } /** Same as `getACall()` except this does not depend on the call graph or API graph. */ + overlay[global] DataFlow::InvokeNode getACallSimple() { none() } } @@ -432,6 +440,7 @@ abstract class LibraryCallableInternal extends LibraryCallable { * * Same as `getACall()` but is evaluated later and may depend negatively on `getACall()`. */ + overlay[global] DataFlow::InvokeNode getACallStage2() { none() } } @@ -467,6 +476,7 @@ predicate isParameterNode(ParameterNode p, DataFlowCallable c, ParameterPosition isParameterNodeImpl(p, c, pos) } +overlay[global] private predicate isArgumentNodeImpl(Node n, DataFlowCall call, ArgumentPosition pos) { n = call.asOrdinaryCall().getArgument(pos.asPositional()) or @@ -523,6 +533,7 @@ private predicate isArgumentNodeImpl(Node n, DataFlowCall call, ArgumentPosition ) } +overlay[global] predicate isArgumentNode(ArgumentNode n, DataFlowCall call, ArgumentPosition pos) { isArgumentNodeImpl(n, call, pos) } @@ -545,11 +556,13 @@ DataFlowCallable nodeGetEnclosingCallable(Node node) { node instanceof DataFlow::XmlAttributeNode and result.asFileCallable() = node.getFile() } +overlay[global] newtype TDataFlowType = TFunctionType(Function f) or TInstanceType(DataFlow::ClassNode cls) or TAnyType() +overlay[global] class DataFlowType extends TDataFlowType { string toDebugString() { result = @@ -575,6 +588,7 @@ class DataFlowType extends TDataFlowType { /** * Holds if `t1` is strictly stronger than `t2`. */ +overlay[global] predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { // 't1' is a subclass of 't2' t1.asInstanceOfClass() = t2.asInstanceOfClass().getADirectSubClass+() @@ -584,6 +598,7 @@ predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { t2 = TAnyType() } +overlay[global] private DataFlowType getPreciseType(Node node) { exists(Function f | (node = TValueNode(f) or node = TFunctionSelfReferenceNode(f)) and @@ -598,6 +613,7 @@ private DataFlowType getPreciseType(Node node) { result = getPreciseType(node.(PostUpdateNode).getPreUpdateNode()) } +overlay[global] DataFlowType getNodeType(Node node) { result = getPreciseType(node) or @@ -681,19 +697,23 @@ predicate neverSkipInPathGraph(Node node) { node.asExpr() instanceof VarRef } +overlay[global] string ppReprType(DataFlowType t) { none() } +overlay[global] pragma[inline] private predicate compatibleTypesWithAny(DataFlowType t1, DataFlowType t2) { t1 != TAnyType() and t2 = TAnyType() } +overlay[global] pragma[nomagic] private predicate compatibleTypes1(DataFlowType t1, DataFlowType t2) { t1.asInstanceOfClass().getADirectSubClass+() = t2.asInstanceOfClass() } +overlay[global] pragma[inline] predicate compatibleTypes(DataFlowType t1, DataFlowType t2) { t1 = t2 @@ -742,6 +762,7 @@ class ContentApprox extends TContentApprox { } } +overlay[global] pragma[inline] ContentApprox getContentApprox(Content c) { c instanceof MkPropertyContent and result = TApproxPropertyContent() @@ -767,6 +788,7 @@ ContentApprox getContentApprox(Content c) { c instanceof MkCapturedContent and result = TApproxCapturedContent() } +overlay[global] cached private newtype TDataFlowCall = MkOrdinaryCall(DataFlow::InvokeNode node) or @@ -791,6 +813,7 @@ private newtype TDataFlowCall = FlowSummaryImpl::Private::summaryCallbackRange(c, receiver) } +overlay[global] class DataFlowCall extends TDataFlowCall { DataFlowCallable getEnclosingCallable() { none() } // Overridden in subclass @@ -816,6 +839,7 @@ class DataFlowCall extends TDataFlowCall { Location getLocation() { none() } // Overridden in subclass } +overlay[global] private class OrdinaryCall extends DataFlowCall, MkOrdinaryCall { private DataFlow::InvokeNode node; @@ -832,6 +856,7 @@ private class OrdinaryCall extends DataFlowCall, MkOrdinaryCall { override Location getLocation() { result = node.getLocation() } } +overlay[global] private class PartialCall extends DataFlowCall, MkPartialCall { private DataFlow::PartialInvokeNode node; private DataFlow::Node callback; @@ -851,6 +876,7 @@ private class PartialCall extends DataFlowCall, MkPartialCall { override Location getLocation() { result = node.getLocation() } } +overlay[global] private class BoundCall extends DataFlowCall, MkBoundCall { private DataFlow::InvokeNode node; private int boundArgs; @@ -868,6 +894,7 @@ private class BoundCall extends DataFlowCall, MkBoundCall { override Location getLocation() { result = node.getLocation() } } +overlay[global] private class AccessorCall extends DataFlowCall, MkAccessorCall { private DataFlow::PropRef ref; @@ -882,6 +909,7 @@ private class AccessorCall extends DataFlowCall, MkAccessorCall { override Location getLocation() { result = ref.getLocation() } } +overlay[global] class SummaryCall extends DataFlowCall, MkSummaryCall { private FlowSummaryImpl::Public::SummarizedCallable enclosingCallable; private FlowSummaryImpl::Private::SummaryNode receiver; @@ -908,6 +936,7 @@ class SummaryCall extends DataFlowCall, MkSummaryCall { * This is to help ensure captured variables can flow into the lambda in cases where * we can't find its call sites. */ +overlay[global] private class ImpliedLambdaCall extends DataFlowCall, MkImpliedLambdaCall { private Function function; @@ -981,6 +1010,7 @@ class DataFlowExpr = Expr; Node exprNode(DataFlowExpr expr) { result = DataFlow::exprNode(expr) } +overlay[global] pragma[nomagic] predicate parameterMatch(ParameterPosition ppos, ArgumentPosition apos) { ppos = apos @@ -993,6 +1023,7 @@ predicate parameterMatch(ParameterPosition ppos, ArgumentPosition apos) { // are only using these in cases where either the call or callee is generated by a flow summary. } +overlay[global] pragma[inline] DataFlowCallable viableCallable(DataFlowCall node) { // Note: we never include call edges externs here, as it negatively affects the field-flow branch limit, @@ -1021,6 +1052,7 @@ DataFlowCallable viableCallable(DataFlowCall node) { result.asSourceCallableNotExterns() = node.asImpliedLambdaCall() } +overlay[global] private DataFlowCall getACallOnThis(DataFlow::ClassNode cls) { result.asOrdinaryCall() = cls.getAReceiverNode().getAPropertyRead().getACall() or @@ -1029,6 +1061,7 @@ private DataFlowCall getACallOnThis(DataFlow::ClassNode cls) { result.asPartialCall().getACallbackNode() = cls.getAReceiverNode().getAPropertyRead() } +overlay[global] private predicate downwardCall(DataFlowCall call) { exists(DataFlow::ClassNode cls | call = getACallOnThis(cls) and @@ -1041,9 +1074,11 @@ private predicate downwardCall(DataFlowCall call) { * Holds if the set of viable implementations that can be called by `call` * might be improved by knowing the call context. */ +overlay[global] predicate mayBenefitFromCallContext(DataFlowCall call) { downwardCall(call) } /** Gets the type of the receiver of `call`. */ +overlay[global] private DataFlowType getThisArgumentType(DataFlowCall call) { exists(DataFlow::Node node | isArgumentNodeImpl(node, call, MkThisParameter()) and @@ -1052,6 +1087,7 @@ private DataFlowType getThisArgumentType(DataFlowCall call) { } /** Gets the type of the 'this' parameter of `call`. */ +overlay[global] private DataFlowType getThisParameterType(DataFlowCallable callable) { exists(DataFlow::Node node | isParameterNodeImpl(node, callable, MkThisParameter()) and @@ -1063,6 +1099,7 @@ private DataFlowType getThisParameterType(DataFlowCallable callable) { * Gets a viable dispatch target of `call` in the context `ctx`. This is * restricted to those `call`s for which a context might make a difference. */ +overlay[global] DataFlowCallable viableImplInCallContext(DataFlowCall call, DataFlowCall ctx) { mayBenefitFromCallContext(call) and result = viableCallable(call) and @@ -1071,17 +1108,20 @@ DataFlowCallable viableImplInCallContext(DataFlowCall call, DataFlowCall ctx) { } bindingset[node, fun] +overlay[caller?] pragma[inline_late] private predicate sameContainerAsEnclosingContainer(Node node, Function fun) { node.getContainer() = fun.getEnclosingContainer() } +overlay[global] abstract private class BarrierGuardAdapter extends DataFlow::Node { // Note: avoid depending on DataFlow::FlowLabel here as it will cause these barriers to be re-evaluated predicate blocksExpr(boolean outcome, Expr e) { none() } } -private class BarrierGuardAdapterSubclass extends BarrierGuardAdapter instanceof DataFlow::AdditionalBarrierGuardNode +overlay[global] +deprecated private class BarrierGuardAdapterSubclass extends BarrierGuardAdapter instanceof DataFlow::AdditionalBarrierGuardNode { override predicate blocksExpr(boolean outcome, Expr e) { super.blocks(outcome, e) } } @@ -1092,6 +1132,7 @@ private class BarrierGuardAdapterSubclass extends BarrierGuardAdapter instanceof * * The standard library contains no subclasses of that class; this is for backwards compatibility only. */ +overlay[global] pragma[nomagic] private predicate legacyBarrier(DataFlow::Node node) { node = MakeBarrierGuard::getABarrierNode() @@ -1100,6 +1141,7 @@ private predicate legacyBarrier(DataFlow::Node node) { /** * Holds if `node` should be removed from the local data flow graph, for compatibility with legacy code. */ +overlay[global] pragma[nomagic] private predicate isBlockedLegacyNode(Node node) { // Ignore captured variable nodes for those variables that are handled by the captured-variable library. @@ -1155,6 +1197,7 @@ private predicate imprecisePostUpdateStep(DataFlow::PostUpdateNode postUpdate, D * Holds if there is a value-preserving steps `node1` -> `node2` that might * be cross function boundaries. */ +overlay[global] private predicate valuePreservingStep(Node node1, Node node2) { node1.getASuccessor() = node2 and not isBlockedLegacyNode(node1) and @@ -1223,10 +1266,12 @@ private predicate useUseFlow(Node node1, Node node2) { ) } +overlay[global] predicate simpleLocalFlowStep(Node node1, Node node2, string model) { simpleLocalFlowStep(node1, node2) and model = "" } +overlay[global] predicate simpleLocalFlowStep(Node node1, Node node2) { valuePreservingStep(node1, node2) and nodeGetEnclosingCallable(pragma[only_bind_out](node1)) = @@ -1314,6 +1359,7 @@ private predicate excludedJumpStep(Node node1, Node node2) { * that does not follow a call edge. For example, a step through a global * variable. */ +overlay[global] predicate jumpStep(Node node1, Node node2) { valuePreservingStep(node1, node2) and node1.getContainer() != node2.getContainer() and @@ -1330,6 +1376,7 @@ predicate jumpStep(Node node1, Node node2) { * `node1` references an object with a content `c.getAReadContent()` whose * value ends up in `node2`. */ +overlay[global] predicate readStep(Node node1, ContentSet c, Node node2) { exists(DataFlow::PropRead read | node1 = read.getBase() and @@ -1447,6 +1494,7 @@ private predicate stringifiedNode(Node node) { } /** Gets the post-update node for which `node` is the corresponding pre-update node. */ +pragma[nomagic] private Node getPostUpdateForStore(Node base) { exists(Expr expr | base = TValueNode(expr) and @@ -1469,6 +1517,7 @@ private Node getPostUpdateForStore(Node base) { } /** Gets node to target with a store to the given `base` object.. */ +overlay[caller?] pragma[inline] private Node getStoreTarget(DataFlow::Node base) { result = getPostUpdateForStore(base) @@ -1487,6 +1536,7 @@ private int firstSpreadArgumentIndex(InvokeExpr expr) { * `node2` references an object with a content `c.getAStoreContent()` that * contains the value of `node1`. */ +overlay[global] predicate storeStep(Node node1, ContentSet c, Node node2) { exists(DataFlow::PropWrite write | node1 = write.getRhs() and @@ -1545,6 +1595,7 @@ predicate storeStep(Node node1, ContentSet c, Node node2) { * any value stored inside `f` is cleared at the pre-update node associated with `x` * in `x.f = newValue`. */ +overlay[global] predicate clearsContent(Node n, ContentSet c) { FlowSummaryPrivate::Steps::summaryClearsContent(n.(FlowSummaryNode).getSummaryNode(), c) or @@ -1578,6 +1629,7 @@ predicate clearsContent(Node n, ContentSet c) { * Holds if the value that is being tracked is expected to be stored inside content `c` * at node `n`. */ +overlay[global] predicate expectsContent(Node n, ContentSet c) { FlowSummaryPrivate::Steps::summaryExpectsContent(n.(FlowSummaryNode).getSummaryNode(), c) or @@ -1602,6 +1654,7 @@ abstract class NodeRegion extends Unit { /** * Holds if the node `n` is unreachable when the call context is `call`. */ +overlay[global] predicate isUnreachableInCall(NodeRegion n, DataFlowCall call) { none() // TODO: could be useful, but not currently implemented for JS } @@ -1635,6 +1688,7 @@ predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) } /** Holds if `call` is a lambda call of kind `kind` where `receiver` is the lambda expression. */ +overlay[global] predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { call.isSummaryCall(_, receiver.(FlowSummaryNode).getSummaryNode()) and exists(kind) or @@ -1646,6 +1700,7 @@ predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { /** Extra data-flow steps needed for lambda flow analysis. */ predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preservesValue) { none() } +overlay[global] class ArgumentNode extends DataFlow::Node { ArgumentNode() { isArgumentNodeImpl(this, _, _) } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll index 2ee04b8dbf56..cb09f3646b66 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll @@ -48,6 +48,7 @@ private predicate legacyPostUpdateStep(DataFlow::Node pred, DataFlow::Node succ) * Holds if data can flow in one step from `pred` to `succ`, taking * additional steps from the configuration into account. */ +overlay[caller?] pragma[inline] predicate localFlowStep( DataFlow::Node pred, DataFlow::Node succ, DataFlow::Configuration configuration, @@ -523,6 +524,7 @@ private module CachedSteps { /** * Holds if there is a step from `pred` to `succ` through a call to an identity function. */ + overlay[local?] cached predicate identityFunctionStep(DataFlow::Node pred, DataFlow::CallNode succ) { exists(DataFlow::GlobalVarRefNode global | diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll index a5131e4fd64e..fe7bab98341a 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll @@ -1,6 +1,8 @@ /** * Provides JS specific classes and predicates for defining flow summaries. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.internal.DataFlowPrivate @@ -140,6 +142,7 @@ string encodeArgumentPosition(ArgumentPosition pos) { ReturnKind getStandardReturnValueKind() { result = MkNormalReturnKind() and Stage::ref() } private module FlowSummaryStepInput implements Private::StepsInputSig { + overlay[global] DataFlowCall getACall(SummarizedCallable sc) { exists(LibraryCallable callable | callable = sc | result.asOrdinaryCall() = diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableCapture.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableCapture.qll index 8edacdc2f0f9..1799bc416ee5 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableCapture.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableCapture.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import javascript as js private import semmle.javascript.dataflow.internal.DataFlowNode private import semmle.javascript.dataflow.internal.VariableOrThis diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableOrThis.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableOrThis.qll index a517e0d91fd0..96964110e11d 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableOrThis.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableOrThis.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import javascript private import DataFlowNode diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll index 7e610c3c23ce..7b479ac475b6 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll @@ -3,6 +3,8 @@ * * JavaScript's old SSA library is still responsible for the ordinary SSA flow. */ +overlay[local?] +module; private import javascript as js private import codeql.ssa.Ssa @@ -94,6 +96,7 @@ module SsaDataflowInput implements DataFlowIntegrationInputSig { } } + overlay[caller?] pragma[inline] predicate guardDirectlyControlsBlock(Guard guard, js::Cfg::BasicBlock bb, GuardValue branch) { exists(js::ConditionGuardNode g | diff --git a/javascript/ql/lib/semmle/javascript/frameworks/AngularJS/AngularJSCore.qll b/javascript/ql/lib/semmle/javascript/frameworks/AngularJS/AngularJSCore.qll index 41d14c1e3be4..944256bd4569 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/AngularJS/AngularJSCore.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/AngularJS/AngularJSCore.qll @@ -15,6 +15,7 @@ private import AngularJS /** * Holds if `nd` is a reference to the `angular` variable. */ +overlay[local?] DataFlow::SourceNode angular() { // either as a global result = DataFlow::globalVarRef("angular") diff --git a/javascript/ql/lib/semmle/javascript/frameworks/AsyncPackage.qll b/javascript/ql/lib/semmle/javascript/frameworks/AsyncPackage.qll index db2487ce46a0..c95b7a8dc6a1 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/AsyncPackage.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/AsyncPackage.qll @@ -172,6 +172,7 @@ module AsyncPackage { DataFlow::FunctionNode getFinalCallback() { result = this.getCallback(finalCallbackIndex) } } + overlay[local?] private class IterationCallFlowSummary extends DataFlow::SummarizedCallable { private int callbackArgIndex; @@ -219,6 +220,7 @@ module AsyncPackage { * * For example: `data -> result` in `async.sortBy(data, orderingFn, (err, result) => {})`. */ + overlay[local?] private class IterationPreserveTaintStepFlowSummary extends DataFlow::SummarizedCallable { IterationPreserveTaintStepFlowSummary() { this = "async.sortBy" } diff --git a/javascript/ql/lib/semmle/javascript/frameworks/LazyCache.qll b/javascript/ql/lib/semmle/javascript/frameworks/LazyCache.qll index 2c460fcc3451..e239c79b852f 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/LazyCache.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/LazyCache.qll @@ -1,6 +1,8 @@ /** * Models imports through the NPM `lazy-cache` package. */ +overlay[local?] +module; import javascript @@ -43,7 +45,7 @@ module LazyCache { pragma[noopt] override DataFlow::Node getImportedModuleNode() { this instanceof LazyCacheImport and - result = this.flow() + result = DataFlow::valueNode(this) or exists(LazyCacheVariable variable, Expr base, PropAccess access, string localName | // To avoid recursion, this should not depend on `SourceNode`. @@ -52,12 +54,13 @@ module LazyCache { access.getBase() = base and localName = this.getLocalAlias() and access.getPropertyName() = localName and - result = access.flow() + result = DataFlow::valueNode(access) ) } } /** A constant path element appearing in a call to a lazy-cache object. */ + overlay[global] deprecated private class LazyCachePathExpr extends PathExpr, ConstantString { LazyCachePathExpr() { this = any(LazyCacheImport rp).getArgument(0) } diff --git a/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll b/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll index 202586227375..74808368c718 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll @@ -9,6 +9,7 @@ module LodashUnderscore { /** * A data flow node that accesses a given member of `lodash` or `underscore`. */ + overlay[local?] abstract class Member extends DataFlow::SourceNode { /** Gets the name of the accessed member. */ abstract string getName(); @@ -17,6 +18,7 @@ module LodashUnderscore { /** * An import of `lodash` or `underscore` accessing a given member of that package. */ + overlay[local?] private class DefaultMember extends Member { string name; @@ -39,12 +41,14 @@ module LodashUnderscore { * In addition to normal imports, this supports per-method imports such as `require("lodash.map")` and `require("lodash/map")`. * In addition, the global variable `_` is assumed to refer to `lodash` or `underscore`. */ + overlay[local?] DataFlow::SourceNode member(string name) { result.(Member).getName() = name } /** * Holds if `name` is the name of a member exported from the `lodash` package * which has a corresponding `lodash.xxx` NPM package. */ + overlay[local?] private predicate isLodashMember(string name) { // Can be generated using Object.keys(require('lodash')) name = @@ -181,9 +185,11 @@ module LodashUnderscore { } } + overlay[local?] private class LodashEach extends DataFlow::SummarizedCallable { LodashEach() { this = "_.each-like" } + overlay[global] override DataFlow::CallNode getACall() { result = member(["each", "eachRight", "forEach", "forEachRight", "every", "some"]).getACall() } @@ -195,9 +201,11 @@ module LodashUnderscore { } } + overlay[local?] private class LodashMap extends DataFlow::SummarizedCallable { LodashMap() { this = "_.map" } + overlay[global] override DataFlow::CallNode getACall() { result = member("map").getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { @@ -212,9 +220,11 @@ module LodashUnderscore { } } + overlay[local?] private class LodashFlatMap extends DataFlow::SummarizedCallable { LodashFlatMap() { this = "_.flatMap" } + overlay[global] override DataFlow::CallNode getACall() { result = member("flatMap").getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { @@ -232,9 +242,11 @@ module LodashUnderscore { } } + overlay[local?] private class LodashFlatMapDeep extends DataFlow::SummarizedCallable { LodashFlatMapDeep() { this = "_.flatMapDeep" } + overlay[global] override DataFlow::CallNode getACall() { result = member(["flatMapDeep", "flatMapDepth"]).getACall() } @@ -254,9 +266,11 @@ module LodashUnderscore { } } + overlay[local?] private class LodashReduce extends DataFlow::SummarizedCallable { LodashReduce() { this = "_.reduce-like" } + overlay[global] override DataFlow::CallNode getACall() { result = member(["reduce", "reduceRight"]).getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { @@ -271,9 +285,11 @@ module LodashUnderscore { } } + overlay[local?] private class LoashSortBy extends DataFlow::SummarizedCallable { LoashSortBy() { this = "_.sortBy-like" } + overlay[global] override DataFlow::CallNode getACall() { result = member(["sortBy", "orderBy"]).getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { @@ -287,9 +303,11 @@ module LodashUnderscore { } } + overlay[local?] private class LodashMinMaxBy extends DataFlow::SummarizedCallable { LodashMinMaxBy() { this = "_.minBy / _.maxBy" } + overlay[global] override DataFlow::CallNode getACall() { result = member(["minBy", "maxBy"]).getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { @@ -299,9 +317,11 @@ module LodashUnderscore { } } + overlay[local?] private class LodashPartition extends DataFlow::SummarizedCallable { LodashPartition() { this = "_.partition" } + overlay[global] override DataFlow::CallNode getACall() { result = member("partition").getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { @@ -311,9 +331,11 @@ module LodashUnderscore { } } + overlay[local?] private class UnderscoreMapObject extends DataFlow::SummarizedCallable { UnderscoreMapObject() { this = "_.mapObject" } + overlay[global] override DataFlow::CallNode getACall() { result = member("mapObject").getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { @@ -330,9 +352,11 @@ module LodashUnderscore { } } + overlay[local?] private class LodashTap extends DataFlow::SummarizedCallable { LodashTap() { this = "_.tap" } + overlay[global] override DataFlow::CallNode getACall() { result = member("tap").getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { @@ -342,6 +366,7 @@ module LodashUnderscore { } } + overlay[local?] private class LodashGroupBy extends DataFlow::SummarizedCallable { LodashGroupBy() { this = "_.groupBy" } diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Next.qll b/javascript/ql/lib/semmle/javascript/frameworks/Next.qll index 551d325f26af..a65fcdce44db 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/Next.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/Next.qll @@ -13,12 +13,31 @@ module NextJS { */ PackageJson getANextPackage() { result.getDependencies().getADependency("next", _) } + bindingset[base, name] + pragma[inline_late] + private Folder getOptionalFolder(Folder base, string name) { + result = base.getFolder(name) + or + not exists(base.getFolder(name)) and + result = base + } + + private Folder packageRoot() { result = getANextPackage().getFile().getParentContainer() } + + private Folder srcRoot() { result = getOptionalFolder(packageRoot(), "src") } + + private Folder appRoot() { result = srcRoot().getFolder("app") } + + private Folder pagesRoot() { result = [srcRoot(), appRoot()].getFolder("pages") } + + private Folder apiRoot() { result = [pagesRoot(), appRoot()].getFolder("api") } + /** * Gets a "pages" folder in a `Next.js` application. * JavaScript files inside these folders are mapped to routes. */ Folder getAPagesFolder() { - result = getANextPackage().getFile().getParentContainer().getFolder("pages") + result = pagesRoot() or result = getAPagesFolder().getAFolder() } @@ -217,8 +236,7 @@ module NextJS { * the App Router (`app/api/`) Next.js 13+ structures. */ Folder apiFolder() { - result = - getANextPackage().getFile().getParentContainer().getFolder(["pages", "app"]).getFolder("api") or + result = apiRoot() or result = apiFolder().getAFolder() } diff --git a/javascript/ql/lib/semmle/javascript/frameworks/NodeJSLib.qll b/javascript/ql/lib/semmle/javascript/frameworks/NodeJSLib.qll index c5f8c3d14f1c..b6506ddd648d 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/NodeJSLib.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/NodeJSLib.qll @@ -8,14 +8,17 @@ import semmle.javascript.security.SensitiveActions private import semmle.javascript.dataflow.internal.PreCallGraphStep module NodeJSLib { + overlay[local?] private GlobalVariable processVariable() { variables(result, "process", any(GlobalScope sc)) } + overlay[local?] pragma[nomagic] private GlobalVarAccess processExprInTopLevel(TopLevel tl) { result = processVariable().getAnAccess() and tl = result.getTopLevel() } + overlay[local?] pragma[nomagic] private GlobalVarAccess processExprInNodeModule() { result = processExprInTopLevel(any(NodeModule m)) @@ -25,6 +28,7 @@ module NodeJSLib { * An access to the global `process` variable in a Node.js module, interpreted as * an import of the `process` module. */ + overlay[local?] private class ImplicitProcessImport extends DataFlow::ModuleImportNode::Range { ImplicitProcessImport() { this = DataFlow::exprNode(processExprInNodeModule()) } diff --git a/javascript/ql/lib/semmle/javascript/frameworks/PropertyProjection.qll b/javascript/ql/lib/semmle/javascript/frameworks/PropertyProjection.qll index 11fb0f5ceba5..957121da5af1 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/PropertyProjection.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/PropertyProjection.qll @@ -4,6 +4,8 @@ * Subclass `PropertyProjection` to refine the behavior of the analysis on existing property projections. * Subclass `CustomPropertyProjection` to introduce new kinds of property projections. */ +overlay[local?] +module; import javascript @@ -137,6 +139,7 @@ private class VarArgsPropertyProjection extends PropertyProjection::Range { /** * A taint step for a property projection. */ +overlay[global] private class PropertyProjectionTaintStep extends TaintTracking::SharedTaintStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { // reading from a tainted object yields a tainted result diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Templating.qll b/javascript/ql/lib/semmle/javascript/frameworks/Templating.qll index a7286c7a1999..d63bafe7b6f3 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/Templating.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/Templating.qll @@ -1,6 +1,8 @@ /** * Provides predicates for working with templating libraries. */ +overlay[local?] +module; import javascript @@ -45,6 +47,7 @@ module Templating { Locatable getParent() { template_placeholder_tag_info(this, result, _) } /** Gets a data flow node representing the value plugged into this placeholder. */ + overlay[global] DataFlow::TemplatePlaceholderTagNode asDataFlowNode() { result.getTag() = this } /** Gets the top-level containing the template expression to be inserted at this placeholder. */ @@ -54,6 +57,7 @@ module Templating { * Holds if this performs raw interpolation, that is, inserts its result * in the output without escaping it. */ + overlay[global] predicate isRawInterpolation() { this.getRawText() .regexpMatch(getLikelyTemplateSyntax(this.getFile()).getRawInterpolationRegexp()) @@ -62,6 +66,7 @@ module Templating { /** * Holds if this performs HTML escaping on the result before inserting it in the template. */ + overlay[global] predicate isEscapingInterpolation() { this.getRawText() .regexpMatch(getLikelyTemplateSyntax(this.getFile()).getEscapingInterpolationRegexp()) @@ -93,6 +98,7 @@ module Templating { * Holds if this placeholder occurs in the definition of another template, which means the output * is susceptible to code injection. */ + overlay[global] predicate isInNestedTemplateContext(string templateType) { templateType = "AngularJS" and AngularJS::isInterpretedByAngularJS(this.getParent()) and @@ -135,6 +141,7 @@ module Templating { * * For example, the call generated from `items | async` would be found by `getAPipeCall("async")`. */ + overlay[global] DataFlow::CallNode getAPipeCall(string name) { result.getCalleeNode().asExpr().(PipeRefExpr).getName() = name } @@ -153,16 +160,19 @@ module Templating { Expr getExpression() { result = this.getChildStmt(0).(ExprStmt).getExpr() } /** Gets the data flow node representing the initialization of the given variable in this scope. */ + overlay[global] DataFlow::Node getVariableInit(string name) { result = DataFlow::ssaDefinitionNode(Ssa::implicitInit(this.getScope().getVariable(name))) } /** Gets a data flow node corresponding to a use of the given template variable within this top-level. */ + overlay[global] DataFlow::SourceNode getAVariableUse(string name) { result = this.getScope().getVariable(name).getAnAccess().flow() } /** Gets a data flow node corresponding to a use of the given template variable within this top-level. */ + overlay[global] DataFlow::SourceNode getAnAccessPathUse(string accessPath) { result = this.getAVariableUse(accessPath) or @@ -177,6 +187,7 @@ module Templating { /** * A place where a template is instantiated or rendered. */ + overlay[global] class TemplateInstantiation extends DataFlow::Node instanceof TemplateInstantiation::Range { /** Gets a data flow node that refers to the instantiated template string, if any. */ DataFlow::SourceNode getOutput() { result = super.getOutput() } @@ -206,6 +217,7 @@ module Templating { } /** Companion module to the `TemplateInstantiation` class. */ + overlay[global] module TemplateInstantiation { abstract class Range extends DataFlow::Node { /** Gets a data flow node that refers to the instantiated template, if any. */ @@ -230,6 +242,7 @@ module Templating { } /** Gets an API node that may flow to `succ` through a template instantiation. */ + overlay[global] private API::Node getTemplateInput(DataFlow::SourceNode succ) { exists(TemplateInstantiation inst, API::Node base, string name | base.asSink() = inst.getTemplateParamsNode() and @@ -258,6 +271,7 @@ module Templating { ) } + overlay[global] private class TemplateInputStep extends DataFlow::SharedFlowStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { getTemplateInput(succ).asSink() = pred @@ -268,6 +282,7 @@ module Templating { * A data flow step from the expression in a placeholder tag to the tag itself, * representing the value plugged into the template. */ + overlay[global] private class TemplatePlaceholderStep extends DataFlow::SharedFlowStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { exists(TemplatePlaceholderTag tag | @@ -281,6 +296,7 @@ module Templating { * A taint step from a `TemplatePlaceholderTag` to the enclosing expression in the * surrounding JavaScript program. */ + overlay[global] private class PlaceholderToGeneratedCodeStep extends TaintTracking::SharedTaintStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { exists(TemplatePlaceholderTag tag | @@ -296,6 +312,7 @@ module Templating { final TemplatePlaceholderTag getAPlaceholder() { result.getFile() = this } /** Gets a template file referenced by this one via a template inclusion tag, such as `{% include foo %}` */ + overlay[global] TemplateFile getAnImportedFile() { result = this.getAPlaceholder().(TemplateInclusionTag).getImportedFile() } @@ -314,6 +331,7 @@ module Templating { * - The root folder is considered unknown, and so a heuristic is used to guess the most * likely template file being referenced. */ + overlay[global] abstract class TemplateFileReference extends DataFlow::Node { /** Gets the value that identifies the template. */ string getValue() { @@ -335,6 +353,7 @@ module Templating { } /** Get file argument of a template instantiation, seen as a template file reference. */ + overlay[global] private class DefaultTemplateFileReference extends TemplateFileReference { DefaultTemplateFileReference() { this = any(TemplateInstantiation inst).getTemplateFileNode() } } @@ -352,6 +371,7 @@ module Templating { * - The root folder is considered unknown, and so a heuristic is used to guess the most * likely template file being referenced. */ + overlay[global] abstract class TemplateFileReferenceString extends string { bindingset[this] TemplateFileReferenceString() { this = this } @@ -382,6 +402,7 @@ module Templating { } /** The value of a template reference node, as a template reference string. */ + overlay[global] private class DefaultTemplateReferenceString extends TemplateFileReferenceString { TemplateFileReference r; @@ -397,6 +418,7 @@ module Templating { } /** The `X` in a path of form `../X`, treated as a separate path string with a different context folder. */ + overlay[global] private class UpwardTraversalSuffix extends TemplateFileReferenceString { TemplateFileReferenceString original; @@ -412,6 +434,7 @@ module Templating { * Gets a "fingerprint" for the given template file, which is used to references * that might refer to it (for pruning purposes only). */ + overlay[global] pragma[nomagic] private string getTemplateFileFingerprint(TemplateFile file) { result = file.getStem() @@ -424,6 +447,7 @@ module Templating { * Gets a "fingerprint" for the given string, which must match one of the fingerprints of * the referenced file (for pruning purposes only). */ + overlay[global] pragma[nomagic] private string getTemplateRefFingerprint(TemplateFileReferenceString ref) { result = ref.getStem() and not result = ["index", ""] @@ -442,6 +466,7 @@ module Templating { * * This is only used to speed up `getAMatchingTarget` by pruning out pairs that can't match. */ + overlay[global] pragma[nomagic] private TemplateFile getAPotentialTarget(TemplateFileReferenceString ref) { getTemplateFileFingerprint(result) = getTemplateRefFingerprint(ref) @@ -467,6 +492,7 @@ module Templating { * Additionally, a file whose stem is `index` matches if `ref` would match the parent folder by * the above rules. For example: `bar` matches `src/bar/index.html`. */ + overlay[global] pragma[nomagic] private TemplateFile getAMatchingTarget(TemplateFileReferenceString ref) { result = getAPotentialTarget(ref) and @@ -491,6 +517,7 @@ module Templating { * The string `list` in `A/components/foo.js` will resolve to `A/views/list.html`, * and vice versa in `B/components/foo.js`. */ + overlay[global] pragma[nomagic] private int getRankOfMatchingTarget( TemplateFile file, Folder baseFolder, TemplateFileReferenceString ref @@ -508,6 +535,7 @@ module Templating { /** * Gets the template file referred to by `ref` when resolved from `baseFolder`. */ + overlay[global] private TemplateFile getBestMatchingTarget(Folder baseFolder, TemplateFileReferenceString ref) { result = max(getAMatchingTarget(ref) as f order by getRankOfMatchingTarget(f, baseFolder, ref)) } @@ -599,6 +627,7 @@ module Templating { override string getAPackageName() { result = "dot" } } + overlay[global] private TemplateSyntax getOwnTemplateSyntaxInFolder(Folder f) { exists(PackageDependencies deps | deps.getADependency(result.getAPackageName(), _) and @@ -606,6 +635,7 @@ module Templating { ) } + overlay[global] private TemplateSyntax getTemplateSyntaxInFolder(Folder f) { result = getOwnTemplateSyntaxInFolder(f) or @@ -613,6 +643,7 @@ module Templating { result = getTemplateSyntaxInFolder(f.getParentContainer()) } + overlay[global] private TemplateSyntax getTemplateSyntaxFromInstantiation(TemplateFile file) { result = any(TemplateInstantiation inst | inst.getTemplateFile() = file).getTemplateSyntax() } @@ -620,6 +651,7 @@ module Templating { /** * Gets a template syntax likely to be used in the given file. */ + overlay[global] TemplateSyntax getLikelyTemplateSyntax(TemplateFile file) { result = getTemplateSyntaxFromInstantiation(file) or @@ -632,6 +664,7 @@ module Templating { } /** A step through the `safe` pipe, which bypasses HTML escaping. */ + overlay[global] private class SafePipeStep extends TaintTracking::SharedTaintStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { exists(DataFlow::CallNode call | @@ -645,6 +678,7 @@ module Templating { /** * An EJS-style `include` call within a template tag, such as `<%- include(file, { params }) %>`. */ + overlay[global] private class EjsIncludeCallInTemplate extends TemplateInstantiation::Range, DataFlow::CallNode { EjsIncludeCallInTemplate() { exists(TemplatePlaceholderTag tag | @@ -669,6 +703,7 @@ module Templating { * * These API nodes are used in the `getTemplateInput` predicate. */ + overlay[global] private class IncludeFunctionAsEntryPoint extends API::EntryPoint { IncludeFunctionAsEntryPoint() { this = "IncludeFunctionAsEntryPoint" } @@ -703,6 +738,7 @@ module Templating { string getPath() { result = rawPath.trim().replaceAll("\\", "/").regexpReplaceAll("^\\./", "") } /** Gets the file referenced by this inclusion tag. */ + overlay[global] TemplateFile getImportedFile() { result = this.getPath() @@ -712,6 +748,7 @@ module Templating { } /** The imported string from a template inclusion tag. */ + overlay[global] private class TemplateInclusionPathString extends TemplateFileReferenceString { TemplateInclusionTag tag; @@ -723,6 +760,7 @@ module Templating { /** * A call to a member of the `consolidate` library, seen as a template instantiation. */ + overlay[global] private class ConsolidateCall extends TemplateInstantiation::Range, API::CallNode { string engine; diff --git a/javascript/ql/lib/semmle/javascript/frameworks/UriLibraries.qll b/javascript/ql/lib/semmle/javascript/frameworks/UriLibraries.qll index 90dcc886ed43..03887819b252 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/UriLibraries.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/UriLibraries.qll @@ -422,9 +422,11 @@ private module ClosureLibraryUri { } } +overlay[local?] private class QueryStringStringification extends DataFlow::SummarizedCallable { QueryStringStringification() { this = "query-string stringification" } + overlay[global] override DataFlow::InvokeNode getACall() { result = API::moduleImport(["querystring", "query-string", "querystringify", "qs"]) diff --git a/javascript/ql/lib/semmle/javascript/frameworks/data/ModelsAsData.qll b/javascript/ql/lib/semmle/javascript/frameworks/data/ModelsAsData.qll index 82deb735c629..5d65f901d22d 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/data/ModelsAsData.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/data/ModelsAsData.qll @@ -48,6 +48,7 @@ private class ThreatModelSourceFromDataExtension extends ThreatModelSource::Rang } } +overlay[local?] private class SummarizedCallableFromModel extends DataFlow::SummarizedCallable { string type; string path; @@ -57,6 +58,7 @@ private class SummarizedCallableFromModel extends DataFlow::SummarizedCallable { this = type + ";" + path } + overlay[global] override DataFlow::InvokeNode getACall() { ModelOutput::resolvedSummaryBase(type, path, result) } override predicate propagatesFlow( diff --git a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModels.qll b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModels.qll index c04a85487acf..80ec45a3cf17 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModels.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModels.qll @@ -62,6 +62,8 @@ * should be prefixed with a tilde character (`~`). For example, `~Bar` can be used to indicate that * the type is not intended to match a static type. */ +overlay[local?] +module; private import codeql.util.Unit private import ApiGraphModelsSpecific as Specific diff --git a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsExtensions.qll b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsExtensions.qll index 4969da43be34..3f38c498f324 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsExtensions.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsExtensions.qll @@ -1,6 +1,8 @@ /** * Defines extensible predicates for contributing library models from data extensions. */ +overlay[local] +module; /** * Holds if the value at `(type, path)` should be seen as a flow diff --git a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll index f0d751ad31b6..3fb76f76f70a 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll @@ -41,6 +41,7 @@ class Location = JS::Location; * The model generator must explicitly generate the step between `(package)` and `(package).foo`, for example. */ bindingset[rawType] +overlay[caller?] predicate parseTypeString(string rawType, string package, string qualifiedName) { exists(string regexp | regexp = "('[^']+'|[^.]+)(.*)" and @@ -55,6 +56,7 @@ predicate parseTypeString(string rawType, string package, string qualifiedName) /** * Holds if models describing `package` may be relevant for the analysis of this database. */ +overlay[local?] predicate isPackageUsed(string package) { package = "global" or @@ -68,6 +70,7 @@ predicate isPackageUsed(string package) { } bindingset[type] +overlay[local?] predicate isTypeUsed(string type) { exists(string package | parseTypeString(type, package, _) and @@ -79,8 +82,10 @@ predicate isTypeUsed(string type) { * Holds if `type` can be obtained from an instance of `otherType` due to * language semantics modeled by `getExtraNodeFromType`. */ +overlay[local?] predicate hasImplicitTypeModel(string type, string otherType) { none() } +overlay[local?] pragma[nomagic] private predicate parseRelevantTypeString(string rawType, string package, string qualifiedName) { isRelevantFullPath(rawType, _) and @@ -190,6 +195,7 @@ API::Node getExtraSuccessorFromNode(API::Node node, AccessPathTokenBase token) { } bindingset[node] +overlay[caller?] pragma[inline_late] private API::Node getAGuardedRouteHandlerApprox(API::Node node) { // For now just get any routing node with the same root (i.e. the same web app), as @@ -230,6 +236,7 @@ private predicate blockFuzzyCall(DataFlow::CallNode call) { isCommonBuiltinMethodName(call.getCalleeName()) } +overlay[caller?] pragma[inline] API::Node getAFuzzySuccessor(API::Node node) { result = node.getAMember() and diff --git a/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll b/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll index d8e4a18dfc17..e0324bf5a6bf 100644 --- a/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll +++ b/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll @@ -2,6 +2,8 @@ * Provides classes for working with basic blocks, and predicates for computing * liveness information for local variables. */ +overlay[local?] +module; import javascript private import semmle.javascript.internal.StmtContainers @@ -318,6 +320,7 @@ module Public { /** * Holds if this basic block strictly dominates `bb`. */ + overlay[caller?] pragma[inline] predicate strictlyDominates(ReachableBasicBlock bb) { this = immediateDominator+(bb) } @@ -326,12 +329,14 @@ module Public { * * This predicate is reflexive: each reachable basic block dominates itself. */ + overlay[caller?] pragma[inline] predicate dominates(ReachableBasicBlock bb) { this = immediateDominator*(bb) } /** * Holds if this basic block strictly post-dominates `bb`. */ + overlay[caller?] pragma[inline] predicate strictlyPostDominates(ReachableBasicBlock bb) { this = immediatePostDominator+(bb) } @@ -340,6 +345,7 @@ module Public { * * This predicate is reflexive: each reachable basic block post-dominates itself. */ + overlay[caller?] pragma[inline] predicate postDominates(ReachableBasicBlock bb) { this = immediatePostDominator*(bb) } } diff --git a/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll b/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll index 98a35692822e..eab6b76b031e 100644 --- a/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll +++ b/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll @@ -40,6 +40,7 @@ module Stages { /** * The `ast` stage. */ + overlay[local?] cached module Ast { /** @@ -84,6 +85,7 @@ module Stages { /** * The `basicblocks` stage. */ + overlay[local?] cached module BasicBlocks { /** @@ -110,6 +112,7 @@ module Stages { /** * The part of data flow computed before flow summary nodes. */ + overlay[local?] cached module EarlyDataFlowStage { /** @@ -134,6 +137,7 @@ module Stages { /** * The `dataflow` stage. */ + overlay[local?] cached module DataFlowStage { /** @@ -167,8 +171,6 @@ module Stages { or exists(any(DataFlow::PropRef ref).getBase()) or - exists(any(DataFlow::ClassNode cls)) - or exists(any(DataFlow::CallNode node).getArgument(_)) or exists(any(DataFlow::CallNode node).getAnArgument()) @@ -202,8 +204,6 @@ module Stages { or exists(any(Import i).getImportedModule()) or - exists(DataFlow::moduleImport(_)) - or exists(any(ReExportDeclaration d).getReExportedModule()) or exists(any(Module m).getABulkExportedNode()) diff --git a/javascript/ql/lib/semmle/javascript/internal/Overlay.qll b/javascript/ql/lib/semmle/javascript/internal/Overlay.qll index a20ac1868e6b..db3dc8ac6bf6 100644 --- a/javascript/ql/lib/semmle/javascript/internal/Overlay.qll +++ b/javascript/ql/lib/semmle/javascript/internal/Overlay.qll @@ -1,24 +1,29 @@ private import javascript +private import OverlayXml /** Holds if the database is an overlay. */ -overlay[local] +overlay[local?] private predicate isOverlay() { databaseMetadata("isOverlay", "true") } -overlay[local] +overlay[local?] private string getFileFromEntity(@locatable node) { - exists(@location loc, @file file | - hasLocation(node, loc) and - locations_default(loc, file, _, _, _, _) and - files(file, result) + exists(@location loc | + hasLocation(node, loc) + or + json_locations(node, loc) + or + yaml_locations(node, loc) + | + result = getFileFromLocation(loc) ) } /** Holds if `file` was changed or deleted in the overlay. */ -overlay[local] +overlay[local?] private predicate discardFile(string file) { isOverlay() and overlayChangedFiles(file) } /** Holds if `node` is in the `file` and is part of the overlay base database. */ -overlay[local] +overlay[local?] private predicate discardableEntity(string file, @locatable node) { not isOverlay() and file = getFileFromEntity(node) } @@ -28,3 +33,23 @@ overlay[discard_entity] private predicate discardEntity(@locatable node) { exists(string file | discardableEntity(file, node) and discardFile(file)) } + +overlay[local?] +private string getFileFromLocation(@location loc) { + exists(@file file | + locations_default(loc, file, _, _, _, _) and + files(file, result) + ) +} + +/** Holds if `loc` is in the `file` and is part of the overlay base database. */ +overlay[local?] +private predicate discardableLocation(string file, @location node) { + not isOverlay() and file = getFileFromLocation(node) +} + +/** Holds if `loc` should be discarded, because it is part of the overlay base and is in a file that was also extracted as part of the overlay database. */ +overlay[discard_entity] +private predicate discardLocation(@location loc) { + exists(string file | discardableLocation(file, loc) and discardFile(file)) +} diff --git a/javascript/ql/lib/semmle/javascript/internal/OverlayXml.qll b/javascript/ql/lib/semmle/javascript/internal/OverlayXml.qll new file mode 100644 index 000000000000..95d49f2d6110 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/internal/OverlayXml.qll @@ -0,0 +1,46 @@ +overlay[local] +module; + +/** + * A local predicate that always holds for the overlay variant and never holds for the base variant. + * This is used to define local predicates that behave differently for the base and overlay variant. + */ +private predicate isOverlay() { databaseMetadata("isOverlay", "true") } + +private string getXmlFile(@xmllocatable locatable) { + exists(@location_default location, @file file | xmllocations(locatable, location) | + locations_default(location, file, _, _, _, _) and + files(file, result) + ) +} + +private string getXmlFileInBase(@xmllocatable locatable) { + not isOverlay() and + result = getXmlFile(locatable) +} + +/** + * Holds if the given `file` was extracted as part of the overlay and was extracted by the HTML/XML + * extractor. + */ +private predicate overlayXmlExtracted(string file) { + isOverlay() and + exists(@xmllocatable locatable | + not files(locatable, _) and not xmlNs(locatable, _, _, _) and file = getXmlFile(locatable) + ) +} + +/** + * Holds if the given XML `locatable` should be discarded, because it is part of the overlay base + * and is in a file that was also extracted as part of the overlay database. + */ +overlay[discard_entity] +private predicate discardXmlLocatable(@xmllocatable locatable) { + exists(string file | file = getXmlFileInBase(locatable) | + overlayChangedFiles(file) + or + // The HTML/XML extractor is currently not incremental and may extract more files than those + // included in overlayChangedFiles. + overlayXmlExtracted(file) + ) +} diff --git a/javascript/ql/lib/semmle/javascript/internal/StmtContainers.qll b/javascript/ql/lib/semmle/javascript/internal/StmtContainers.qll index a1df0504ce81..65984e2eb9b5 100644 --- a/javascript/ql/lib/semmle/javascript/internal/StmtContainers.qll +++ b/javascript/ql/lib/semmle/javascript/internal/StmtContainers.qll @@ -4,6 +4,8 @@ * Provides predicates and classes for relating nodes to their * enclosing `StmtContainer`. */ +overlay[local?] +module; private import javascript private import semmle.javascript.internal.CachedStages @@ -46,6 +48,7 @@ class NodeInStmtContainer extends Locatable, @node_in_stmt_container { /** * Gets the function or toplevel to which this node belongs. */ + overlay[caller?] pragma[inline] final StmtContainer getContainer() { result = getStmtContainer(this) } } diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AmbiguousCoreMethods.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AmbiguousCoreMethods.qll index 45ad9cf7a9c9..4e1c9ee6884e 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AmbiguousCoreMethods.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AmbiguousCoreMethods.qll @@ -20,6 +20,8 @@ * * (Promise is absent in the table above as there currently are no name clashes with Promise methods) */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.internal.DataFlowNode diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Arrays.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Arrays.qll index 6754d3db3071..1196ffdbac9c 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Arrays.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Arrays.qll @@ -3,6 +3,8 @@ * * Note that some of Array methods are modeled in `AmbiguousCoreMethods.qll`, and `toString` is special-cased elsewhere. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.FlowSummary diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AsyncAwait.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AsyncAwait.qll index 246ac0f19d08..6a33c9a5c4fb 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AsyncAwait.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AsyncAwait.qll @@ -1,6 +1,8 @@ /** * Contains flow steps to model flow through `async` functions and the `await` operator. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.internal.DataFlowNode diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Decoders.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Decoders.qll index 2866c8926087..80e43fdfcd8c 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Decoders.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Decoders.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import javascript private import semmle.javascript.dataflow.FlowSummary private import semmle.javascript.dataflow.InferredTypes diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/DynamicImportStep.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/DynamicImportStep.qll index 2976b4673150..2661802b97e5 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/DynamicImportStep.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/DynamicImportStep.qll @@ -1,6 +1,8 @@ /** * Contains flow steps to model flow from a module into a dynamic `import()` expression. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.internal.DataFlowNode diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ExceptionFlow.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ExceptionFlow.qll index 252baab207bb..3dff015d9f37 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ExceptionFlow.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ExceptionFlow.qll @@ -1,6 +1,8 @@ /** * Contains a summary for propagating exceptions out of callbacks */ +overlay[local?] +module; private import javascript private import FlowSummaryUtil diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/FlowSummaryUtil.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/FlowSummaryUtil.qll index 33f891935f42..290567efbd9d 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/FlowSummaryUtil.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/FlowSummaryUtil.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import javascript private import semmle.javascript.dataflow.FlowSummary private import semmle.javascript.dataflow.internal.Contents::Private diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ForOfLoops.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ForOfLoops.qll index ecc84170026f..d8460f7d729a 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ForOfLoops.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ForOfLoops.qll @@ -1,6 +1,8 @@ /** * Contains flow steps to model flow through `for..of` loops. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.internal.DataFlowNode @@ -48,12 +50,18 @@ class ForOfLoopStep extends AdditionalFlowInternal { ) { exists(ForOfStmt stmt | pred = getSynthesizedNode(stmt, "for-of-map-key") and - contents.asSingleton().asArrayIndex() = 0 + contents = arrayIndex0() or pred = getSynthesizedNode(stmt, "for-of-map-value") and - contents.asSingleton().asArrayIndex() = 1 + contents = arrayIndex1() | succ = DataFlow::lvalueNode(stmt.getLValue()) ) } } + +pragma[nomagic] +private DataFlow::ContentSet arrayIndex0() { result.asSingleton().asArrayIndex() = 0 } + +pragma[nomagic] +private DataFlow::ContentSet arrayIndex1() { result.asSingleton().asArrayIndex() = 1 } diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Generators.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Generators.qll index 75815d00341d..4f0868db5196 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Generators.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Generators.qll @@ -1,6 +1,8 @@ /** * Contains flow steps to model flow through generator functions. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.internal.DataFlowNode diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Iterators.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Iterators.qll index 6b1a182a49bd..7f9c13c63dfd 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Iterators.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Iterators.qll @@ -1,6 +1,8 @@ /** * Contains flow summaries and steps modeling flow through iterators. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.internal.DataFlowNode diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/JsonStringify.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/JsonStringify.qll index ecd2dcdfc79b..4b8ecdeb4f28 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/JsonStringify.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/JsonStringify.qll @@ -1,6 +1,8 @@ /** * Contains implicit read steps at the input to any function that converts a deep object to a string, such as `JSON.stringify`. */ +overlay[local?] +module; private import javascript private import FlowSummaryUtil diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Maps.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Maps.qll index d9649d407c61..645e36941dc3 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Maps.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Maps.qll @@ -1,6 +1,8 @@ /** * Contains flow summaries and steps modeling flow through `Map` objects. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.FlowSummary diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Promises.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Promises.qll index 74048f0e397e..10292958df2f 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Promises.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Promises.qll @@ -1,6 +1,8 @@ /** * Contains flow summaries and steps modeling flow through `Promise` objects. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.FlowSummary diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Sets.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Sets.qll index 6b4f089b38ec..e4d0951764f1 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Sets.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Sets.qll @@ -1,6 +1,8 @@ /** * Contains flow summaries and steps modeling flow through `Set` objects. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.FlowSummary diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Strings.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Strings.qll index bf9442219a75..b5ecc8ef603c 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Strings.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Strings.qll @@ -1,6 +1,8 @@ /** * Contains flow summaries and steps modeling flow through string methods. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.FlowSummary diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/TypedArrays.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/TypedArrays.qll index 19a28036db49..0ac2307c81a5 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/TypedArrays.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/TypedArrays.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import javascript private import semmle.javascript.dataflow.FlowSummary private import semmle.javascript.dataflow.InferredTypes diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/UrlSearchParams.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/UrlSearchParams.qll index 0a47b6fcf9f5..3d8d88d8ae47 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/UrlSearchParams.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/UrlSearchParams.qll @@ -3,6 +3,8 @@ * * For now, the `URLSearchParams` object is modeled as a `Map` object. */ +overlay[local?] +module; private import javascript diff --git a/javascript/ql/lib/utils/test/InlineSummaries.qll b/javascript/ql/lib/utils/test/InlineSummaries.qll index 559f13609778..1633e056b7f1 100644 --- a/javascript/ql/lib/utils/test/InlineSummaries.qll +++ b/javascript/ql/lib/utils/test/InlineSummaries.qll @@ -1,6 +1,7 @@ import javascript import semmle.javascript.dataflow.FlowSummary +overlay[local?] class MkSummary extends SummarizedCallable { private CallExpr mkSummary; diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 4a453506818e..11b27f044cf1 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,24 @@ +## 2.2.3 + +No user-facing changes. + +## 2.2.2 + +No user-facing changes. + +## 2.2.1 + +### Minor Analysis Improvements + +* Fixed a bug in the Next.js model that would cause the analysis to miss server-side taint sources in the `app/pages` folder. + +## 2.2.0 + +### Query Metadata Changes + +* Increased the `security-severity` score of the `js/xss-through-dom` query from 6.1 to 7.8 to align with other XSS queries. +* Reduced the `security-severity` score of the `js/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. + ## 2.1.3 No user-facing changes. diff --git a/javascript/ql/src/Expressions/DuplicateProperty.ql b/javascript/ql/src/Expressions/DuplicateProperty.ql index febdfe5b8826..b13f1a93ec0d 100644 --- a/javascript/ql/src/Expressions/DuplicateProperty.ql +++ b/javascript/ql/src/Expressions/DuplicateProperty.ql @@ -14,12 +14,26 @@ import Clones +bindingset[init] +pragma[inline_late] +private Property getPropertyFromInitializerStrict(Expr init) { result.getInit() = init } + +pragma[nomagic] +private predicate duplicateProperties( + DuplicatePropertyInitDetector dup, Property prop1, Property prop2 +) { + exists(Expr init2 | + dup.same(init2) and + prop1 = getPropertyFromInitializerStrict(dup) and + prop2 = getPropertyFromInitializerStrict(init2) + ) +} + from ObjectExpr oe, int i, int j, Property p, Property q, DuplicatePropertyInitDetector dpid where + duplicateProperties(dpid, p, q) and p = oe.getProperty(i) and q = oe.getProperty(j) and - dpid = p.getInit() and - dpid.same(q.getInit()) and i < j and // only report the next duplicate not exists(int mid | mid in [i + 1 .. j - 1] | dpid.same(oe.getProperty(mid).getInit())) diff --git a/javascript/ql/src/Security/CWE-020/OverlyLargeRange.ql b/javascript/ql/src/Security/CWE-020/OverlyLargeRange.ql index 582a8975c8f8..c5435e347583 100644 --- a/javascript/ql/src/Security/CWE-020/OverlyLargeRange.ql +++ b/javascript/ql/src/Security/CWE-020/OverlyLargeRange.ql @@ -4,7 +4,7 @@ * This may allow an attacker to bypass a filter or sanitizer. * @kind problem * @problem.severity warning - * @security-severity 5.0 + * @security-severity 4.0 * @precision high * @id js/overly-large-range * @tags correctness diff --git a/javascript/ql/src/Security/CWE-079/XssThroughDom.ql b/javascript/ql/src/Security/CWE-079/XssThroughDom.ql index e690e2bab28e..fb8f32cbaca2 100644 --- a/javascript/ql/src/Security/CWE-079/XssThroughDom.ql +++ b/javascript/ql/src/Security/CWE-079/XssThroughDom.ql @@ -4,7 +4,7 @@ * can lead to a cross-site scripting vulnerability. * @kind path-problem * @problem.severity warning - * @security-severity 6.1 + * @security-severity 7.8 * @precision high * @id js/xss-through-dom * @tags security diff --git a/javascript/ql/src/change-notes/released/2.2.0.md b/javascript/ql/src/change-notes/released/2.2.0.md new file mode 100644 index 000000000000..6a60b337eef2 --- /dev/null +++ b/javascript/ql/src/change-notes/released/2.2.0.md @@ -0,0 +1,6 @@ +## 2.2.0 + +### Query Metadata Changes + +* Increased the `security-severity` score of the `js/xss-through-dom` query from 6.1 to 7.8 to align with other XSS queries. +* Reduced the `security-severity` score of the `js/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. diff --git a/javascript/ql/src/change-notes/released/2.2.1.md b/javascript/ql/src/change-notes/released/2.2.1.md new file mode 100644 index 000000000000..b4bd337fd49a --- /dev/null +++ b/javascript/ql/src/change-notes/released/2.2.1.md @@ -0,0 +1,5 @@ +## 2.2.1 + +### Minor Analysis Improvements + +* Fixed a bug in the Next.js model that would cause the analysis to miss server-side taint sources in the `app/pages` folder. diff --git a/javascript/ql/src/change-notes/released/2.2.2.md b/javascript/ql/src/change-notes/released/2.2.2.md new file mode 100644 index 000000000000..807fd2a0fba2 --- /dev/null +++ b/javascript/ql/src/change-notes/released/2.2.2.md @@ -0,0 +1,3 @@ +## 2.2.2 + +No user-facing changes. diff --git a/javascript/ql/src/change-notes/released/2.2.3.md b/javascript/ql/src/change-notes/released/2.2.3.md new file mode 100644 index 000000000000..1db16246c5a7 --- /dev/null +++ b/javascript/ql/src/change-notes/released/2.2.3.md @@ -0,0 +1,3 @@ +## 2.2.3 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 345fb0c73a44..5ee5c5be7fc0 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.1.3 +lastReleaseVersion: 2.2.3 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 8a50977ba71e..dbdd402abb57 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.1.3 +version: 2.2.3 groups: - javascript - queries diff --git a/javascript/ql/test/library-tests/AMD/tests.ql b/javascript/ql/test/library-tests/AMD/tests.ql index e71ae089f2d4..150c5e9a294d 100644 --- a/javascript/ql/test/library-tests/AMD/tests.ql +++ b/javascript/ql/test/library-tests/AMD/tests.ql @@ -1,5 +1,6 @@ import javascript +overlay[local] class TestAmdModuleRange extends AmdModuleDefinition::Range { TestAmdModuleRange() { this.getCallee().(PropAccess).getQualifiedName() = "test.amd.range" } } diff --git a/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitions.ql b/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitions.ql index a2d69f55ce82..c0571921fba8 100644 --- a/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitions.ql +++ b/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitions.ql @@ -4,6 +4,7 @@ import semmle.javascript.dataflow.internal.FlowSteps as FlowSteps import semmle.javascript.dataflow.internal.AbstractPropertiesImpl as AbstractPropertiesImpl import semmle.javascript.dataflow.CustomAbstractValueDefinitions +overlay[local] class MyCustomAbstractValueDefinition extends CustomAbstractValueDefinition { DataFlow::ValueNode node; diff --git a/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitionsFlow.ql b/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitionsFlow.ql index 0308ad6bf455..0f34b14b48c5 100644 --- a/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitionsFlow.ql +++ b/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitionsFlow.ql @@ -2,6 +2,7 @@ import javascript import semmle.javascript.dataflow.InferredTypes import semmle.javascript.dataflow.CustomAbstractValueDefinitions +overlay[local] class MyCustomAbstractValueDefinition extends CustomAbstractValueDefinition, AST::ValueNode { MyCustomAbstractValueDefinition() { this.flow() instanceof DataFlow::ObjectLiteralNode and diff --git a/javascript/ql/test/library-tests/FlowCustomisation/customValues.ql b/javascript/ql/test/library-tests/FlowCustomisation/customValues.ql index 0b3f87f1b8d2..75c4af21ed74 100644 --- a/javascript/ql/test/library-tests/FlowCustomisation/customValues.ql +++ b/javascript/ql/test/library-tests/FlowCustomisation/customValues.ql @@ -4,6 +4,7 @@ private import semmle.javascript.dataflow.InferredTypes /** * A custom abstract value representing the DOM object `document`. */ +overlay[local] class Document extends CustomAbstractValueTag { Document() { this = "document" } @@ -25,6 +26,7 @@ class Document extends CustomAbstractValueTag { * Note that `getType()` isn't quite right, since `typeof document.all === 'undefined'`, * but that's fine for the purposes of this test. */ +overlay[local] class DocumentAll extends CustomAbstractValueTag { DocumentAll() { this = "document.all" } diff --git a/javascript/ql/test/library-tests/ModuleImportNodes/CustomImport.ql b/javascript/ql/test/library-tests/ModuleImportNodes/CustomImport.ql index abc8c4e17555..c118e36e6067 100644 --- a/javascript/ql/test/library-tests/ModuleImportNodes/CustomImport.ql +++ b/javascript/ql/test/library-tests/ModuleImportNodes/CustomImport.ql @@ -1,5 +1,6 @@ import javascript +overlay[local] class CustomImport extends DataFlow::ModuleImportNode::Range, DataFlow::CallNode { CustomImport() { this.getCalleeName() = "customImport" } diff --git a/javascript/ql/test/library-tests/Nodes/globalObjectRef.expected b/javascript/ql/test/library-tests/Nodes/globalObjectRef.expected index 0c35fe87b268..d3a779eb5970 100644 --- a/javascript/ql/test/library-tests/Nodes/globalObjectRef.expected +++ b/javascript/ql/test/library-tests/Nodes/globalObjectRef.expected @@ -5,9 +5,12 @@ | tst2.js:8:1:8:6 | global | | tst3.js:1:1:1:0 | this | | tst3.js:3:9:3:19 | goog.global | +| tst4.js:1:1:1:0 | this | +| tst4.js:1:1:1:38 | require ... ultView | | tst.js:1:1:1:0 | this | | tst.js:1:1:1:6 | window | | tst.js:3:1:3:6 | window | | tst.js:4:1:4:6 | window | | tst.js:5:1:5:4 | self | | tst.js:6:1:6:10 | globalThis | +| tst.js:7:1:7:20 | document.defaultView | diff --git a/javascript/ql/test/library-tests/Nodes/globalVarRef.expected b/javascript/ql/test/library-tests/Nodes/globalVarRef.expected index 507e099b80ae..48d912d3aa72 100644 --- a/javascript/ql/test/library-tests/Nodes/globalVarRef.expected +++ b/javascript/ql/test/library-tests/Nodes/globalVarRef.expected @@ -1,15 +1,19 @@ | Object | tst2.js:8:1:8:13 | global.Object | | String | tst2.js:9:1:9:11 | this.String | | document | tst2.js:2:1:2:26 | require ... ument") | +| document | tst4.js:1:1:1:26 | require ... ument") | | document | tst.js:3:1:3:15 | window.document | | document | tst.js:5:1:5:13 | self.document | | document | tst.js:6:1:6:19 | globalThis.document | +| document | tst.js:7:1:7:8 | document | | foo | tst3.js:4:1:4:5 | w.foo | | global | tst2.js:7:1:7:6 | global | | global | tst2.js:8:1:8:6 | global | | globalThis | tst.js:6:1:6:10 | globalThis | | goog | tst3.js:1:1:1:4 | goog | | goog | tst3.js:3:9:3:12 | goog | +| history | tst4.js:1:1:1:46 | require ... history | +| history | tst.js:7:1:7:28 | documen ... history | | self | tst.js:5:1:5:4 | self | | setTimeout | tst2.js:5:1:5:12 | g.setTimeout | | window | tst2.js:3:1:3:24 | require ... indow") | diff --git a/javascript/ql/test/library-tests/Nodes/tst.js b/javascript/ql/test/library-tests/Nodes/tst.js index ec660b25580f..395309672d31 100644 --- a/javascript/ql/test/library-tests/Nodes/tst.js +++ b/javascript/ql/test/library-tests/Nodes/tst.js @@ -4,3 +4,4 @@ window.document; window.window.document; self.document; globalThis.document; +document.defaultView.history; diff --git a/javascript/ql/test/library-tests/Nodes/tst4.js b/javascript/ql/test/library-tests/Nodes/tst4.js new file mode 100644 index 000000000000..087a780629e9 --- /dev/null +++ b/javascript/ql/test/library-tests/Nodes/tst4.js @@ -0,0 +1 @@ +require("global/document").defaultView.history; diff --git a/javascript/ql/test/library-tests/RecursionPrevention/SourceNodeFlowsTo.ql b/javascript/ql/test/library-tests/RecursionPrevention/SourceNodeFlowsTo.ql index 9a5350948fe2..a9d27450aee4 100644 --- a/javascript/ql/test/library-tests/RecursionPrevention/SourceNodeFlowsTo.ql +++ b/javascript/ql/test/library-tests/RecursionPrevention/SourceNodeFlowsTo.ql @@ -7,6 +7,7 @@ import javascript +overlay[local] class BadSourceNode extends DataFlow::SourceNode { BadSourceNode() { this.(DataFlow::PropRead).getPropertyName() = "foo" } diff --git a/javascript/ql/test/library-tests/frameworks/data/test.ql b/javascript/ql/test/library-tests/frameworks/data/test.ql index 6a1d571351b4..6ba504e921fa 100644 --- a/javascript/ql/test/library-tests/frameworks/data/test.ql +++ b/javascript/ql/test/library-tests/frameworks/data/test.ql @@ -2,6 +2,7 @@ import javascript deprecated import utils.test.ConsistencyChecking import semmle.javascript.frameworks.data.internal.ApiGraphModels as ApiGraphModels +overlay[local] class TypeModelFromCodeQL extends ModelInput::TypeModel { override predicate isTypeUsed(string type) { type = "danger-constant" } diff --git a/javascript/ql/test/library-tests/frameworks/data/warnings.ql b/javascript/ql/test/library-tests/frameworks/data/warnings.ql index 1ede8e08bcc2..2c3c044ef694 100644 --- a/javascript/ql/test/library-tests/frameworks/data/warnings.ql +++ b/javascript/ql/test/library-tests/frameworks/data/warnings.ql @@ -1,6 +1,7 @@ import javascript import semmle.javascript.frameworks.data.internal.ApiGraphModels as ApiGraphModels +overlay[local] class IsTesting extends ApiGraphModels::TestAllModels { IsTesting() { this = this } } diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected index e536364f805d..b488018d09d1 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected @@ -35,6 +35,8 @@ | app/api/routeNextRequest.ts:15:20:15:23 | body | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | app/api/routeNextRequest.ts:15:20:15:23 | body | Cross-site scripting vulnerability due to a $@. | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | user-provided value | | app/api/routeNextRequest.ts:27:20:27:23 | body | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | app/api/routeNextRequest.ts:27:20:27:23 | body | Cross-site scripting vulnerability due to a $@. | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | user-provided value | | app/api/routeNextRequest.ts:31:27:31:30 | body | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | app/api/routeNextRequest.ts:31:27:31:30 | body | Cross-site scripting vulnerability due to a $@. | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | user-provided value | +| app/pages/Next2.jsx:8:13:8:19 | req.url | app/pages/Next2.jsx:8:13:8:19 | req.url | app/pages/Next2.jsx:8:13:8:19 | req.url | Cross-site scripting vulnerability due to a $@. | app/pages/Next2.jsx:8:13:8:19 | req.url | user-provided value | +| app/pages/Next2.jsx:15:13:15:19 | req.url | app/pages/Next2.jsx:15:13:15:19 | req.url | app/pages/Next2.jsx:15:13:15:19 | req.url | Cross-site scripting vulnerability due to a $@. | app/pages/Next2.jsx:15:13:15:19 | req.url | user-provided value | | etherpad.js:11:12:11:19 | response | etherpad.js:9:16:9:30 | req.query.jsonp | etherpad.js:11:12:11:19 | response | Cross-site scripting vulnerability due to a $@. | etherpad.js:9:16:9:30 | req.query.jsonp | user-provided value | | formatting.js:6:14:6:47 | util.fo ... , evil) | formatting.js:4:16:4:29 | req.query.evil | formatting.js:6:14:6:47 | util.fo ... , evil) | Cross-site scripting vulnerability due to a $@. | formatting.js:4:16:4:29 | req.query.evil | user-provided value | | formatting.js:7:14:7:53 | require ... , evil) | formatting.js:4:16:4:29 | req.query.evil | formatting.js:7:14:7:53 | require ... , evil) | Cross-site scripting vulnerability due to a $@. | formatting.js:4:16:4:29 | req.query.evil | user-provided value | @@ -365,6 +367,8 @@ nodes | app/api/routeNextRequest.ts:15:20:15:23 | body | semmle.label | body | | app/api/routeNextRequest.ts:27:20:27:23 | body | semmle.label | body | | app/api/routeNextRequest.ts:31:27:31:30 | body | semmle.label | body | +| app/pages/Next2.jsx:8:13:8:19 | req.url | semmle.label | req.url | +| app/pages/Next2.jsx:15:13:15:19 | req.url | semmle.label | req.url | | etherpad.js:9:5:9:12 | response | semmle.label | response | | etherpad.js:9:16:9:30 | req.query.jsonp | semmle.label | req.query.jsonp | | etherpad.js:11:12:11:19 | response | semmle.label | response | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected index a4b02fa07491..2dceb5fa8071 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected @@ -34,6 +34,8 @@ | app/api/routeNextRequest.ts:15:20:15:23 | body | Cross-site scripting vulnerability due to $@. | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | user-provided value | | app/api/routeNextRequest.ts:27:20:27:23 | body | Cross-site scripting vulnerability due to $@. | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | user-provided value | | app/api/routeNextRequest.ts:31:27:31:30 | body | Cross-site scripting vulnerability due to $@. | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | user-provided value | +| app/pages/Next2.jsx:8:13:8:19 | req.url | Cross-site scripting vulnerability due to $@. | app/pages/Next2.jsx:8:13:8:19 | req.url | user-provided value | +| app/pages/Next2.jsx:15:13:15:19 | req.url | Cross-site scripting vulnerability due to $@. | app/pages/Next2.jsx:15:13:15:19 | req.url | user-provided value | | formatting.js:6:14:6:47 | util.fo ... , evil) | Cross-site scripting vulnerability due to $@. | formatting.js:4:16:4:29 | req.query.evil | user-provided value | | formatting.js:7:14:7:53 | require ... , evil) | Cross-site scripting vulnerability due to $@. | formatting.js:4:16:4:29 | req.query.evil | user-provided value | | live-server.js:6:13:6:50 | ` ... /html>` | Cross-site scripting vulnerability due to $@. | live-server.js:4:21:4:27 | req.url | user-provided value | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/app/pages/Next2.jsx b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/app/pages/Next2.jsx new file mode 100644 index 000000000000..d6c2232e9571 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/app/pages/Next2.jsx @@ -0,0 +1,19 @@ +export default function Post() { + return ; +} + +Post.getInitialProps = async (ctx) => { + const req = ctx.req; + const res = ctx.res; + res.end(req.url); // $ Alert + return {} +} + +export async function getServerSideProps(ctx) { + const req = ctx.req; + const res = ctx.res; + res.end(req.url); // $ Alert + return { + props: {} + } +} \ No newline at end of file diff --git a/misc/bazel/registry/fix.py b/misc/bazel/registry/fix.py index a2b947e19e20..863c832be59d 100755 --- a/misc/bazel/registry/fix.py +++ b/misc/bazel/registry/fix.py @@ -35,6 +35,9 @@ def patch_json(file, **kwargs): def update(data): data = json.loads(data) if data else {} data.update(kwargs) + for k, v in kwargs.items(): + if v is None: + data.pop(k) return json.dumps(data, indent=4) + "\n" patch_file(file, update) @@ -48,8 +51,21 @@ def update(data): patch_json(entry / "metadata.json", versions=[v.name for v in versions]) for version in versions: - patch_json(version / "source.json", patches={ - p.name: sha256(p) for p in version.joinpath("patches").iterdir() - }) - patch_file(version / "MODULE.bazel", - lambda s: re.sub(r'''version\s*=\s*['"].*['"]''', f'version = "{version.name}"', s, 1)) + patches = version.joinpath("patches") + overlay = version.joinpath("overlay") + modules = [version / "MODULE.bazel", overlay / "MODULE.bazel"] + for module in modules: + if module.is_file(): + patch_file( + module, + lambda s: re.sub(r'''version\s*=\s*['"].*['"]''', f'version = "{version.name}"', s, 1)) + patch_json( + version / "source.json", + patches={ + p.name: sha256(p) for p in patches.iterdir() + } if patches.is_dir() else None, + patch_strip=1 if patches.is_dir() else None, + overlay={ + o.name: sha256(o) for o in overlay.iterdir() + } if overlay.is_dir() else None, + ) diff --git a/misc/bazel/registry/modules/fmt/12.1.0-codeql.1/MODULE.bazel b/misc/bazel/registry/modules/fmt/12.1.0-codeql.1/MODULE.bazel new file mode 100644 index 000000000000..898d1bed0fc2 --- /dev/null +++ b/misc/bazel/registry/modules/fmt/12.1.0-codeql.1/MODULE.bazel @@ -0,0 +1,9 @@ +module( + name = "fmt", + version = "12.1.0-codeql.1", + bazel_compatibility = [">=7.2.1"], + compatibility_level = 10, +) + +bazel_dep(name = "rules_cc", version = "0.2.13") +bazel_dep(name = "rules_license", version = "1.0.0") diff --git a/misc/bazel/registry/modules/fmt/12.1.0-codeql.1/overlay/BUILD.bazel b/misc/bazel/registry/modules/fmt/12.1.0-codeql.1/overlay/BUILD.bazel new file mode 100644 index 000000000000..bde3d4a3d31d --- /dev/null +++ b/misc/bazel/registry/modules/fmt/12.1.0-codeql.1/overlay/BUILD.bazel @@ -0,0 +1,40 @@ +load("@rules_cc//cc:cc_library.bzl", "cc_library") +load("@rules_license//rules:license.bzl", "license") + +package( + default_applicable_licenses = [":license"], +) + +exports_files([ + "LICENSE", +]) + +license( + name = "license", + license_kinds = ["@rules_license//licenses/spdx:MIT"], + license_text = "LICENSE", +) + +cc_library( + name = "fmt", + srcs = [ + #"src/fmt.cc", # No C++ module support, yet in Bazel (https://github.com/bazelbuild/bazel/pull/19940) + "src/format.cc", + "src/os.cc", + ], + hdrs = glob([ + "include/fmt/*.h", + ]), + # codeql change: disable UTF8 support, it's causing issues on Windows + # copts = select({ + # "@rules_cc//cc/compiler:msvc-cl": ["/utf-8"], + # "//conditions:default": [], + # }), + defines = select({ + "@rules_cc//cc/compiler:msvc-cl": ["FMT_UNICODE=0"], + "//conditions:default": [], + }), + includes = ["include"], + strip_include_prefix = "include", # workaround: only needed on some macOS systems (see https://github.com/bazelbuild/bazel-central-registry/issues/1537) + visibility = ["//visibility:public"], +) diff --git a/misc/bazel/registry/modules/fmt/12.1.0-codeql.1/overlay/MODULE.bazel b/misc/bazel/registry/modules/fmt/12.1.0-codeql.1/overlay/MODULE.bazel new file mode 100644 index 000000000000..898d1bed0fc2 --- /dev/null +++ b/misc/bazel/registry/modules/fmt/12.1.0-codeql.1/overlay/MODULE.bazel @@ -0,0 +1,9 @@ +module( + name = "fmt", + version = "12.1.0-codeql.1", + bazel_compatibility = [">=7.2.1"], + compatibility_level = 10, +) + +bazel_dep(name = "rules_cc", version = "0.2.13") +bazel_dep(name = "rules_license", version = "1.0.0") diff --git a/misc/bazel/registry/modules/fmt/12.1.0-codeql.1/source.json b/misc/bazel/registry/modules/fmt/12.1.0-codeql.1/source.json new file mode 100644 index 000000000000..91a417baba58 --- /dev/null +++ b/misc/bazel/registry/modules/fmt/12.1.0-codeql.1/source.json @@ -0,0 +1,9 @@ +{ + "url": "https://github.com/fmtlib/fmt/releases/download/12.1.0/fmt-12.1.0.zip", + "integrity": "sha256-aV/Rl/pa/4/Ge18rvBEEkKh1zfekFoashRL7SA+orac=", + "strip_prefix": "fmt-12.1.0", + "overlay": { + "BUILD.bazel": "sha256-T6CBBdPY92Iloq9NrMjm9kQeQA3nTZJeym6xG5cclOQ=", + "MODULE.bazel": "sha256-Dgke/2OMsffv9jPSDxIwIgJIb4L77VW6lR8TsNHsekg=" + } +} diff --git a/misc/bazel/registry/modules/fmt/metadata.json b/misc/bazel/registry/modules/fmt/metadata.json new file mode 100644 index 000000000000..ca5dd4861536 --- /dev/null +++ b/misc/bazel/registry/modules/fmt/metadata.json @@ -0,0 +1,22 @@ +{ + "homepage": "https://github.com/fmtlib/fmt", + "maintainers": [ + { + "email": "julian.amann@tum.de", + "github": "Vertexwahn", + "github_user_id": 3775001, + "name": "Julian Amann" + }, + { + "github": "mering", + "github_user_id": 133344217 + } + ], + "repository": [ + "github:fmtlib/fmt" + ], + "versions": [ + "12.1.0-codeql.1" + ], + "yanked_versions": {} +} diff --git a/misc/codegen/templates/ql_db.mustache b/misc/codegen/templates/ql_db.mustache index e63e0aae9034..a82ff78ec51f 100644 --- a/misc/codegen/templates/ql_db.mustache +++ b/misc/codegen/templates/ql_db.mustache @@ -29,9 +29,79 @@ module Raw { {{type}} {{getter}}({{#is_indexed}}int index{{/is_indexed}}) { {{tablename}}({{#tableparams}}{{^first}}, {{/first}}{{param}}{{/tableparams}}) } + {{#is_indexed}} + /** + * Gets the number of {{doc_plural}}. + {{#internal}} + * INTERNAL: Do not use. + {{/internal}} + */ + int getNumberOf{{plural}}() { + result = count(int i | {{tablename}}(this, i, _)) + } + {{/is_indexed}} {{/synth}} {{/properties}} } + + {{#final}} + private Element getImmediateChildOf{{name}}({{name}} e, int index) { + {{^has_children}}none(){{/has_children}} + {{#has_children}} + {{! n is the base offset 0, for ease of generation }} + {{! n is constructed to be strictly greater than the indexes for children }} + exists(int n{{#all_children}}, int n{{property.singular}}{{/all_children}} | + n = 0 + {{#all_children}} + {{#property}} + {{#synth}} + and + n{{singular}} = n{{prev}} + {{/synth}} + {{^synth}} + {{! n is defined on top of the previous definition }} + {{! for single and optional properties it adds 1 (regardless of whether the optional property exists) }} + {{! for repeated it adds 1 + the maximum index (which works for repeated optional as well) }} + and + n{{singular}} = n{{prev}} {{^is_repeated}}+ 1{{/is_repeated}}{{#is_repeated}}+ e.getNumberOf{{plural}}(){{/is_repeated}} + {{/synth}} + {{/property}} + {{/all_children}} and ( + none() + {{#all_children}} + {{#property}} + {{^synth}} + or + {{#is_repeated}} + result = e.get{{singular}}(index - n{{prev}}) + {{/is_repeated}} + {{^is_repeated}} + index = n{{prev}} and result = e.get{{singular}}() + {{/is_repeated}} + {{/synth}} + {{/property}} + {{/all_children}} + )) + {{/has_children}} + } + {{/final}} + {{/classes}} + + /** + * Gets the immediate child indexed at `index`. Indexes are not guaranteed to be contiguous, but are guaranteed to be distinct. + */ + pragma[nomagic] + Element getImmediateChild(Element e, int index) { + // why does this look more complicated than it should? + // * none() simplifies generation, as we can append `or ...` without a special case for the first item + none() + {{#classes}} + {{#final}} + or + result = getImmediateChildOf{{name}}(e, index) + {{/final}} + {{/classes}} + } } diff --git a/misc/codegen/templates/ql_parent.mustache b/misc/codegen/templates/ql_parent.mustache index 84bc0d79a0b7..91c5de98c47e 100644 --- a/misc/codegen/templates/ql_parent.mustache +++ b/misc/codegen/templates/ql_parent.mustache @@ -23,7 +23,12 @@ private module Impl { {{! for single and optional properties it adds 1 (regardless of whether the optional property exists) }} {{! for repeated it adds 1 + the maximum index (which works for repeated optional as well) }} and - n{{singular}} = n{{prev}} + 1{{#is_repeated}}+ max(int i | i = -1 or exists(e.get{{#type_is_hideable}}Immediate{{/type_is_hideable}}{{singular}}(i)) | i){{/is_repeated}} + {{#type_is_hideable}} + n{{singular}} = n{{prev}} + 1{{#is_repeated}}+ max(int i | i = -1 or exists(e.getImmediate{{singular}}(i)) | i){{/is_repeated}} + {{/type_is_hideable}} + {{^type_is_hideable}} + n{{singular}} = n{{prev}} {{^is_repeated}}+ 1{{/is_repeated}}{{#is_repeated}}+ e.getNumberOf{{plural}}(){{/is_repeated}} + {{/type_is_hideable}} {{/property}} {{/all_children}} and ( none() diff --git a/misc/codegen/templates/ql_synth_types.mustache b/misc/codegen/templates/ql_synth_types.mustache index c76654b8ea95..14a48f635e5f 100644 --- a/misc/codegen/templates/ql_synth_types.mustache +++ b/misc/codegen/templates/ql_synth_types.mustache @@ -32,9 +32,28 @@ module Synth { {{/root}} {{/non_final_classes}} + /** + * INTERNAL: Do not use. + * + * Gets the parent of synthetic element `e`. + */ + Raw::{{root}} getSynthParent(T{{root}} e) { + none() + {{#final_classes}} + {{#is_fresh_synth}} + {{#has_params}} + or + e = T{{name}}({{#params}}{{#first}}result{{/first}}{{^first}}, _{{/first}}{{/params}}) + {{/has_params}} + {{/is_fresh_synth}} + {{/final_classes}} + } + + {{#final_classes}} /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `T{{name}}`, if possible. */ T{{name}} convert{{name}}FromRaw(Raw::Element e) { diff --git a/misc/ripunzip/BUILD.bazel b/misc/ripunzip/BUILD.bazel index fb33124f3b28..abd9c0828873 100644 --- a/misc/ripunzip/BUILD.bazel +++ b/misc/ripunzip/BUILD.bazel @@ -2,7 +2,7 @@ load("@rules_shell//shell:sh_binary.bzl", "sh_binary") alias( name = "ripunzip", - actual = select({"@platforms//os:" + os: "@ripunzip-%s//:ripunzip" % os for os in ("linux", "windows", "macos")}), + actual = "@ripunzip", visibility = ["//visibility:public"], ) diff --git a/misc/ripunzip/BUILD.ripunzip.bazel b/misc/ripunzip/BUILD.ripunzip.bazel index e2832d1e2758..582138dd3e1c 100644 --- a/misc/ripunzip/BUILD.ripunzip.bazel +++ b/misc/ripunzip/BUILD.ripunzip.bazel @@ -2,7 +2,7 @@ load("@bazel_skylib//rules:native_binary.bzl", "native_binary") native_binary( name = "ripunzip", - src = glob(["ripunzip-*"])[0], + src = glob(["bin/ripunzip*"])[0], out = "ripunzip" + select({ "@platforms//os:windows": ".exe", "//conditions:default": "", diff --git a/misc/ripunzip/ripunzip-Linux.zip b/misc/ripunzip/ripunzip-Linux.zip deleted file mode 100644 index d5535b1f17fe..000000000000 --- a/misc/ripunzip/ripunzip-Linux.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:411e5578af004e7be449b6945d50b0984efc3308fe42a0b5c9e82d4be38425e1 -size 4888352 diff --git a/misc/ripunzip/ripunzip-Windows.zip b/misc/ripunzip/ripunzip-Windows.zip deleted file mode 100644 index 7ef76bfbb0d7..000000000000 --- a/misc/ripunzip/ripunzip-Windows.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0c0bfe3d9c8a2236ecdb574839e83d54c50a019656d26d4d870e8ca26be083dd -size 1860383 diff --git a/misc/ripunzip/ripunzip-macOS.zip b/misc/ripunzip/ripunzip-macOS.zip deleted file mode 100644 index c47a54d2c07f..000000000000 --- a/misc/ripunzip/ripunzip-macOS.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a1edacc510b44d35f926e7a682ea8efc1a7f28028cacf31f432e5b4b409a2d2b -size 4140891 diff --git a/misc/ripunzip/ripunzip.bzl b/misc/ripunzip/ripunzip.bzl new file mode 100644 index 000000000000..2e707c267e24 --- /dev/null +++ b/misc/ripunzip/ripunzip.bzl @@ -0,0 +1,59 @@ +def _ripunzip_archive_impl(repository_ctx): + version = repository_ctx.attr.version + url_prefix = "https://github.com/GoogleChrome/ripunzip/releases/download/v%s" % version + build_file = Label("//misc/ripunzip:BUILD.ripunzip.bazel") + if "linux" in repository_ctx.os.name: + # ripunzip only provides a deb package for Linux: we fish the binary out of it + # a deb archive contains a data.tar.xz one which contains the files to be installed under usr/bin + repository_ctx.download_and_extract( + url = "%s/ripunzip_%s-1_amd64.deb" % (url_prefix, version), + sha256 = repository_ctx.attr.sha256_linux, + canonical_id = "ripunzip-linux", + output = "deb", + ) + repository_ctx.extract( + "deb/data.tar.xz", + strip_prefix = "usr/bin", + output = "bin", + ) + elif "windows" in repository_ctx.os.name: + repository_ctx.download_and_extract( + url = "%s/ripunzip_v%s_x86_64-pc-windows-msvc.zip" % (url_prefix, version), + canonical_id = "ripunzip-windows", + sha256 = repository_ctx.attr.sha256_windows, + output = "bin", + ) + elif "mac os" in repository_ctx.os.name: + arch = repository_ctx.os.arch + if arch == "x86_64": + suffix = "x86_64-apple-darwin" + sha256 = repository_ctx.attr.sha256_macos_intel + canonical_id = "ripunzip-macos-intel" + elif arch == "aarch64": + suffix = "aarch64-apple-darwin" + sha256 = repository_ctx.attr.sha256_macos_arm + canonical_id = "ripunzip-macos-arm" + else: + fail("Unsupported macOS architecture: %s" % arch) + repository_ctx.download_and_extract( + url = "%s/ripunzip_v%s_%s.tar.gz" % (url_prefix, version, suffix), + sha256 = sha256, + canonical_id = canonical_id, + output = "bin", + ) + else: + fail("Unsupported OS: %s" % repository_ctx.os.name) + repository_ctx.file("WORKSPACE.bazel") + repository_ctx.symlink(build_file, "BUILD.bazel") + +ripunzip_archive = repository_rule( + implementation = _ripunzip_archive_impl, + doc = "Downloads a prebuilt ripunzip binary for the host platform from https://github.com/GoogleChrome/ripunzip/releases", + attrs = { + "version": attr.string(mandatory = True), + "sha256_linux": attr.string(mandatory = True), + "sha256_windows": attr.string(mandatory = True), + "sha256_macos_intel": attr.string(mandatory = True), + "sha256_macos_arm": attr.string(mandatory = True), + }, +) diff --git a/misc/scripts/generate-code-scanning-query-list.py b/misc/scripts/generate-code-scanning-query-list.py index 02d59c473ec7..24ed1d5de004 100755 --- a/misc/scripts/generate-code-scanning-query-list.py +++ b/misc/scripts/generate-code-scanning-query-list.py @@ -31,7 +31,7 @@ # Define which languages and query packs to consider languages = [ "actions", "cpp", "csharp", "go", "java", "javascript", "python", "ruby", "rust", "swift" ] -packs = [ "code-scanning", "security-and-quality", "security-extended", "security-experimental", "code-quality"] +packs = [ "code-scanning", "security-and-quality", "security-extended", "security-experimental", "code-quality", "code-quality-extended"] class CodeQL: def __init__(self): @@ -184,8 +184,8 @@ def subprocess_run(cmd): sys.exit("You can use '--ignore-missing-query-packs' to ignore this error") # Exception for the code-quality suites, which might be empty, but must be resolvable. - if pack == 'code-quality' and queries_subp == '': - print(f'Warning: skipping empty suite code-quality', file=sys.stderr) + if pack in ['code-quality', 'code-quality-extended'] and queries_subp == '': + print(f'Warning: skipping empty suite {pack}', file=sys.stderr) continue # Investigate metadata for every query by using 'codeql resolve metadata' diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 203d289a6734..5e5c3c37bae3 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.0.38 + +No user-facing changes. + +## 1.0.37 + +No user-facing changes. + +## 1.0.36 + +No user-facing changes. + +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.35.md b/misc/suite-helpers/change-notes/released/1.0.35.md new file mode 100644 index 000000000000..c539ed2d3b13 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.36.md b/misc/suite-helpers/change-notes/released/1.0.36.md new file mode 100644 index 000000000000..6cefe97d8b80 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.36.md @@ -0,0 +1,3 @@ +## 1.0.36 + +No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.37.md b/misc/suite-helpers/change-notes/released/1.0.37.md new file mode 100644 index 000000000000..505bacf104d6 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.37.md @@ -0,0 +1,3 @@ +## 1.0.37 + +No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.38.md b/misc/suite-helpers/change-notes/released/1.0.38.md new file mode 100644 index 000000000000..2c984549c5fb --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.38.md @@ -0,0 +1,3 @@ +## 1.0.38 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index b736654032cf..b14e9763a8d4 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.38 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 5aad5f4b49d1..61d94ab3ef0e 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.34 +version: 1.0.38 groups: shared warnOnImplicitThis: true diff --git a/python/extractor/imp.py b/python/extractor/imp.py index 8d703250b671..5130f64ebef1 100644 --- a/python/extractor/imp.py +++ b/python/extractor/imp.py @@ -25,7 +25,7 @@ from importlib._bootstrap import _ERR_MSG except ImportError: from importlib._bootstrap import _ERR_MSG_PREFIX - _ERR_MSG = _ERR_MSG_PREFIX + '{name!r}' + _ERR_MSG = _ERR_MSG_PREFIX + '{!r}' from importlib import machinery from importlib import util diff --git a/python/extractor/semmle/util.py b/python/extractor/semmle/util.py index 2f6a18ac7a97..445d40dab3d0 100644 --- a/python/extractor/semmle/util.py +++ b/python/extractor/semmle/util.py @@ -10,7 +10,7 @@ #Semantic version of extractor. #Update this if any changes are made -VERSION = "7.1.5" +VERSION = "7.1.6" PY_EXTENSIONS = ".py", ".pyw" diff --git a/python/ql/examples/snippets/builtin_object.ql b/python/ql/examples/snippets/builtin_object.ql index 7f552a5aa796..36b2d92e0b97 100644 --- a/python/ql/examples/snippets/builtin_object.ql +++ b/python/ql/examples/snippets/builtin_object.ql @@ -8,7 +8,8 @@ */ import python +private import LegacyPointsTo -from Expr e, string name +from ExprWithPointsTo e, string name where e.pointsTo(Value::named(name)) and not name.charAt(_) = "." select e diff --git a/python/ql/examples/snippets/catch_exception.ql b/python/ql/examples/snippets/catch_exception.ql index 9d67d0056b62..b4a77f267d09 100644 --- a/python/ql/examples/snippets/catch_exception.ql +++ b/python/ql/examples/snippets/catch_exception.ql @@ -8,9 +8,10 @@ */ import python +private import LegacyPointsTo from ExceptStmt ex, ClassValue cls where cls.getName() = "MyExceptionClass" and - ex.getType().pointsTo(cls) + ex.getType().(ExprWithPointsTo).pointsTo(cls) select ex diff --git a/python/ql/examples/snippets/conditional_expression.ql b/python/ql/examples/snippets/conditional_expression.ql index 8af55ca104ff..876c34678692 100644 --- a/python/ql/examples/snippets/conditional_expression.ql +++ b/python/ql/examples/snippets/conditional_expression.ql @@ -9,10 +9,11 @@ */ import python +private import LegacyPointsTo from IfExp e, ClassObject cls1, ClassObject cls2 where - e.getBody().refersTo(_, cls1, _) and - e.getOrelse().refersTo(_, cls2, _) and + e.getBody().(ExprWithPointsTo).refersTo(_, cls1, _) and + e.getOrelse().(ExprWithPointsTo).refersTo(_, cls2, _) and cls1 != cls2 select e diff --git a/python/ql/examples/snippets/new_instance.ql b/python/ql/examples/snippets/new_instance.ql index 75a1ea635d53..b0be6f77197c 100644 --- a/python/ql/examples/snippets/new_instance.ql +++ b/python/ql/examples/snippets/new_instance.ql @@ -8,9 +8,10 @@ */ import python +private import LegacyPointsTo from Call new, ClassValue cls where cls.getName() = "MyClass" and - new.getFunc().pointsTo(cls) + new.getFunc().(ExprWithPointsTo).pointsTo(cls) select new diff --git a/python/ql/examples/snippets/print.ql b/python/ql/examples/snippets/print.ql index f0ba47eafeb3..ba4d730118d6 100644 --- a/python/ql/examples/snippets/print.ql +++ b/python/ql/examples/snippets/print.ql @@ -6,6 +6,7 @@ */ import python +private import LegacyPointsTo from AstNode print where @@ -13,5 +14,5 @@ where print instanceof Print or /* Python 3 or with `from __future__ import print_function` */ - print.(Call).getFunc().pointsTo(Value::named("print")) + print.(Call).getFunc().(ExprWithPointsTo).pointsTo(Value::named("print")) select print diff --git a/python/ql/examples/snippets/raise_exception.ql b/python/ql/examples/snippets/raise_exception.ql index 12e4f93a349c..23cf26a8c60a 100644 --- a/python/ql/examples/snippets/raise_exception.ql +++ b/python/ql/examples/snippets/raise_exception.ql @@ -8,9 +8,10 @@ */ import python +private import LegacyPointsTo from Raise raise, ClassValue ex where ex.getName() = "AnException" and - raise.getException().pointsTo(ex.getASuperType()) + raise.getException().(ExprWithPointsTo).pointsTo(ex.getASuperType()) select raise, "Don't raise instances of 'AnException'" diff --git a/python/ql/examples/snippets/store_none.ql b/python/ql/examples/snippets/store_none.ql index 57be82f229dc..b35c5fc84b4e 100644 --- a/python/ql/examples/snippets/store_none.ql +++ b/python/ql/examples/snippets/store_none.ql @@ -10,9 +10,10 @@ */ import python +private import LegacyPointsTo from SubscriptNode store where store.isStore() and - store.getIndex().pointsTo(Value::named("None")) + store.getIndex().(ControlFlowNodeWithPointsTo).pointsTo(Value::named("None")) select store diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index df8a66ca0e62..17da65f262d4 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,23 @@ +## 5.0.3 + +No user-facing changes. + +## 5.0.2 + +No user-facing changes. + +## 5.0.1 + +### Bug Fixes + +- Fixed a bug in the Python extractor's import handling where failing to find an import in `find_module` would cause a `KeyError` to be raised. (Contributed by @akoeplinger.) + +## 5.0.0 + +### Breaking Changes + +- The classes `ControlFlowNode`, `Expr`, and `Module` no longer expose predicates that invoke the points-to analysis. To access these predicates, import the module `LegacyPointsTo` and follow the instructions given therein. + ## 4.1.0 ### New Features diff --git a/python/ql/lib/LegacyPointsTo.qll b/python/ql/lib/LegacyPointsTo.qll new file mode 100644 index 000000000000..3e6758546018 --- /dev/null +++ b/python/ql/lib/LegacyPointsTo.qll @@ -0,0 +1,210 @@ +/** + * DEPRECATED: Using the methods in this module may lead to a degradation of performance. Use at + * your own peril. + * + * This module contains legacy points-to predicates and methods for various classes in the + * points-to analysis. + * + * Existing code that depends on, say, points-to predicates on `ControlFlowNode` should be modified + * to use `ControlFlowNodeWithPointsTo` instead. In particular, if inside a method call chain such + * as + * + * `someCallNode.getFunction().pointsTo(...)` + * + * an explicit cast should be added as follows + * + * `someCallNode.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(...)` + * + * Similarly, if a bound variable has type `ControlFlowNode`, and a points-to method is called on + * it, the type should be changed to `ControlFlowNodeWithPointsTo`. + */ + +private import python +private import semmle.python.pointsto.PointsTo +private import semmle.python.objects.Modules + +/** + * An extension of `ControlFlowNode` that provides points-to predicates. + */ +class ControlFlowNodeWithPointsTo extends ControlFlowNode { + /** Gets the value that this ControlFlowNode points-to. */ + predicate pointsTo(Value value) { this.pointsTo(_, value, _) } + + /** Gets the value that this ControlFlowNode points-to. */ + Value pointsTo() { this.pointsTo(_, result, _) } + + /** Gets a value that this ControlFlowNode may points-to. */ + Value inferredValue() { this.pointsTo(_, result, _) } + + /** Gets the value and origin that this ControlFlowNode points-to. */ + predicate pointsTo(Value value, ControlFlowNode origin) { this.pointsTo(_, value, origin) } + + /** Gets the value and origin that this ControlFlowNode points-to, given the context. */ + predicate pointsTo(Context context, Value value, ControlFlowNode origin) { + PointsTo::pointsTo(this, context, value, origin) + } + + /** + * Gets what this flow node might "refer-to". Performs a combination of localized (intra-procedural) points-to + * analysis and global module-level analysis. This points-to analysis favours precision over recall. It is highly + * precise, but may not provide information for a significant number of flow-nodes. + * If the class is unimportant then use `refersTo(value)` or `refersTo(value, origin)` instead. + */ + pragma[nomagic] + predicate refersTo(Object obj, ClassObject cls, ControlFlowNode origin) { + this.refersTo(_, obj, cls, origin) + } + + /** Gets what this expression might "refer-to" in the given `context`. */ + pragma[nomagic] + predicate refersTo(Context context, Object obj, ClassObject cls, ControlFlowNode origin) { + not obj = unknownValue() and + not cls = theUnknownType() and + PointsTo::points_to(this, context, obj, cls, origin) + } + + /** + * Whether this flow node might "refer-to" to `value` which is from `origin` + * Unlike `this.refersTo(value, _, origin)` this predicate includes results + * where the class cannot be inferred. + */ + pragma[nomagic] + predicate refersTo(Object obj, ControlFlowNode origin) { + not obj = unknownValue() and + PointsTo::points_to(this, _, obj, _, origin) + } + + /** Equivalent to `this.refersTo(value, _)` */ + predicate refersTo(Object obj) { this.refersTo(obj, _) } + + /** + * Check whether this control-flow node has complete points-to information. + * This would mean that the analysis managed to infer an over approximation + * of possible values at runtime. + */ + predicate hasCompletePointsToSet() { + // If the tracking failed, then `this` will be its own "origin". In that + // case, we want to exclude nodes for which there is also a different + // origin, as that would indicate that some paths failed and some did not. + this.refersTo(_, _, this) and + not exists(ControlFlowNode other | other != this and this.refersTo(_, _, other)) + or + // If `this` is a use of a variable, then we must have complete points-to + // for that variable. + exists(SsaVariable v | v.getAUse() = this | varHasCompletePointsToSet(v)) + } +} + +/** + * Check whether a SSA variable has complete points-to information. + * This would mean that the analysis managed to infer an overapproximation + * of possible values at runtime. + */ +private predicate varHasCompletePointsToSet(SsaVariable var) { + // Global variables may be modified non-locally or concurrently. + not var.getVariable() instanceof GlobalVariable and + ( + // If we have complete points-to information on the definition of + // this variable, then the variable has complete information. + var.getDefinition() + .(DefinitionNode) + .getValue() + .(ControlFlowNodeWithPointsTo) + .hasCompletePointsToSet() + or + // If this variable is a phi output, then we have complete + // points-to information about it if all phi inputs had complete + // information. + forex(SsaVariable phiInput | phiInput = var.getAPhiInput() | + varHasCompletePointsToSet(phiInput) + ) + ) +} + +/** + * An extension of `Expr` that provides points-to predicates. + */ +class ExprWithPointsTo extends Expr { + /** + * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. + * Gets what this expression might "refer-to". Performs a combination of localized (intra-procedural) points-to + * analysis and global module-level analysis. This points-to analysis favours precision over recall. It is highly + * precise, but may not provide information for a significant number of flow-nodes. + * If the class is unimportant then use `refersTo(value)` or `refersTo(value, origin)` instead. + * NOTE: For complex dataflow, involving multiple stages of points-to analysis, it may be more precise to use + * `ControlFlowNode.refersTo(...)` instead. + */ + predicate refersTo(Object obj, ClassObject cls, AstNode origin) { + this.refersTo(_, obj, cls, origin) + } + + /** + * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. + * Gets what this expression might "refer-to" in the given `context`. + */ + predicate refersTo(Context context, Object obj, ClassObject cls, AstNode origin) { + this.getAFlowNode() + .(ControlFlowNodeWithPointsTo) + .refersTo(context, obj, cls, origin.getAFlowNode()) + } + + /** + * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. + * Holds if this expression might "refer-to" to `value` which is from `origin` + * Unlike `this.refersTo(value, _, origin)`, this predicate includes results + * where the class cannot be inferred. + */ + pragma[nomagic] + predicate refersTo(Object obj, AstNode origin) { + this.getAFlowNode().(ControlFlowNodeWithPointsTo).refersTo(obj, origin.getAFlowNode()) + } + + /** + * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. + * Equivalent to `this.refersTo(value, _)` + */ + predicate refersTo(Object obj) { this.refersTo(obj, _) } + + /** + * Holds if this expression might "point-to" to `value` which is from `origin` + * in the given `context`. + */ + predicate pointsTo(Context context, Value value, AstNode origin) { + this.getAFlowNode() + .(ControlFlowNodeWithPointsTo) + .pointsTo(context, value, origin.getAFlowNode()) + } + + /** + * Holds if this expression might "point-to" to `value` which is from `origin`. + */ + predicate pointsTo(Value value, AstNode origin) { + this.getAFlowNode().(ControlFlowNodeWithPointsTo).pointsTo(value, origin.getAFlowNode()) + } + + /** + * Holds if this expression might "point-to" to `value`. + */ + predicate pointsTo(Value value) { this.pointsTo(value, _) } + + /** Gets a value that this expression might "point-to". */ + Value pointsTo() { this.pointsTo(result) } + + override string getAQlClass() { none() } +} + +/** + * An extension of `Module` that provides points-to related methods. + */ +class ModuleWithPointsTo extends Module { + /** Gets a name exported by this module, that is the names that will be added to a namespace by 'from this-module import *' */ + string getAnExport() { + py_exports(this, result) + or + exists(ModuleObjectInternal mod | mod.getSource() = this.getEntryNode() | + mod.(ModuleValue).exports(result) + ) + } + + override string getAQlClass() { none() } +} diff --git a/python/ql/lib/analysis/DefinitionTracking.qll b/python/ql/lib/analysis/DefinitionTracking.qll index e015d0f70a97..53f8e791cd8b 100644 --- a/python/ql/lib/analysis/DefinitionTracking.qll +++ b/python/ql/lib/analysis/DefinitionTracking.qll @@ -3,6 +3,7 @@ */ import python +private import LegacyPointsTo import semmle.python.pointsto.PointsTo import IDEContextual @@ -36,22 +37,22 @@ private predicate jump_to_defn(ControlFlowNode use, Definition defn) { ) or exists(PythonModuleObject mod | - use.(ImportExprNode).refersTo(mod) and + use.(ImportExprNode).(ControlFlowNodeWithPointsTo).refersTo(mod) and defn.getAstNode() = mod.getModule() ) or exists(PythonModuleObject mod, string name | - use.(ImportMemberNode).getModule(name).refersTo(mod) and + use.(ImportMemberNode).getModule(name).(ControlFlowNodeWithPointsTo).refersTo(mod) and scope_jump_to_defn_attribute(mod.getModule(), name, defn) ) or exists(PackageObject package | - use.(ImportExprNode).refersTo(package) and + use.(ImportExprNode).(ControlFlowNodeWithPointsTo).refersTo(package) and defn.getAstNode() = package.getInitModule().getModule() ) or exists(PackageObject package, string name | - use.(ImportMemberNode).getModule(name).refersTo(package) and + use.(ImportMemberNode).getModule(name).(ControlFlowNodeWithPointsTo).refersTo(package) and scope_jump_to_defn_attribute(package.getInitModule().getModule(), name, defn) ) or @@ -230,7 +231,7 @@ private predicate module_and_name_for_import_star_helper( ModuleObject mod, string name, ImportStarNode im_star, ImportStarRefinement def ) { im_star = def.getDefiningNode() and - im_star.getModule().refersTo(mod) and + im_star.getModule().(ControlFlowNodeWithPointsTo).refersTo(mod) and name = def.getSourceVariable().getName() } @@ -239,7 +240,7 @@ pragma[noinline] private predicate variable_not_redefined_by_import_star(EssaVariable var, ImportStarRefinement def) { var = def.getInput() and exists(ModuleObject mod | - def.getDefiningNode().(ImportStarNode).getModule().refersTo(mod) and + def.getDefiningNode().(ImportStarNode).getModule().(ControlFlowNodeWithPointsTo).refersTo(mod) and not mod.exports(var.getSourceVariable().getName()) ) } @@ -352,7 +353,9 @@ private predicate scope_jump_to_defn_attribute(ImportTimeScope s, string name, D ) } -private predicate jump_to_defn_attribute(ControlFlowNode use, string name, Definition defn) { +private predicate jump_to_defn_attribute( + ControlFlowNodeWithPointsTo use, string name, Definition defn +) { /* Local attribute */ exists(EssaVariable var | use = var.getASourceUse() and @@ -367,7 +370,7 @@ private predicate jump_to_defn_attribute(ControlFlowNode use, string name, Defin /* Super attributes */ exists(AttrNode f, SuperBoundMethod sbm, Object function | use = f.getObject(name) and - f.refersTo(sbm) and + f.(ControlFlowNodeWithPointsTo).refersTo(sbm) and function = sbm.getFunction(_) and function.getOrigin() = defn.getAstNode() ) @@ -408,7 +411,7 @@ private predicate attribute_assignment_jump_to_defn_attribute( private predicate sets_attribute(ArgumentRefinement def, string name) { exists(CallNode call | call = def.getDefiningNode() and - call.getFunction().refersTo(Object::builtin("setattr")) and + call.getFunction().(ControlFlowNodeWithPointsTo).refersTo(Object::builtin("setattr")) and def.getInput().getAUse() = call.getArg(0) and call.getArg(1).getNode().(StringLiteral).getText() = name ) diff --git a/python/ql/lib/change-notes/released/5.0.0.md b/python/ql/lib/change-notes/released/5.0.0.md new file mode 100644 index 000000000000..ae6a34880e01 --- /dev/null +++ b/python/ql/lib/change-notes/released/5.0.0.md @@ -0,0 +1,5 @@ +## 5.0.0 + +### Breaking Changes + +- The classes `ControlFlowNode`, `Expr`, and `Module` no longer expose predicates that invoke the points-to analysis. To access these predicates, import the module `LegacyPointsTo` and follow the instructions given therein. diff --git a/python/ql/lib/change-notes/released/5.0.1.md b/python/ql/lib/change-notes/released/5.0.1.md new file mode 100644 index 000000000000..97ea0f1bc484 --- /dev/null +++ b/python/ql/lib/change-notes/released/5.0.1.md @@ -0,0 +1,5 @@ +## 5.0.1 + +### Bug Fixes + +- Fixed a bug in the Python extractor's import handling where failing to find an import in `find_module` would cause a `KeyError` to be raised. (Contributed by @akoeplinger.) diff --git a/python/ql/lib/change-notes/released/5.0.2.md b/python/ql/lib/change-notes/released/5.0.2.md new file mode 100644 index 000000000000..3f921f9ca8b1 --- /dev/null +++ b/python/ql/lib/change-notes/released/5.0.2.md @@ -0,0 +1,3 @@ +## 5.0.2 + +No user-facing changes. diff --git a/python/ql/lib/change-notes/released/5.0.3.md b/python/ql/lib/change-notes/released/5.0.3.md new file mode 100644 index 000000000000..57074925279e --- /dev/null +++ b/python/ql/lib/change-notes/released/5.0.3.md @@ -0,0 +1,3 @@ +## 5.0.3 + +No user-facing changes. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index d5b1bf88d10e..6997554f6ddd 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.1.0 +lastReleaseVersion: 5.0.3 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 88b85332fbac..9f7bae40e6af 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 4.1.0 +version: 5.0.3 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/lib/semmle/python/Exprs.qll b/python/ql/lib/semmle/python/Exprs.qll index a7f67b0b80ea..e5ee2bdb28c7 100644 --- a/python/ql/lib/semmle/python/Exprs.qll +++ b/python/ql/lib/semmle/python/Exprs.qll @@ -1,6 +1,4 @@ -import python -private import semmle.python.pointsto.PointsTo -private import semmle.python.objects.ObjectInternal +private import python private import semmle.python.internal.CachedStages /** An expression */ @@ -52,67 +50,6 @@ class Expr extends Expr_, AstNode { Expr getASubExpression() { none() } override AstNode getAChildNode() { result = this.getASubExpression() } - - /** - * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. - * Gets what this expression might "refer-to". Performs a combination of localized (intra-procedural) points-to - * analysis and global module-level analysis. This points-to analysis favours precision over recall. It is highly - * precise, but may not provide information for a significant number of flow-nodes. - * If the class is unimportant then use `refersTo(value)` or `refersTo(value, origin)` instead. - * NOTE: For complex dataflow, involving multiple stages of points-to analysis, it may be more precise to use - * `ControlFlowNode.refersTo(...)` instead. - */ - predicate refersTo(Object obj, ClassObject cls, AstNode origin) { - this.refersTo(_, obj, cls, origin) - } - - /** - * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. - * Gets what this expression might "refer-to" in the given `context`. - */ - predicate refersTo(Context context, Object obj, ClassObject cls, AstNode origin) { - this.getAFlowNode().refersTo(context, obj, cls, origin.getAFlowNode()) - } - - /** - * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. - * Holds if this expression might "refer-to" to `value` which is from `origin` - * Unlike `this.refersTo(value, _, origin)`, this predicate includes results - * where the class cannot be inferred. - */ - pragma[nomagic] - predicate refersTo(Object obj, AstNode origin) { - this.getAFlowNode().refersTo(obj, origin.getAFlowNode()) - } - - /** - * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. - * Equivalent to `this.refersTo(value, _)` - */ - predicate refersTo(Object obj) { this.refersTo(obj, _) } - - /** - * Holds if this expression might "point-to" to `value` which is from `origin` - * in the given `context`. - */ - predicate pointsTo(Context context, Value value, AstNode origin) { - this.getAFlowNode().pointsTo(context, value, origin.getAFlowNode()) - } - - /** - * Holds if this expression might "point-to" to `value` which is from `origin`. - */ - predicate pointsTo(Value value, AstNode origin) { - this.getAFlowNode().pointsTo(value, origin.getAFlowNode()) - } - - /** - * Holds if this expression might "point-to" to `value`. - */ - predicate pointsTo(Value value) { this.pointsTo(value, _) } - - /** Gets a value that this expression might "point-to". */ - Value pointsTo() { this.pointsTo(result) } } /** An assignment expression, such as `x := y` */ @@ -332,8 +269,6 @@ abstract class ImmutableLiteral extends Expr { abstract Object getLiteralObject(); abstract boolean booleanValue(); - - final Value getLiteralValue() { result.(ConstantObjectInternal).getLiteral() = this } } /** A numerical constant expression, such as `7` or `4.2` */ diff --git a/python/ql/lib/semmle/python/Flow.qll b/python/ql/lib/semmle/python/Flow.qll index 621013adcd56..496c1abc52a1 100644 --- a/python/ql/lib/semmle/python/Flow.qll +++ b/python/ql/lib/semmle/python/Flow.qll @@ -1,5 +1,4 @@ import python -private import semmle.python.pointsto.PointsTo private import semmle.python.internal.CachedStages private import codeql.controlflow.BasicBlock as BB @@ -144,56 +143,6 @@ class ControlFlowNode extends @py_flow_node { /** Whether this flow node is the first in its scope */ predicate isEntryNode() { py_scope_flow(this, _, -1) } - /** Gets the value that this ControlFlowNode points-to. */ - predicate pointsTo(Value value) { this.pointsTo(_, value, _) } - - /** Gets the value that this ControlFlowNode points-to. */ - Value pointsTo() { this.pointsTo(_, result, _) } - - /** Gets a value that this ControlFlowNode may points-to. */ - Value inferredValue() { this.pointsTo(_, result, _) } - - /** Gets the value and origin that this ControlFlowNode points-to. */ - predicate pointsTo(Value value, ControlFlowNode origin) { this.pointsTo(_, value, origin) } - - /** Gets the value and origin that this ControlFlowNode points-to, given the context. */ - predicate pointsTo(Context context, Value value, ControlFlowNode origin) { - PointsTo::pointsTo(this, context, value, origin) - } - - /** - * Gets what this flow node might "refer-to". Performs a combination of localized (intra-procedural) points-to - * analysis and global module-level analysis. This points-to analysis favours precision over recall. It is highly - * precise, but may not provide information for a significant number of flow-nodes. - * If the class is unimportant then use `refersTo(value)` or `refersTo(value, origin)` instead. - */ - pragma[nomagic] - predicate refersTo(Object obj, ClassObject cls, ControlFlowNode origin) { - this.refersTo(_, obj, cls, origin) - } - - /** Gets what this expression might "refer-to" in the given `context`. */ - pragma[nomagic] - predicate refersTo(Context context, Object obj, ClassObject cls, ControlFlowNode origin) { - not obj = unknownValue() and - not cls = theUnknownType() and - PointsTo::points_to(this, context, obj, cls, origin) - } - - /** - * Whether this flow node might "refer-to" to `value` which is from `origin` - * Unlike `this.refersTo(value, _, origin)` this predicate includes results - * where the class cannot be inferred. - */ - pragma[nomagic] - predicate refersTo(Object obj, ControlFlowNode origin) { - not obj = unknownValue() and - PointsTo::points_to(this, _, obj, _, origin) - } - - /** Equivalent to `this.refersTo(value, _)` */ - predicate refersTo(Object obj) { this.refersTo(obj, _) } - /** Gets the basic block containing this flow node */ BasicBlock getBasicBlock() { result.contains(this) } @@ -259,23 +208,6 @@ class ControlFlowNode extends @py_flow_node { ) } - /** - * Check whether this control-flow node has complete points-to information. - * This would mean that the analysis managed to infer an over approximation - * of possible values at runtime. - */ - predicate hasCompletePointsToSet() { - // If the tracking failed, then `this` will be its own "origin". In that - // case, we want to exclude nodes for which there is also a different - // origin, as that would indicate that some paths failed and some did not. - this.refersTo(_, _, this) and - not exists(ControlFlowNode other | other != this and this.refersTo(_, _, other)) - or - // If `this` is a use of a variable, then we must have complete points-to - // for that variable. - exists(SsaVariable v | v.getAUse() = this | varHasCompletePointsToSet(v)) - } - /** Whether this strictly dominates other. */ pragma[inline] predicate strictlyDominates(ControlFlowNode other) { @@ -332,28 +264,6 @@ private class AnyNode extends ControlFlowNode { override AstNode getNode() { result = super.getNode() } } -/** - * Check whether a SSA variable has complete points-to information. - * This would mean that the analysis managed to infer an overapproximation - * of possible values at runtime. - */ -private predicate varHasCompletePointsToSet(SsaVariable var) { - // Global variables may be modified non-locally or concurrently. - not var.getVariable() instanceof GlobalVariable and - ( - // If we have complete points-to information on the definition of - // this variable, then the variable has complete information. - var.getDefinition().(DefinitionNode).getValue().hasCompletePointsToSet() - or - // If this variable is a phi output, then we have complete - // points-to information about it if all phi inputs had complete - // information. - forex(SsaVariable phiInput | phiInput = var.getAPhiInput() | - varHasCompletePointsToSet(phiInput) - ) - ) -} - /** A control flow node corresponding to a call expression, such as `func(...)` */ class CallNode extends ControlFlowNode { CallNode() { toAst(this) instanceof Call } diff --git a/python/ql/lib/semmle/python/Metrics.qll b/python/ql/lib/semmle/python/Metrics.qll index e5130ba000f5..dcc5cf959d93 100644 --- a/python/ql/lib/semmle/python/Metrics.qll +++ b/python/ql/lib/semmle/python/Metrics.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo /** The metrics for a function */ class FunctionMetrics extends Function { @@ -59,7 +60,7 @@ class FunctionMetrics extends Function { not non_coupling_method(result) and exists(Call call | call.getScope() = this | exists(FunctionObject callee | callee.getFunction() = result | - call.getAFlowNode().getFunction().refersTo(callee) + call.getAFlowNode().getFunction().(ControlFlowNodeWithPointsTo).refersTo(callee) ) or exists(Attribute a | call.getFunc() = a | @@ -123,7 +124,7 @@ class ClassMetrics extends Class { ) or exists(Function f, Call c, ClassObject cls | c.getScope() = f and f.getScope() = this | - c.getFunc().refersTo(cls) and + c.getFunc().(ExprWithPointsTo).refersTo(cls) and cls.getPyClass() = other ) ) @@ -292,7 +293,7 @@ class ModuleMetrics extends Module { ) or exists(Function f, Call c, ClassObject cls | c.getScope() = f and f.getScope() = this | - c.getFunc().refersTo(cls) and + c.getFunc().(ExprWithPointsTo).refersTo(cls) and cls.getPyClass().getEnclosingModule() = other ) ) diff --git a/python/ql/lib/semmle/python/Module.qll b/python/ql/lib/semmle/python/Module.qll index 307433fe95bc..666217874b79 100644 --- a/python/ql/lib/semmle/python/Module.qll +++ b/python/ql/lib/semmle/python/Module.qll @@ -1,5 +1,4 @@ import python -private import semmle.python.objects.Modules private import semmle.python.internal.CachedStages /** @@ -66,15 +65,6 @@ class Module extends Module_, Scope, AstNode { /** Whether this module is a package initializer */ predicate isPackageInit() { this.getName().matches("%\\_\\_init\\_\\_") and not this.isPackage() } - /** Gets a name exported by this module, that is the names that will be added to a namespace by 'from this-module import *' */ - string getAnExport() { - py_exports(this, result) - or - exists(ModuleObjectInternal mod | mod.getSource() = this.getEntryNode() | - mod.(ModuleValue).exports(result) - ) - } - /** Gets the source file for this module */ File getFile() { py_module_path(this, result) } diff --git a/python/ql/lib/semmle/python/Overlay.qll b/python/ql/lib/semmle/python/Overlay.qll index fa7828014570..a8c473d1e4a1 100644 --- a/python/ql/lib/semmle/python/Overlay.qll +++ b/python/ql/lib/semmle/python/Overlay.qll @@ -2,6 +2,8 @@ * Defines entity discard predicates for Python overlay analysis. */ +private import internal.OverlayXml + /*- Predicates -*/ /** * Holds always for the overlay variant and never for the base variant. @@ -303,33 +305,6 @@ final private class DiscardableComment extends Discardable instanceof @py_commen } } -/*- XML -*/ -overlay[local] -final private class DiscardableXmlLocatable extends Discardable instanceof @xmllocatable { - override string getPath() { - exists(@location loc | xmllocations(this, loc) | result = getPathForLocation(loc)) - } -} - -overlay[local] -private predicate overlayXmlExtracted(string path) { - exists(DiscardableXmlLocatable d | not files(d, _) and not xmlNs(d, _, _, _) | - d.existsInOverlay() and - path = d.getPath() - ) -} - -overlay[discard_entity] -private predicate discardXmlLocatable(@xmllocatable el) { - exists(DiscardableXmlLocatable d | d = el | - // The XML extractor is currently not incremental and may extract more - // XML files than those included in `overlayChangedFiles`, so this discard predicate - // handles those files alongside the normal `discardStarEntity` logic. - overlayXmlExtracted(d.getPath()) and - d.existsInBase() - ) -} - /*- YAML -*/ overlay[local] final private class DiscardableYamlLocatable extends Discardable instanceof @yaml_locatable { diff --git a/python/ql/lib/semmle/python/SpecialMethods.qll b/python/ql/lib/semmle/python/SpecialMethods.qll index a5832ae45ae1..ea9e753d0f89 100644 --- a/python/ql/lib/semmle/python/SpecialMethods.qll +++ b/python/ql/lib/semmle/python/SpecialMethods.qll @@ -9,6 +9,7 @@ */ private import python +private import LegacyPointsTo /** A control flow node which might correspond to a special method call. */ class PotentialSpecialMethodCallNode extends ControlFlowNode instanceof SpecialMethod::Potential { } @@ -106,7 +107,11 @@ class SpecialMethodCallNode extends PotentialSpecialMethodCallNode { SpecialMethodCallNode() { exists(SpecialMethod::Potential pot | this = pot and - pot.getSelf().pointsTo().getClass().lookup(pot.getSpecialMethodName()) = resolvedSpecialMethod + pot.getSelf() + .(ControlFlowNodeWithPointsTo) + .pointsTo() + .getClass() + .lookup(pot.getSpecialMethodName()) = resolvedSpecialMethod ) } diff --git a/python/ql/lib/semmle/python/dataflow/old/Implementation.qll b/python/ql/lib/semmle/python/dataflow/old/Implementation.qll index 19197f4bd306..83476db803c6 100644 --- a/python/ql/lib/semmle/python/dataflow/old/Implementation.qll +++ b/python/ql/lib/semmle/python/dataflow/old/Implementation.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo import semmle.python.dataflow.TaintTracking private import semmle.python.objects.ObjectInternal private import semmle.python.pointsto.Filters as Filters @@ -374,7 +375,7 @@ class TaintTrackingImplementation extends string instanceof TaintTracking::Confi exists(ModuleValue m, string name | src = TTaintTrackingNode_(_, context, path, kind, this) and this.moduleAttributeTainted(m, name, src) and - node.asCfgNode().(ImportMemberNode).getModule(name).pointsTo(m) + node.asCfgNode().(ImportMemberNode).getModule(name).(ControlFlowNodeWithPointsTo).pointsTo(m) ) } @@ -408,7 +409,9 @@ class TaintTrackingImplementation extends string instanceof TaintTracking::Confi src = TTaintTrackingNode_(srcnode, context, srcpath, srckind, this) and exists(CallNode call, ControlFlowNode arg | call = node.asCfgNode() and - call.getFunction().pointsTo(ObjectInternal::builtin("getattr")) and + call.getFunction() + .(ControlFlowNodeWithPointsTo) + .pointsTo(ObjectInternal::builtin("getattr")) and arg = call.getArg(0) and attrname = call.getArg(1).getNode().(StringLiteral).getText() and arg = srcnode.asCfgNode() @@ -515,7 +518,7 @@ class TaintTrackingImplementation extends string instanceof TaintTracking::Confi TaintTrackingContext caller, TaintTrackingContext callee ) { exists(ClassValue cls | - call.getFunction().pointsTo(cls) and + call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(cls) and cls.lookup("__init__") = init | exists(int arg, TaintKind callerKind, AttributePath callerPath, DataFlow::Node argument | @@ -878,7 +881,7 @@ private class EssaTaintTracking extends string instanceof TaintTracking::Configu const.getNode() instanceof ImmutableLiteral ) or - exists(ControlFlowNode c, ClassValue cls | + exists(ControlFlowNodeWithPointsTo c, ClassValue cls | Filters::isinstance(test, c, use) and c.pointsTo(cls) | @@ -978,7 +981,7 @@ module Implementation { tonode.getArg(0) = fromnode ) or - tonode.getFunction().pointsTo(ObjectInternal::builtin("reversed")) and + tonode.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(ObjectInternal::builtin("reversed")) and tonode.getArg(0) = fromnode } } diff --git a/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll b/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll index 0ce4bc27790e..15459a310438 100644 --- a/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll +++ b/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll @@ -87,6 +87,7 @@ */ import python +private import LegacyPointsTo private import semmle.python.pointsto.Filters as Filters private import semmle.python.objects.ObjectInternal private import semmle.python.dataflow.Implementation @@ -267,7 +268,11 @@ module DictKind { Implementation::copyCall(fromnode, tonode) and edgeLabel = "dict copy" or - tonode.(CallNode).getFunction().pointsTo(ObjectInternal::builtin("dict")) and + tonode + .(CallNode) + .getFunction() + .(ControlFlowNodeWithPointsTo) + .pointsTo(ObjectInternal::builtin("dict")) and tonode.(CallNode).getArg(0) = fromnode and edgeLabel = "dict() call" } @@ -615,7 +620,7 @@ module DataFlow { TCfgNode(ControlFlowNode node) abstract class Node extends TDataFlowNode { - abstract ControlFlowNode asCfgNode(); + abstract ControlFlowNodeWithPointsTo asCfgNode(); abstract EssaVariable asVariable(); @@ -632,7 +637,7 @@ module DataFlow { } class CfgNode extends Node, TCfgNode { - override ControlFlowNode asCfgNode() { this = TCfgNode(result) } + override ControlFlowNodeWithPointsTo asCfgNode() { this = TCfgNode(result) } override EssaVariable asVariable() { none() } @@ -647,7 +652,7 @@ module DataFlow { } class EssaNode extends Node, TEssaNode { - override ControlFlowNode asCfgNode() { none() } + override ControlFlowNodeWithPointsTo asCfgNode() { none() } override EssaVariable asVariable() { this = TEssaNode(result) } @@ -668,7 +673,11 @@ pragma[noinline] private predicate dict_construct(ControlFlowNode itemnode, ControlFlowNode dictnode) { dictnode.(DictNode).getAValue() = itemnode or - dictnode.(CallNode).getFunction().pointsTo(ObjectInternal::builtin("dict")) and + dictnode + .(CallNode) + .getFunction() + .(ControlFlowNodeWithPointsTo) + .pointsTo(ObjectInternal::builtin("dict")) and dictnode.(CallNode).getArgByName(_) = itemnode } @@ -688,7 +697,7 @@ private predicate sequence_construct(ControlFlowNode itemnode, ControlFlowNode s pragma[noinline] private predicate sequence_call(ControlFlowNode fromnode, CallNode tonode) { tonode.getArg(0) = fromnode and - exists(ControlFlowNode cls | cls = tonode.getFunction() | + exists(ControlFlowNodeWithPointsTo cls | cls = tonode.getFunction() | cls.pointsTo(ObjectInternal::builtin("list")) or cls.pointsTo(ObjectInternal::builtin("tuple")) diff --git a/python/ql/lib/semmle/python/dependencies/Dependencies.qll b/python/ql/lib/semmle/python/dependencies/Dependencies.qll index 6f70c7e4ec06..a224ad1b9601 100644 --- a/python/ql/lib/semmle/python/dependencies/Dependencies.qll +++ b/python/ql/lib/semmle/python/dependencies/Dependencies.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo import semmle.python.dependencies.DependencyKind private predicate importDependency(Object target, AstNode source) { @@ -59,7 +60,7 @@ class PythonUse extends DependencyKind { interesting(target) and this = this and source != target.(ControlFlowNode).getNode() and - exists(ControlFlowNode use, Object obj | + exists(ControlFlowNodeWithPointsTo use, Object obj | use.getNode() = source and use.refersTo(obj) and use.isLoad() @@ -114,12 +115,14 @@ private predicate attribute_access_dependency(Object target, AstNode source) { private predicate use_of_attribute(Attribute attr, Scope s, string name) { exists(AttrNode cfg | cfg.isLoad() and cfg.getNode() = attr | - exists(Object obj | cfg.getObject(name).refersTo(obj) | + exists(Object obj | cfg.getObject(name).(ControlFlowNodeWithPointsTo).refersTo(obj) | s = obj.(PythonModuleObject).getModule() or s = obj.(ClassObject).getPyClass() ) or - exists(ClassObject cls | cfg.getObject(name).refersTo(_, cls, _) | s = cls.getPyClass()) + exists(ClassObject cls | cfg.getObject(name).(ControlFlowNodeWithPointsTo).refersTo(_, cls, _) | + s = cls.getPyClass() + ) ) or exists(SelfAttributeRead sar | sar = attr | diff --git a/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll b/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll index c04a85487acf..80ec45a3cf17 100644 --- a/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll +++ b/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll @@ -62,6 +62,8 @@ * should be prefixed with a tilde character (`~`). For example, `~Bar` can be used to indicate that * the type is not intended to match a static type. */ +overlay[local?] +module; private import codeql.util.Unit private import ApiGraphModelsSpecific as Specific diff --git a/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModelsExtensions.qll b/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModelsExtensions.qll index 4969da43be34..3f38c498f324 100644 --- a/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModelsExtensions.qll +++ b/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModelsExtensions.qll @@ -1,6 +1,8 @@ /** * Defines extensible predicates for contributing library models from data extensions. */ +overlay[local] +module; /** * Holds if the value at `(type, path)` should be seen as a flow diff --git a/python/ql/lib/semmle/python/internal/OverlayXml.qll b/python/ql/lib/semmle/python/internal/OverlayXml.qll new file mode 100644 index 000000000000..95d49f2d6110 --- /dev/null +++ b/python/ql/lib/semmle/python/internal/OverlayXml.qll @@ -0,0 +1,46 @@ +overlay[local] +module; + +/** + * A local predicate that always holds for the overlay variant and never holds for the base variant. + * This is used to define local predicates that behave differently for the base and overlay variant. + */ +private predicate isOverlay() { databaseMetadata("isOverlay", "true") } + +private string getXmlFile(@xmllocatable locatable) { + exists(@location_default location, @file file | xmllocations(locatable, location) | + locations_default(location, file, _, _, _, _) and + files(file, result) + ) +} + +private string getXmlFileInBase(@xmllocatable locatable) { + not isOverlay() and + result = getXmlFile(locatable) +} + +/** + * Holds if the given `file` was extracted as part of the overlay and was extracted by the HTML/XML + * extractor. + */ +private predicate overlayXmlExtracted(string file) { + isOverlay() and + exists(@xmllocatable locatable | + not files(locatable, _) and not xmlNs(locatable, _, _, _) and file = getXmlFile(locatable) + ) +} + +/** + * Holds if the given XML `locatable` should be discarded, because it is part of the overlay base + * and is in a file that was also extracted as part of the overlay database. + */ +overlay[discard_entity] +private predicate discardXmlLocatable(@xmllocatable locatable) { + exists(string file | file = getXmlFileInBase(locatable) | + overlayChangedFiles(file) + or + // The HTML/XML extractor is currently not incremental and may extract more files than those + // included in overlayChangedFiles. + overlayXmlExtracted(file) + ) +} diff --git a/python/ql/lib/semmle/python/objects/ObjectAPI.qll b/python/ql/lib/semmle/python/objects/ObjectAPI.qll index 4a36ec6d847f..45247c5d9d44 100644 --- a/python/ql/lib/semmle/python/objects/ObjectAPI.qll +++ b/python/ql/lib/semmle/python/objects/ObjectAPI.qll @@ -4,6 +4,7 @@ */ import python +private import LegacyPointsTo private import TObject private import semmle.python.objects.ObjectInternal private import semmle.python.pointsto.PointsTo @@ -696,7 +697,9 @@ abstract class FunctionValue extends CallableValue { exists(ClassValue cls, string name | cls.declaredAttribute(name) = this and name != "__new__" and - exists(Expr expr, AstNode origin | expr.pointsTo(this, origin) | not origin instanceof Lambda) + exists(ExprWithPointsTo expr, AstNode origin | expr.pointsTo(this, origin) | + not origin instanceof Lambda + ) ) } @@ -704,12 +707,14 @@ abstract class FunctionValue extends CallableValue { abstract ClassValue getARaisedType(); /** Gets a call-site from where this function is called as a function */ - CallNode getAFunctionCall() { result.getFunction().pointsTo() = this } + CallNode getAFunctionCall() { + result.getFunction().(ControlFlowNodeWithPointsTo).pointsTo() = this + } /** Gets a call-site from where this function is called as a method */ CallNode getAMethodCall() { exists(BoundMethodObjectInternal bm | - result.getFunction().pointsTo() = bm and + result.getFunction().(ControlFlowNodeWithPointsTo).pointsTo() = bm and bm.getFunction() = this ) } @@ -753,7 +758,7 @@ class PythonFunctionValue extends FunctionValue { * explicit return nodes that we can query and get the class of. */ - result = this.getAReturnedNode().pointsTo().getClass() + result = this.getAReturnedNode().(ControlFlowNodeWithPointsTo).pointsTo().getClass() } } diff --git a/python/ql/lib/semmle/python/types/ClassObject.qll b/python/ql/lib/semmle/python/types/ClassObject.qll index e3ad51ea1626..6954a83463c6 100644 --- a/python/ql/lib/semmle/python/types/ClassObject.qll +++ b/python/ql/lib/semmle/python/types/ClassObject.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo private import semmle.python.objects.Classes private import semmle.python.objects.Instances private import semmle.python.pointsto.PointsTo @@ -193,7 +194,9 @@ class ClassObject extends Object { * It is guaranteed that getProbableSingletonInstance() returns at most one Object for each ClassObject. */ Object getProbableSingletonInstance() { - exists(ControlFlowNode use, Expr origin | use.refersTo(result, this, origin.getAFlowNode()) | + exists(ControlFlowNodeWithPointsTo use, Expr origin | + use.refersTo(result, this, origin.getAFlowNode()) + | this.hasStaticallyUniqueInstance() and /* Ensure that original expression will be executed only one. */ origin.getScope() instanceof ImportTimeScope and @@ -351,7 +354,7 @@ class ClassObject extends Object { * Gets a call to this class. Note that the call may not create a new instance of * this class, as that depends on the `__new__` method of this class. */ - CallNode getACall() { result.getFunction().refersTo(this) } + CallNode getACall() { result.getFunction().(ControlFlowNodeWithPointsTo).refersTo(this) } override predicate notClass() { none() } } diff --git a/python/ql/lib/semmle/python/types/Exceptions.qll b/python/ql/lib/semmle/python/types/Exceptions.qll index 93bace1cf516..5e982aa01346 100644 --- a/python/ql/lib/semmle/python/types/Exceptions.qll +++ b/python/ql/lib/semmle/python/types/Exceptions.qll @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo /** The subset of ControlFlowNodes which might raise an exception */ class RaisingNode extends ControlFlowNode { @@ -30,7 +31,9 @@ class RaisingNode extends ControlFlowNode { ) } - private predicate quits() { this.(CallNode).getFunction().refersTo(Object::quitter(_)) } + private predicate quits() { + this.(CallNode).getFunction().(ControlFlowNodeWithPointsTo).refersTo(Object::quitter(_)) + } /** * Gets the type of an exception that may be raised @@ -68,7 +71,7 @@ class RaisingNode extends ControlFlowNode { private ClassObject localRaisedType_objectapi() { result.isSubclassOf(theBaseExceptionType()) and ( - exists(ControlFlowNode ex | + exists(ControlFlowNodeWithPointsTo ex | ex = this.getExceptionNode() and (ex.refersTo(result) or ex.refersTo(_, result, _)) ) @@ -95,7 +98,7 @@ class RaisingNode extends ControlFlowNode { private ClassValue localRaisedType() { result.getASuperType() = ClassValue::baseException() and ( - exists(ControlFlowNode ex | + exists(ControlFlowNodeWithPointsTo ex | ex = this.getExceptionNode() and (ex.pointsTo(result) or ex.pointsTo().getClass() = result) ) @@ -153,7 +156,9 @@ class RaisingNode extends ControlFlowNode { /* Call to an unknown object */ this.getNode() instanceof Call and not exists(FunctionObject func | this = func.getACall()) and - not exists(ClassObject known | this.(CallNode).getFunction().refersTo(known)) + not exists(ClassObject known | + this.(CallNode).getFunction().(ControlFlowNodeWithPointsTo).refersTo(known) + ) or this.getNode() instanceof Exec or @@ -371,7 +376,7 @@ class ExceptFlowNode extends ControlFlowNode { * Gets the type handled by this exception handler. * `ExceptionType` in `except ExceptionType as e:` */ - ControlFlowNode getType() { + ControlFlowNodeWithPointsTo getType() { exists(ExceptStmt ex | this.getBasicBlock().dominates(result.getBasicBlock()) and ex = this.getNode() and @@ -470,7 +475,7 @@ class ExceptGroupFlowNode extends ControlFlowNode { } } -private ControlFlowNode element_from_tuple_objectapi(Object tuple) { +private ControlFlowNodeWithPointsTo element_from_tuple_objectapi(Object tuple) { exists(Tuple t | t = tuple.getOrigin() and result = t.getAnElt().getAFlowNode()) } diff --git a/python/ql/lib/semmle/python/types/FunctionObject.qll b/python/ql/lib/semmle/python/types/FunctionObject.qll index f64c02b9c6bf..72ddb9411fb1 100644 --- a/python/ql/lib/semmle/python/types/FunctionObject.qll +++ b/python/ql/lib/semmle/python/types/FunctionObject.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo import semmle.python.types.Exceptions private import semmle.python.pointsto.PointsTo private import semmle.python.objects.Callables @@ -32,27 +33,31 @@ abstract class FunctionObject extends Object { abstract string descriptiveString(); /** Gets a call-site from where this function is called as a function */ - CallNode getAFunctionCall() { result.getFunction().inferredValue() = this.theCallable() } + CallNode getAFunctionCall() { + result.getFunction().(ControlFlowNodeWithPointsTo).inferredValue() = this.theCallable() + } /** Gets a call-site from where this function is called as a method */ CallNode getAMethodCall() { exists(BoundMethodObjectInternal bm | - result.getFunction().inferredValue() = bm and + result.getFunction().(ControlFlowNodeWithPointsTo).inferredValue() = bm and bm.getFunction() = this.theCallable() ) } /** Gets a call-site from where this function is called */ - ControlFlowNode getACall() { result = this.theCallable().getACall() } + ControlFlowNodeWithPointsTo getACall() { result = this.theCallable().getACall() } /** Gets a call-site from where this function is called, given the `context` */ - ControlFlowNode getACall(Context context) { result = this.theCallable().getACall(context) } + ControlFlowNodeWithPointsTo getACall(Context context) { + result = this.theCallable().getACall(context) + } /** * Gets the `ControlFlowNode` that will be passed as the nth argument to `this` when called at `call`. * This predicate will correctly handle `x.y()`, treating `x` as the zeroth argument. */ - ControlFlowNode getArgumentForCall(CallNode call, int n) { + ControlFlowNodeWithPointsTo getArgumentForCall(CallNode call, int n) { result = this.theCallable().getArgumentForCall(call, n) } @@ -60,7 +65,7 @@ abstract class FunctionObject extends Object { * Gets the `ControlFlowNode` that will be passed as the named argument to `this` when called at `call`. * This predicate will correctly handle `x.y()`, treating `x` as the self argument. */ - ControlFlowNode getNamedArgumentForCall(CallNode call, string name) { + ControlFlowNodeWithPointsTo getNamedArgumentForCall(CallNode call, string name) { result = this.theCallable().getNamedArgumentForCall(call, name) } @@ -134,7 +139,9 @@ class PyFunctionObject extends FunctionObject { override predicate raisesUnknownType() { scope_raises_unknown(this.getFunction()) } /** Gets a control flow node corresponding to the value of a return statement */ - ControlFlowNode getAReturnedNode() { result = this.getFunction().getAReturnValueFlowNode() } + ControlFlowNodeWithPointsTo getAReturnedNode() { + result = this.getFunction().getAReturnValueFlowNode() + } override string descriptiveString() { if this.getFunction().isMethod() @@ -216,7 +223,7 @@ abstract class BuiltinCallable extends FunctionObject { abstract override string getQualifiedName(); - override ControlFlowNode getArgumentForCall(CallNode call, int n) { + override ControlFlowNodeWithPointsTo getArgumentForCall(CallNode call, int n) { call = this.getACall() and result = call.getArg(n) } } diff --git a/python/ql/lib/semmle/python/types/Object.qll b/python/ql/lib/semmle/python/types/Object.qll index 6c76067dc68e..1e0868648be0 100644 --- a/python/ql/lib/semmle/python/types/Object.qll +++ b/python/ql/lib/semmle/python/types/Object.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo private import semmle.python.objects.ObjectInternal private import semmle.python.types.Builtins private import semmle.python.internal.CachedStages @@ -41,7 +42,7 @@ class Object extends @py_object { * for a control flow node 'f' */ ClassObject getAnInferredType() { - exists(ControlFlowNode somewhere | somewhere.refersTo(this, result, _)) + exists(ControlFlowNodeWithPointsTo somewhere | somewhere.refersTo(this, result, _)) or this.asBuiltin().getClass() = result.asBuiltin() and not this = unknownValue() or @@ -327,7 +328,7 @@ abstract class SequenceObject extends Object { Object getInferredElement(int n) { result = this.getBuiltinElement(n) or - this.getSourceElement(n).refersTo(result) + this.getSourceElement(n).(ControlFlowNodeWithPointsTo).refersTo(result) } } @@ -438,7 +439,8 @@ class SuperBoundMethod extends Object { string name; SuperBoundMethod() { - this.(AttrNode).getObject(name).inferredValue().getClass() = Value::named("super") + this.(AttrNode).getObject(name).(ControlFlowNodeWithPointsTo).inferredValue().getClass() = + Value::named("super") } override string toString() { result = "super()." + name } @@ -446,7 +448,7 @@ class SuperBoundMethod extends Object { Object getFunction(string fname) { fname = name and exists(SuperInstance sup, BoundMethodObjectInternal m | - sup = this.(AttrNode).getObject(name).inferredValue() and + sup = this.(AttrNode).getObject(name).(ControlFlowNodeWithPointsTo).inferredValue() and sup.attribute(name, m, _) and result = m.getFunction().getSource() ) diff --git a/python/ql/lib/semmle/python/types/Properties.qll b/python/ql/lib/semmle/python/types/Properties.qll index a0efe6ca5eb9..899f0a3407ec 100644 --- a/python/ql/lib/semmle/python/types/Properties.qll +++ b/python/ql/lib/semmle/python/types/Properties.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo /** * A Python property: @@ -77,32 +78,32 @@ class BuiltinPropertyObject extends PropertyObject { } private predicate property_getter(CallNode decorated, FunctionObject getter) { - decorated.getFunction().refersTo(thePropertyType()) and - decorated.getArg(0).refersTo(getter) + decorated.getFunction().(ControlFlowNodeWithPointsTo).refersTo(thePropertyType()) and + decorated.getArg(0).(ControlFlowNodeWithPointsTo).refersTo(getter) } private predicate property_setter(CallNode decorated, FunctionObject setter) { property_getter(decorated, _) and exists(CallNode setter_call, AttrNode prop_setter | - prop_setter.getObject("setter").refersTo(decorated) + prop_setter.getObject("setter").(ControlFlowNodeWithPointsTo).refersTo(decorated) | - setter_call.getArg(0).refersTo(setter) and + setter_call.getArg(0).(ControlFlowNodeWithPointsTo).refersTo(setter) and setter_call.getFunction() = prop_setter ) or - decorated.getFunction().refersTo(thePropertyType()) and - decorated.getArg(1).refersTo(setter) + decorated.getFunction().(ControlFlowNodeWithPointsTo).refersTo(thePropertyType()) and + decorated.getArg(1).(ControlFlowNodeWithPointsTo).refersTo(setter) } private predicate property_deleter(CallNode decorated, FunctionObject deleter) { property_getter(decorated, _) and exists(CallNode deleter_call, AttrNode prop_deleter | - prop_deleter.getObject("deleter").refersTo(decorated) + prop_deleter.getObject("deleter").(ControlFlowNodeWithPointsTo).refersTo(decorated) | - deleter_call.getArg(0).refersTo(deleter) and + deleter_call.getArg(0).(ControlFlowNodeWithPointsTo).refersTo(deleter) and deleter_call.getFunction() = prop_deleter ) or - decorated.getFunction().refersTo(thePropertyType()) and - decorated.getArg(2).refersTo(deleter) + decorated.getFunction().(ControlFlowNodeWithPointsTo).refersTo(thePropertyType()) and + decorated.getArg(2).(ControlFlowNodeWithPointsTo).refersTo(deleter) } diff --git a/python/ql/lib/semmle/python/values/StringAttributes.qll b/python/ql/lib/semmle/python/values/StringAttributes.qll index 792ee9232275..e94540dbf204 100644 --- a/python/ql/lib/semmle/python/values/StringAttributes.qll +++ b/python/ql/lib/semmle/python/values/StringAttributes.qll @@ -1,6 +1,10 @@ import python +private import LegacyPointsTo +private import semmle.python.types.Object +private import semmle.python.types.ClassObject +private import semmle.python.types.FunctionObject -predicate string_attribute_all(ControlFlowNode n, string attr) { +predicate string_attribute_all(ControlFlowNodeWithPointsTo n, string attr) { (n.getNode() instanceof Unicode or n.getNode() instanceof Bytes) and attr = "const" or @@ -19,18 +23,27 @@ predicate tracked_object(ControlFlowNode obj, string attr) { tracked_object_any(obj, attr) } -predicate open_file(Object obj) { obj.(CallNode).getFunction().refersTo(Object::builtin("open")) } +predicate open_file(Object obj) { + obj.(CallNode).getFunction().(ControlFlowNodeWithPointsTo).refersTo(Object::builtin("open")) +} -predicate string_attribute_any(ControlFlowNode n, string attr) { +predicate string_attribute_any(ControlFlowNodeWithPointsTo n, string attr) { attr = "user-input" and - exists(Object input | n.(CallNode).getFunction().refersTo(input) | + exists(Object input | n.(CallNode).getFunction().(ControlFlowNodeWithPointsTo).refersTo(input) | if major_version() = 2 then input = Object::builtin("raw_input") else input = Object::builtin("input") ) or attr = "file-input" and - exists(Object fd | n.(CallNode).getFunction().(AttrNode).getObject("read").refersTo(fd) | + exists(Object fd | + n.(CallNode) + .getFunction() + .(AttrNode) + .getObject("read") + .(ControlFlowNodeWithPointsTo) + .refersTo(fd) + | open_file(fd) ) or @@ -65,7 +78,7 @@ ControlFlowNode sequence_for_iterator(ControlFlowNode f) { } pragma[noinline] -private predicate tracking_step(ControlFlowNode src, ControlFlowNode dest) { +private predicate tracking_step(ControlFlowNode src, ControlFlowNodeWithPointsTo dest) { src = dest.(BinaryExprNode).getAnOperand() or src = dest.(UnaryExprNode).getOperand() diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index 65fd05e047b9..43e0f12a212f 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,21 @@ +## 1.7.3 + +No user-facing changes. + +## 1.7.2 + +No user-facing changes. + +## 1.7.1 + +No user-facing changes. + +## 1.7.0 + +### Query Metadata Changes + +* Reduced the `security-severity` score of the `py/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. + ## 1.6.8 ### Minor Analysis Improvements diff --git a/python/ql/src/Classes/MutatingDescriptor.ql b/python/ql/src/Classes/MutatingDescriptor.ql index aad468f8e3c3..afcbcc35bf21 100644 --- a/python/ql/src/Classes/MutatingDescriptor.ql +++ b/python/ql/src/Classes/MutatingDescriptor.ql @@ -1,5 +1,5 @@ /** - * @name Mutation of descriptor in `__get__` or `__set__` method. + * @name Mutation of descriptor in `__get__` or `__set__` method * @description Descriptor objects can be shared across many instances. Mutating them can cause strange side effects or race conditions. * @kind problem * @tags quality diff --git a/python/ql/src/Exceptions/NotImplemented.qll b/python/ql/src/Exceptions/NotImplemented.qll index 2186a7b5f30b..498165d29826 100644 --- a/python/ql/src/Exceptions/NotImplemented.qll +++ b/python/ql/src/Exceptions/NotImplemented.qll @@ -1,7 +1,8 @@ import python +private import LegacyPointsTo /** Holds if `notimpl` refers to `NotImplemented` or `NotImplemented()` in the `raise` statement */ -predicate use_of_not_implemented_in_raise(Raise raise, Expr notimpl) { +predicate use_of_not_implemented_in_raise(Raise raise, ExprWithPointsTo notimpl) { notimpl.pointsTo(Value::named("NotImplemented")) and ( notimpl = raise.getException() or diff --git a/python/ql/src/Exceptions/Raising.qll b/python/ql/src/Exceptions/Raising.qll index c81494811875..c509c41819d6 100644 --- a/python/ql/src/Exceptions/Raising.qll +++ b/python/ql/src/Exceptions/Raising.qll @@ -1,8 +1,9 @@ import python +private import LegacyPointsTo /** Whether the raise statement 'r' raises 'type' from origin 'orig' */ predicate type_or_typeof(Raise r, ClassValue type, AstNode orig) { - exists(Expr exception | exception = r.getRaised() | + exists(ExprWithPointsTo exception | exception = r.getRaised() | exception.pointsTo(type, orig) or not exists(ClassValue exc_type | exception.pointsTo(exc_type)) and diff --git a/python/ql/src/Expressions/CallArgs.qll b/python/ql/src/Expressions/CallArgs.qll index d2f94ca7cf08..709915afbc61 100644 --- a/python/ql/src/Expressions/CallArgs.qll +++ b/python/ql/src/Expressions/CallArgs.qll @@ -1,12 +1,13 @@ /** INTERNAL - Methods used by queries that test whether functions are invoked correctly. */ import python +private import LegacyPointsTo import Testing.Mox private int varargs_length_objectapi(Call call) { not exists(call.getStarargs()) and result = 0 or - exists(TupleObject t | call.getStarargs().refersTo(t) | result = t.getLength()) + exists(TupleObject t | call.getStarargs().(ExprWithPointsTo).refersTo(t) | result = t.getLength()) or result = count(call.getStarargs().(List).getAnElt()) } @@ -14,7 +15,7 @@ private int varargs_length_objectapi(Call call) { private int varargs_length(Call call) { not exists(call.getStarargs()) and result = 0 or - exists(TupleValue t | call.getStarargs().pointsTo(t) | result = t.length()) + exists(TupleValue t | call.getStarargs().(ExprWithPointsTo).pointsTo(t) | result = t.length()) or result = count(call.getStarargs().(List).getAnElt()) } diff --git a/python/ql/src/Expressions/ContainsNonContainer.ql b/python/ql/src/Expressions/ContainsNonContainer.ql index cf6af5ce7b18..fd2123dd436e 100644 --- a/python/ql/src/Expressions/ContainsNonContainer.ql +++ b/python/ql/src/Expressions/ContainsNonContainer.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import semmle.python.pointsto.PointsTo predicate rhs_in_expr(ControlFlowNode rhs, Compare cmp) { @@ -20,7 +21,8 @@ predicate rhs_in_expr(ControlFlowNode rhs, Compare cmp) { ) } -from ControlFlowNode non_seq, Compare cmp, Value v, ClassValue cls, ControlFlowNode origin +from + ControlFlowNodeWithPointsTo non_seq, Compare cmp, Value v, ClassValue cls, ControlFlowNode origin where rhs_in_expr(non_seq, cmp) and non_seq.pointsTo(_, v, origin) and diff --git a/python/ql/src/Expressions/ExpectedMappingForFormatString.ql b/python/ql/src/Expressions/ExpectedMappingForFormatString.ql index 4342062270b7..c11ab58688ea 100644 --- a/python/ql/src/Expressions/ExpectedMappingForFormatString.ql +++ b/python/ql/src/Expressions/ExpectedMappingForFormatString.ql @@ -12,9 +12,10 @@ */ import python +private import LegacyPointsTo import semmle.python.strings -from Expr e, ClassValue t +from ExprWithPointsTo e, ClassValue t where exists(BinaryExpr b | b.getOp() instanceof Mod and diff --git a/python/ql/src/Expressions/Formatting/AdvancedFormatting.qll b/python/ql/src/Expressions/Formatting/AdvancedFormatting.qll index 7da80ffa0278..d98286d85faf 100644 --- a/python/ql/src/Expressions/Formatting/AdvancedFormatting.qll +++ b/python/ql/src/Expressions/Formatting/AdvancedFormatting.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo /** A string constant that looks like it may be used in string formatting operations. */ class PossibleAdvancedFormatString extends StringLiteral { @@ -98,11 +99,15 @@ private predicate brace_pair(PossibleAdvancedFormatString fmt, int start, int en private predicate advanced_format_call(Call format_expr, PossibleAdvancedFormatString fmt, int args) { exists(CallNode call | call = format_expr.getAFlowNode() | - call.getFunction().pointsTo(Value::named("format")) and - call.getArg(0).pointsTo(_, fmt.getAFlowNode()) and + call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(Value::named("format")) and + call.getArg(0).(ControlFlowNodeWithPointsTo).pointsTo(_, fmt.getAFlowNode()) and args = count(format_expr.getAnArg()) - 1 or - call.getFunction().(AttrNode).getObject("format").pointsTo(_, fmt.getAFlowNode()) and + call.getFunction() + .(AttrNode) + .getObject("format") + .(ControlFlowNodeWithPointsTo) + .pointsTo(_, fmt.getAFlowNode()) and args = count(format_expr.getAnArg()) ) } diff --git a/python/ql/src/Expressions/HashedButNoHash.ql b/python/ql/src/Expressions/HashedButNoHash.ql index eb86f3b55332..705806bf3605 100644 --- a/python/ql/src/Expressions/HashedButNoHash.ql +++ b/python/ql/src/Expressions/HashedButNoHash.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo /* * This assumes that any indexing operation where the value is not a sequence or numpy array involves hashing. @@ -41,13 +42,13 @@ predicate unhashable_subscript(ControlFlowNode f, ClassValue c, ControlFlowNode is_unhashable(f, c, origin) and exists(SubscriptNode sub | sub.getIndex() = f | exists(Value custom_getitem | - sub.getObject().pointsTo(custom_getitem) and + sub.getObject().(ControlFlowNodeWithPointsTo).pointsTo(custom_getitem) and not has_custom_getitem(custom_getitem) ) ) } -predicate is_unhashable(ControlFlowNode f, ClassValue cls, ControlFlowNode origin) { +predicate is_unhashable(ControlFlowNodeWithPointsTo f, ClassValue cls, ControlFlowNode origin) { exists(Value v | f.pointsTo(v, origin) and v.getClass() = cls | not cls.hasAttribute("__hash__") and not cls.failedInference(_) and cls.isNewStyle() or @@ -71,7 +72,7 @@ predicate is_unhashable(ControlFlowNode f, ClassValue cls, ControlFlowNode origi predicate typeerror_is_caught(ControlFlowNode f) { exists(Try try | try.getBody().contains(f.getNode()) and - try.getAHandler().getType().pointsTo(ClassValue::typeError()) + try.getAHandler().getType().(ExprWithPointsTo).pointsTo(ClassValue::typeError()) ) } diff --git a/python/ql/src/Expressions/IsComparisons.qll b/python/ql/src/Expressions/IsComparisons.qll index 7825d01999b9..1ed4534bd234 100644 --- a/python/ql/src/Expressions/IsComparisons.qll +++ b/python/ql/src/Expressions/IsComparisons.qll @@ -1,6 +1,8 @@ /** INTERNAL - Helper predicates for queries that inspect the comparison of objects using `is`. */ import python +private import LegacyPointsTo +private import semmle.python.objects.ObjectInternal /** Holds if the comparison `comp` uses `is` or `is not` (represented as `op`) to compare its `left` and `right` arguments. */ predicate comparison_using_is(Compare comp, ControlFlowNode left, Cmpop op, ControlFlowNode right) { @@ -42,7 +44,7 @@ predicate invalid_to_use_is_portably(ClassValue c) { } /** Holds if the control flow node `f` points to either `True`, `False`, or `None`. */ -predicate simple_constant(ControlFlowNode f) { +predicate simple_constant(ControlFlowNodeWithPointsTo f) { exists(Value val | f.pointsTo(val) | val = Value::named("True") or val = Value::named("False") or val = Value::named("None") ) @@ -74,17 +76,17 @@ private predicate universally_interned_value(Expr e) { } /** Holds if the expression `e` points to an interned constant in CPython. */ -predicate cpython_interned_constant(Expr e) { +predicate cpython_interned_constant(ExprWithPointsTo e) { exists(Expr const | e.pointsTo(_, const) | cpython_interned_value(const)) } /** Holds if the expression `e` points to a value that can be reasonably expected to be interned across all implementations of Python. */ -predicate universally_interned_constant(Expr e) { +predicate universally_interned_constant(ExprWithPointsTo e) { exists(Expr const | e.pointsTo(_, const) | universally_interned_value(const)) } private predicate comparison_both_types(Compare comp, Cmpop op, ClassValue cls1, ClassValue cls2) { - exists(ControlFlowNode op1, ControlFlowNode op2 | + exists(ControlFlowNodeWithPointsTo op1, ControlFlowNodeWithPointsTo op2 | comparison_using_is(comp, op1, op, op2) or comparison_using_is(comp, op2, op, op1) | op1.inferredValue().getClass() = cls1 and @@ -94,7 +96,7 @@ private predicate comparison_both_types(Compare comp, Cmpop op, ClassValue cls1, private predicate comparison_one_type(Compare comp, Cmpop op, ClassValue cls) { not comparison_both_types(comp, _, _, _) and - exists(ControlFlowNode operand | + exists(ControlFlowNodeWithPointsTo operand | comparison_using_is(comp, operand, op, _) or comparison_using_is(comp, _, op, operand) | operand.inferredValue().getClass() = cls @@ -118,9 +120,9 @@ predicate invalid_portable_is_comparison(Compare comp, Cmpop op, ClassValue cls) ) ) and // OK to use 'is' when comparing items from a known set of objects - not exists(Expr left, Expr right, Value val | + not exists(ExprWithPointsTo left, ExprWithPointsTo right, Value val | comp.compares(left, op, right) and - exists(ImmutableLiteral il | il.getLiteralValue() = val) + exists(ImmutableLiteral il | il = val.(ConstantObjectInternal).getLiteral()) | left.pointsTo(val) and right.pointsTo(val) or @@ -132,7 +134,7 @@ predicate invalid_portable_is_comparison(Compare comp, Cmpop op, ClassValue cls) ) ) and // OK to use 'is' when comparing with a member of an enum - not exists(Expr left, Expr right, AstNode origin | + not exists(ExprWithPointsTo left, ExprWithPointsTo right, AstNode origin | comp.compares(left, op, right) and enum_member(origin) | diff --git a/python/ql/src/Expressions/NonCallableCalled.ql b/python/ql/src/Expressions/NonCallableCalled.ql index 2740dbe5fb26..2e593f88ca50 100644 --- a/python/ql/src/Expressions/NonCallableCalled.ql +++ b/python/ql/src/Expressions/NonCallableCalled.ql @@ -12,9 +12,10 @@ */ import python +private import LegacyPointsTo import Exceptions.NotImplemented -from Call c, Value v, ClassValue t, Expr f, AstNode origin +from Call c, Value v, ClassValue t, ExprWithPointsTo f, AstNode origin where f = c.getFunc() and f.pointsTo(v, origin) and diff --git a/python/ql/src/Expressions/TruncatedDivision.ql b/python/ql/src/Expressions/TruncatedDivision.ql index 54758b4b78e2..c731a21f7d26 100644 --- a/python/ql/src/Expressions/TruncatedDivision.ql +++ b/python/ql/src/Expressions/TruncatedDivision.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo from BinaryExpr div, ControlFlowNode left, ControlFlowNode right where @@ -20,9 +21,9 @@ where exists(BinaryExprNode bin, Value lval, Value rval | bin = div.getAFlowNode() and bin.getNode().getOp() instanceof Div and - bin.getLeft().pointsTo(lval, left) and + bin.getLeft().(ControlFlowNodeWithPointsTo).pointsTo(lval, left) and lval.getClass() = ClassValue::int_() and - bin.getRight().pointsTo(rval, right) and + bin.getRight().(ControlFlowNodeWithPointsTo).pointsTo(rval, right) and rval.getClass() = ClassValue::int_() and // Ignore instances where integer division leaves no remainder not lval.(NumericValue).getIntValue() % rval.(NumericValue).getIntValue() = 0 and diff --git a/python/ql/src/Expressions/UnnecessaryLambda.ql b/python/ql/src/Expressions/UnnecessaryLambda.ql index 5ba2dd171240..770dde6fece4 100644 --- a/python/ql/src/Expressions/UnnecessaryLambda.ql +++ b/python/ql/src/Expressions/UnnecessaryLambda.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo /* f consists of a single return statement, whose value is a call. The arguments of the call are exactly the parameters of f */ predicate simple_wrapper(Lambda l, Expr wrapped) { @@ -39,7 +40,7 @@ predicate simple_wrapper(Lambda l, Expr wrapped) { } /* The expression called will refer to the same object if evaluated when the lambda is created or when the lambda is executed. */ -predicate unnecessary_lambda(Lambda l, Expr e) { +predicate unnecessary_lambda(Lambda l, ExprWithPointsTo e) { simple_wrapper(l, e) and ( /* plain class */ diff --git a/python/ql/src/Expressions/UseofApply.ql b/python/ql/src/Expressions/UseofApply.ql index 7a0d72b43cf6..2012f2d93618 100644 --- a/python/ql/src/Expressions/UseofApply.ql +++ b/python/ql/src/Expressions/UseofApply.ql @@ -10,8 +10,9 @@ */ import python +private import LegacyPointsTo private import semmle.python.types.Builtins -from CallNode call, ControlFlowNode func +from CallNode call, ControlFlowNodeWithPointsTo func where major_version() = 2 and call.getFunction() = func and func.pointsTo(Value::named("apply")) select call, "Call to the obsolete builtin function 'apply'." diff --git a/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql b/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql index e47d4a55bf5d..d7b27e5c3d75 100644 --- a/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql +++ b/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql @@ -14,24 +14,26 @@ */ import python +import LegacyPointsTo +import semmle.python.objects.ObjectInternal import semmle.python.strings predicate string_format(BinaryExpr operation, StringLiteral str, Value args, AstNode origin) { operation.getOp() instanceof Mod and exists(Context ctx | - operation.getLeft().pointsTo(ctx, _, str) and - operation.getRight().pointsTo(ctx, args, origin) + operation.getLeft().(ExprWithPointsTo).pointsTo(ctx, _, str) and + operation.getRight().(ExprWithPointsTo).pointsTo(ctx, args, origin) ) } int sequence_length(Value args) { /* Guess length of sequence */ - exists(Tuple seq | seq.pointsTo(args, _) | + exists(Tuple seq | seq.(ExprWithPointsTo).pointsTo(args, _) | result = strictcount(seq.getAnElt()) and not seq.getAnElt() instanceof Starred ) or - exists(ImmutableLiteral i | i.getLiteralValue() = args | result = 1) + exists(ImmutableLiteral i | i = args.(ConstantObjectInternal).getLiteral() | result = 1) } from diff --git a/python/ql/src/Functions/ExplicitReturnInInit.ql b/python/ql/src/Functions/ExplicitReturnInInit.ql index c4deea6111c6..f1300afbfd0a 100644 --- a/python/ql/src/Functions/ExplicitReturnInInit.ql +++ b/python/ql/src/Functions/ExplicitReturnInInit.ql @@ -12,8 +12,9 @@ */ import python +private import LegacyPointsTo -from Return r, Expr rv +from Return r, ExprWithPointsTo rv where exists(Function init | init.isInitMethod() and r.getScope() = init) and r.getValue() = rv and diff --git a/python/ql/src/Functions/UseImplicitNoneReturnValue.ql b/python/ql/src/Functions/UseImplicitNoneReturnValue.ql index aeac382f6380..4a8b8edd6235 100644 --- a/python/ql/src/Functions/UseImplicitNoneReturnValue.ql +++ b/python/ql/src/Functions/UseImplicitNoneReturnValue.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import Testing.Mox predicate is_used(Call c) { @@ -31,10 +32,12 @@ from Call c, FunctionValue func where /* Call result is used, but callee is a procedure */ is_used(c) and - c.getFunc().pointsTo(func) and + c.getFunc().(ExprWithPointsTo).pointsTo(func) and func.getScope().isProcedure() and /* All callees are procedures */ - forall(FunctionValue callee | c.getFunc().pointsTo(callee) | callee.getScope().isProcedure()) and + forall(FunctionValue callee | c.getFunc().(ExprWithPointsTo).pointsTo(callee) | + callee.getScope().isProcedure() + ) and /* Mox return objects have an `AndReturn` method */ not useOfMoxInModule(c.getEnclosingModule()) select c, "The result of $@ is used even though it is always None.", func, func.getQualifiedName() diff --git a/python/ql/src/Imports/Cyclic.qll b/python/ql/src/Imports/Cyclic.qll index dd25f06d0e5d..720ea8f00481 100644 --- a/python/ql/src/Imports/Cyclic.qll +++ b/python/ql/src/Imports/Cyclic.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo predicate is_import_time(Stmt s) { not s.getScope+() instanceof Function } @@ -21,7 +22,7 @@ predicate circular_import(ModuleValue m1, ModuleValue m2) { ModuleValue stmt_imports(ImportingStmt s) { exists(string name | result.importedAs(name) and not name = "__main__" | name = s.getAnImportedModuleName() and - s.getASubExpression().pointsTo(result) and + s.getASubExpression().(ExprWithPointsTo).pointsTo(result) and not result.isPackage() ) } @@ -57,7 +58,7 @@ predicate import_time_transitive_import(ModuleValue base, Stmt imp, ModuleValue * Returns import-time usages of module 'm' in module 'enclosing' */ predicate import_time_module_use(ModuleValue m, ModuleValue enclosing, Expr use, string attr) { - exists(Expr mod | + exists(ExprWithPointsTo mod | use.getEnclosingModule() = enclosing.getScope() and not use.getScope+() instanceof Function and mod.pointsTo(m) and @@ -90,7 +91,8 @@ predicate is_used_in_annotation(Expr use) { */ predicate is_annotation_with_from_future_import_annotations(Expr use) { exists(ImportMember i | i.getScope() = use.getEnclosingModule() | - i.getModule().pointsTo().getName() = "__future__" and i.getName() = "annotations" + i.getModule().(ExprWithPointsTo).pointsTo().getName() = "__future__" and + i.getName() = "annotations" ) and is_used_in_annotation(use) } diff --git a/python/ql/src/Imports/DeprecatedModule.ql b/python/ql/src/Imports/DeprecatedModule.ql index 5f5a8af3ae9a..3d529943fb8f 100644 --- a/python/ql/src/Imports/DeprecatedModule.ql +++ b/python/ql/src/Imports/DeprecatedModule.ql @@ -11,6 +11,7 @@ */ import python +private import LegacyPointsTo /** * Holds if the module `name` was deprecated in Python version `major`.`minor`, @@ -79,7 +80,7 @@ where name = imp.getName() and deprecated_module(name, instead, _, _) and not exists(Try try, ExceptStmt except | except = try.getAHandler() | - except.getType().pointsTo(ClassValue::importError()) and + except.getType().(ExprWithPointsTo).pointsTo(ClassValue::importError()) and except.containsInScope(imp) ) select imp, deprecation_message(name) + replacement_message(name) diff --git a/python/ql/src/Imports/FromImportOfMutableAttribute.ql b/python/ql/src/Imports/FromImportOfMutableAttribute.ql index c66a7578de61..63198bece30c 100644 --- a/python/ql/src/Imports/FromImportOfMutableAttribute.ql +++ b/python/ql/src/Imports/FromImportOfMutableAttribute.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import semmle.python.filters.Tests from ImportMember im, ModuleValue m, AttrNode store_attr, string name @@ -23,7 +24,7 @@ where /* variable resulting from import must have a long lifetime */ not im.getScope() instanceof Function and store_attr.isStore() and - store_attr.getObject(name).pointsTo(m) and + store_attr.getObject(name).(ControlFlowNodeWithPointsTo).pointsTo(m) and /* Import not in same module as modification. */ not im.getEnclosingModule() = store_attr.getScope().getEnclosingModule() and /* Modification is not in a test */ diff --git a/python/ql/src/Imports/UnusedImport.ql b/python/ql/src/Imports/UnusedImport.ql index 020356901652..370daf405fe7 100644 --- a/python/ql/src/Imports/UnusedImport.ql +++ b/python/ql/src/Imports/UnusedImport.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import Variables.Definition import semmle.python.ApiGraphs @@ -94,7 +95,7 @@ private string typehint_annotation_in_module(Module module_scope) { or annotation = any(FunctionExpr f).getReturns().getASubExpression*() | - annotation.pointsTo(Value::forString(result)) and + annotation.(ExprWithPointsTo).pointsTo(Value::forString(result)) and annotation.getEnclosingModule() = module_scope ) } @@ -144,7 +145,7 @@ predicate unused_import(Import imp, Variable name) { not is_pytest_fixture(imp, name) and // Only consider import statements that actually point-to something (possibly an unknown module). // If this is not the case, it's likely that the import statement never gets executed. - imp.getAName().getValue().pointsTo(_) + imp.getAName().getValue().(ExprWithPointsTo).pointsTo(_) } from Stmt s, Variable name diff --git a/python/ql/src/Security/CWE-020/OverlyLargeRange.ql b/python/ql/src/Security/CWE-020/OverlyLargeRange.ql index 25acc667430f..94bc74238bcb 100644 --- a/python/ql/src/Security/CWE-020/OverlyLargeRange.ql +++ b/python/ql/src/Security/CWE-020/OverlyLargeRange.ql @@ -4,7 +4,7 @@ * This may allow an attacker to bypass a filter or sanitizer. * @kind problem * @problem.severity warning - * @security-severity 5.0 + * @security-severity 4.0 * @precision high * @id py/overly-large-range * @tags correctness diff --git a/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql b/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql index 01056daaf788..eaabd4c52815 100644 --- a/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql +++ b/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql @@ -1,5 +1,5 @@ /** - * @name Sensitive cookie missing `HttpOnly` attribute. + * @name Sensitive cookie missing `HttpOnly` attribute * @description Cookies without the `HttpOnly` attribute set can be accessed by JS scripts, making them more vulnerable to XSS attacks. * @kind problem * @problem.severity warning diff --git a/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql index ebad2ddbba65..9bc58d2d4747 100644 --- a/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql +++ b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql @@ -1,5 +1,5 @@ /** - * @name Sensitive cookie with `SameSite` attribute set to `None`. + * @name Sensitive cookie with `SameSite` attribute set to `None` * @description Cookies with `SameSite` set to `None` can allow for Cross-Site Request Forgery (CSRF) attacks. * @kind problem * @problem.severity warning diff --git a/python/ql/src/Statements/IterableStringOrSequence.ql b/python/ql/src/Statements/IterableStringOrSequence.ql index 5cf92754f622..d1c4a507f0d1 100644 --- a/python/ql/src/Statements/IterableStringOrSequence.ql +++ b/python/ql/src/Statements/IterableStringOrSequence.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import semmle.python.filters.Tests predicate has_string_type(Value v) { @@ -21,7 +22,7 @@ predicate has_string_type(Value v) { } from - For loop, ControlFlowNode iter, Value str, Value seq, ControlFlowNode seq_origin, + For loop, ControlFlowNodeWithPointsTo iter, Value str, Value seq, ControlFlowNode seq_origin, ControlFlowNode str_origin where loop.getIter().getAFlowNode() = iter and diff --git a/python/ql/src/Statements/MismatchInMultipleAssignment.ql b/python/ql/src/Statements/MismatchInMultipleAssignment.ql index 188bdd7b9156..c44d8e348c66 100644 --- a/python/ql/src/Statements/MismatchInMultipleAssignment.ql +++ b/python/ql/src/Statements/MismatchInMultipleAssignment.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo private int len(ExprList el) { result = count(el.getAnItem()) } @@ -41,7 +42,7 @@ predicate mismatched_tuple_rhs(Assign a, int lcount, int rcount, Location loc) { a.getATarget().(Tuple).getElts() = l or a.getATarget().(List).getElts() = l ) and - a.getValue().pointsTo(r, origin) and + a.getValue().(ExprWithPointsTo).pointsTo(r, origin) and loc = origin.getLocation() and lcount = len(l) and rcount = r.length() and diff --git a/python/ql/src/Statements/ModificationOfLocals.ql b/python/ql/src/Statements/ModificationOfLocals.ql index 05c2095f88cb..e4791a410f7a 100644 --- a/python/ql/src/Statements/ModificationOfLocals.ql +++ b/python/ql/src/Statements/ModificationOfLocals.ql @@ -12,8 +12,11 @@ */ import python +private import LegacyPointsTo -predicate originIsLocals(ControlFlowNode n) { n.pointsTo(_, _, Value::named("locals").getACall()) } +predicate originIsLocals(ControlFlowNodeWithPointsTo n) { + n.pointsTo(_, _, Value::named("locals").getACall()) +} predicate modification_of_locals(ControlFlowNode f) { originIsLocals(f.(SubscriptNode).getObject()) and diff --git a/python/ql/src/Statements/NonIteratorInForLoop.ql b/python/ql/src/Statements/NonIteratorInForLoop.ql index 92527a10e3bb..f8e6e51b55ff 100644 --- a/python/ql/src/Statements/NonIteratorInForLoop.ql +++ b/python/ql/src/Statements/NonIteratorInForLoop.ql @@ -12,8 +12,9 @@ */ import python +private import LegacyPointsTo -from For loop, ControlFlowNode iter, Value v, ClassValue t, ControlFlowNode origin +from For loop, ControlFlowNodeWithPointsTo iter, Value v, ClassValue t, ControlFlowNode origin where loop.getIter().getAFlowNode() = iter and iter.pointsTo(_, v, origin) and diff --git a/python/ql/src/Statements/RedundantAssignment.ql b/python/ql/src/Statements/RedundantAssignment.ql index 42561905bacd..357364c41b2f 100644 --- a/python/ql/src/Statements/RedundantAssignment.ql +++ b/python/ql/src/Statements/RedundantAssignment.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo predicate assignment(AssignStmt a, Expr left, Expr right) { a.getATarget() = left and a.getValue() = right @@ -57,7 +58,9 @@ predicate same_name(Name n1, Name n2) { not maybe_defined_in_outer_scope(n2) } -ClassValue value_type(Attribute a) { a.getObject().pointsTo().getClass() = result } +ClassValue value_type(Attribute a) { + a.getObject().(ExprWithPointsTo).pointsTo().getClass() = result +} predicate is_property_access(Attribute a) { value_type(a).lookup(a.getName()) instanceof PropertyValue @@ -87,7 +90,7 @@ predicate pyflakes_commented(AssignStmt assignment) { predicate side_effecting_lhs(Attribute lhs) { exists(ClassValue cls, ClassValue decl | - lhs.getObject().pointsTo().getClass() = cls and + lhs.getObject().(ExprWithPointsTo).pointsTo().getClass() = cls and decl = cls.getASuperType() and not decl.isBuiltin() | diff --git a/python/ql/src/Statements/ShouldUseWithStatement.ql b/python/ql/src/Statements/ShouldUseWithStatement.ql index 2ad76b5c832d..eb5cf9237d57 100644 --- a/python/ql/src/Statements/ShouldUseWithStatement.ql +++ b/python/ql/src/Statements/ShouldUseWithStatement.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo predicate calls_close(Call c) { exists(Attribute a | c.getFunc() = a and a.getName() = "close") } @@ -22,7 +23,7 @@ predicate only_stmt_in_finally(Try t, Call c) { ) } -predicate points_to_context_manager(ControlFlowNode f, ClassValue cls) { +predicate points_to_context_manager(ControlFlowNodeWithPointsTo f, ClassValue cls) { forex(Value v | f.pointsTo(v) | v.getClass() = cls) and cls.isContextManager() } diff --git a/python/ql/src/Statements/StatementNoEffect.ql b/python/ql/src/Statements/StatementNoEffect.ql index a5806e7082dd..222907f24e33 100644 --- a/python/ql/src/Statements/StatementNoEffect.ql +++ b/python/ql/src/Statements/StatementNoEffect.ql @@ -13,10 +13,11 @@ */ import python +private import LegacyPointsTo predicate understood_attribute(Attribute attr, ClassValue cls, ClassValue attr_cls) { exists(string name | attr.getName() = name | - attr.getObject().pointsTo().getClass() = cls and + attr.getObject().(ExprWithPointsTo).pointsTo().getClass() = cls and cls.attr(name).getClass() = attr_cls ) } @@ -30,7 +31,7 @@ predicate side_effecting_attribute(Attribute attr) { } predicate maybe_side_effecting_attribute(Attribute attr) { - not understood_attribute(attr, _, _) and not attr.pointsTo(_) + not understood_attribute(attr, _, _) and not attr.(ExprWithPointsTo).pointsTo(_) or side_effecting_attribute(attr) } @@ -68,7 +69,7 @@ predicate side_effecting_binary(Expr b) { pragma[nomagic] private predicate binary_operator_special_method( - BinaryExpr b, Expr sub, ClassValue cls, string method_name + BinaryExpr b, ExprWithPointsTo sub, ClassValue cls, string method_name ) { method_name = special_method() and sub = b.getLeft() and @@ -77,7 +78,9 @@ private predicate binary_operator_special_method( } pragma[nomagic] -private predicate comparison_special_method(Compare b, Expr sub, ClassValue cls, string method_name) { +private predicate comparison_special_method( + Compare b, ExprWithPointsTo sub, ClassValue cls, string method_name +) { exists(Cmpop op | b.compares(sub, op, _) and method_name = op.getSpecialMethodName() diff --git a/python/ql/src/Statements/StringConcatenationInLoop.ql b/python/ql/src/Statements/StringConcatenationInLoop.ql index 563a42e5462a..c85292cf26aa 100644 --- a/python/ql/src/Statements/StringConcatenationInLoop.ql +++ b/python/ql/src/Statements/StringConcatenationInLoop.ql @@ -11,6 +11,7 @@ */ import python +private import LegacyPointsTo predicate string_concat_in_loop(BinaryExpr b) { b.getOp() instanceof Add and @@ -19,7 +20,7 @@ predicate string_concat_in_loop(BinaryExpr b) { | d.getDefinition().(DefinitionNode).getValue() = add and u.getAUse() = add.getAnOperand() and - add.getAnOperand().pointsTo().getClass() = ClassValue::str() + add.getAnOperand().(ControlFlowNodeWithPointsTo).pointsTo().getClass() = ClassValue::str() ) } diff --git a/python/ql/src/Statements/UnreachableCode.ql b/python/ql/src/Statements/UnreachableCode.ql index 98c99ac12185..55582ed2f061 100644 --- a/python/ql/src/Statements/UnreachableCode.ql +++ b/python/ql/src/Statements/UnreachableCode.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo predicate typing_import(ImportingStmt is) { exists(Module m | @@ -33,7 +34,11 @@ predicate unique_yield(Stmt s) { /** Holds if `contextlib.suppress` may be used in the same scope as `s` */ predicate suppression_in_scope(Stmt s) { exists(With w | - w.getContextExpr().(Call).getFunc().pointsTo(Value::named("contextlib.suppress")) and + w.getContextExpr() + .(Call) + .getFunc() + .(ExprWithPointsTo) + .pointsTo(Value::named("contextlib.suppress")) and w.getScope() = s.getScope() ) } diff --git a/python/ql/src/Statements/UnusedExceptionObject.ql b/python/ql/src/Statements/UnusedExceptionObject.ql index 90724b9f1671..9a6a3650b7e6 100644 --- a/python/ql/src/Statements/UnusedExceptionObject.ql +++ b/python/ql/src/Statements/UnusedExceptionObject.ql @@ -12,10 +12,11 @@ */ import python +private import LegacyPointsTo from Call call, ClassValue ex where - call.getFunc().pointsTo(ex) and + call.getFunc().(ExprWithPointsTo).pointsTo(ex) and ex.getASuperType() = ClassValue::exception() and exists(ExprStmt s | s.getValue() = call) select call, "Instantiating an exception, but not raising it, has no effect." diff --git a/python/ql/src/Statements/UseOfExit.ql b/python/ql/src/Statements/UseOfExit.ql index be3579481fcb..437ff93b5371 100644 --- a/python/ql/src/Statements/UseOfExit.ql +++ b/python/ql/src/Statements/UseOfExit.ql @@ -12,9 +12,10 @@ */ import python +private import LegacyPointsTo from CallNode call, string name -where call.getFunction().pointsTo(Value::siteQuitter(name)) +where call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(Value::siteQuitter(name)) select call, "The '" + name + "' site.Quitter object may not exist if the 'site' module is not loaded or is modified." diff --git a/python/ql/src/Testing/Mox.qll b/python/ql/src/Testing/Mox.qll index a131ca7eecaf..969c49c68438 100644 --- a/python/ql/src/Testing/Mox.qll +++ b/python/ql/src/Testing/Mox.qll @@ -1,9 +1,10 @@ import python +private import LegacyPointsTo /** Whether `mox` or `.StubOutWithMock()` is used in thin module `m`. */ predicate useOfMoxInModule(Module m) { exists(ModuleObject mox | mox.getName() = "mox" or mox.getName() = "mox3.mox" | - exists(ControlFlowNode use | + exists(ControlFlowNodeWithPointsTo use | use.refersTo(mox) and use.getScope().getEnclosingModule() = m ) diff --git a/python/ql/src/Variables/Global.ql b/python/ql/src/Variables/Global.ql index b29fb564a873..40e777c62d67 100644 --- a/python/ql/src/Variables/Global.ql +++ b/python/ql/src/Variables/Global.ql @@ -1,5 +1,5 @@ /** - * @name Use of the 'global' statement. + * @name Use of the 'global' statement * @description Use of the 'global' statement may indicate poor modularity. * @kind problem * @problem.severity recommendation diff --git a/python/ql/src/Variables/MonkeyPatched.qll b/python/ql/src/Variables/MonkeyPatched.qll index ab842afbf265..86d9edac0a9b 100644 --- a/python/ql/src/Variables/MonkeyPatched.qll +++ b/python/ql/src/Variables/MonkeyPatched.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo predicate monkey_patched_builtin(string name) { exists(AttrNode attr, SubscriptNode subscr, StringLiteral s | @@ -6,19 +7,19 @@ predicate monkey_patched_builtin(string name) { subscr.getIndex().getNode() = s and s.getText() = name and subscr.getObject() = attr and - attr.getObject("__dict__").pointsTo(Module::builtinModule()) + attr.getObject("__dict__").(ControlFlowNodeWithPointsTo).pointsTo(Module::builtinModule()) ) or - exists(CallNode call, ControlFlowNode bltn, StringLiteral s | + exists(CallNode call, ControlFlowNodeWithPointsTo bltn, StringLiteral s | call.getArg(0) = bltn and bltn.pointsTo(Module::builtinModule()) and call.getArg(1).getNode() = s and s.getText() = name and - call.getFunction().pointsTo(Value::named("setattr")) + call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(Value::named("setattr")) ) or exists(AttrNode attr | attr.isStore() and - attr.getObject(name).pointsTo(Module::builtinModule()) + attr.getObject(name).(ControlFlowNodeWithPointsTo).pointsTo(Module::builtinModule()) ) } diff --git a/python/ql/src/Variables/ShadowGlobal.ql b/python/ql/src/Variables/ShadowGlobal.ql index 2f06e4fe57d7..fad86935cf1d 100644 --- a/python/ql/src/Variables/ShadowGlobal.ql +++ b/python/ql/src/Variables/ShadowGlobal.ql @@ -15,6 +15,7 @@ */ import python +private import LegacyPointsTo import Shadowing import semmle.python.types.Builtins @@ -35,7 +36,9 @@ predicate shadows(Name d, GlobalVariable g, Function scope, int line) { /* pytest dynamically populates its namespace so, we cannot look directly for the pytest.fixture function */ AttrNode pytest_fixture_attr() { - exists(ModuleValue pytest | result.getObject("fixture").pointsTo(pytest)) + exists(ModuleValue pytest | + result.getObject("fixture").(ControlFlowNodeWithPointsTo).pointsTo(pytest) + ) } Value pytest_fixture() { @@ -44,14 +47,15 @@ Value pytest_fixture() { or call.getFunction().(CallNode).getFunction() = pytest_fixture_attr() | - call.pointsTo(result) + call.(ControlFlowNodeWithPointsTo).pointsTo(result) ) } /* pytest fixtures require that the parameter name is also a global */ predicate assigned_pytest_fixture(GlobalVariable v) { exists(NameNode def | - def.defines(v) and def.(DefinitionNode).getValue().pointsTo(pytest_fixture()) + def.defines(v) and + def.(DefinitionNode).getValue().(ControlFlowNodeWithPointsTo).pointsTo(pytest_fixture()) ) } diff --git a/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql b/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql index fbeb9b2b4f96..87900c48fc58 100644 --- a/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql +++ b/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import Definition predicate is_increment(Stmt s) { @@ -55,7 +56,7 @@ predicate points_to_call_to_range(ControlFlowNode f) { ) or /* Handle list(range(...)) and list(list(range(...))) */ - f.(CallNode).pointsTo().getClass() = ClassValue::list() and + f.(CallNode).(ControlFlowNodeWithPointsTo).pointsTo().getClass() = ClassValue::list() and points_to_call_to_range(f.(CallNode).getArg(0)) } diff --git a/python/ql/src/Variables/UndefinedExport.ql b/python/ql/src/Variables/UndefinedExport.ql index 173139e224a8..ff3f78ec4bcc 100644 --- a/python/ql/src/Variables/UndefinedExport.ql +++ b/python/ql/src/Variables/UndefinedExport.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo /** Whether name is declared in the __all__ list of this module */ predicate declaredInAll(Module m, StringLiteral name) { @@ -44,7 +45,7 @@ predicate mutates_globals(ModuleValue m) { enum_convert = enum_class.attr("_convert") and exists(CallNode call | call.getScope() = m.getScope() | enum_convert.getACall() = call or - call.getFunction().pointsTo(enum_convert) + call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(enum_convert) ) ) or @@ -52,7 +53,11 @@ predicate mutates_globals(ModuleValue m) { // analysis doesn't handle that well enough. So we need a special case for this not exists(enum_class.attr("_convert")) and exists(CallNode call | call.getScope() = m.getScope() | - call.getFunction().(AttrNode).getObject(["_convert", "_convert_"]).pointsTo() = enum_class + call.getFunction() + .(AttrNode) + .getObject(["_convert", "_convert_"]) + .(ControlFlowNodeWithPointsTo) + .pointsTo() = enum_class ) ) ) @@ -65,9 +70,9 @@ predicate is_exported_submodule_name(ModuleValue m, string exported_name) { predicate contains_unknown_import_star(ModuleValue m) { exists(ImportStarNode imp | imp.getEnclosingModule() = m.getScope() | - imp.getModule().pointsTo().isAbsent() + imp.getModule().(ControlFlowNodeWithPointsTo).pointsTo().isAbsent() or - not exists(imp.getModule().pointsTo()) + not exists(imp.getModule().(ControlFlowNodeWithPointsTo).pointsTo()) ) } diff --git a/python/ql/src/Variables/UndefinedGlobal.ql b/python/ql/src/Variables/UndefinedGlobal.ql index f88f5504df81..3ea1c0d38eb6 100644 --- a/python/ql/src/Variables/UndefinedGlobal.ql +++ b/python/ql/src/Variables/UndefinedGlobal.ql @@ -11,6 +11,7 @@ */ import python +private import LegacyPointsTo import Variables.MonkeyPatched import Loop import semmle.python.pointsto.PointsTo @@ -95,7 +96,7 @@ predicate undefined_use(Name u) { not contains_unknown_import_star(u.getEnclosingModule()) and not use_of_exec(u.getEnclosingModule()) and not exists(u.getVariable().getAStore()) and - not u.pointsTo(_) and + not u.(ExprWithPointsTo).pointsTo(_) and not probably_defined_in_loop(u) } diff --git a/python/ql/src/Variables/UninitializedLocal.ql b/python/ql/src/Variables/UninitializedLocal.ql index a6ac7d490ce6..d4d94f5a4f37 100644 --- a/python/ql/src/Variables/UninitializedLocal.ql +++ b/python/ql/src/Variables/UninitializedLocal.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import Undefined import semmle.python.pointsto.PointsTo @@ -30,7 +31,7 @@ predicate uninitialized_local(NameNode use) { predicate explicitly_guarded(NameNode u) { exists(Try t | t.getBody().contains(u.getNode()) and - t.getAHandler().getType().pointsTo(ClassValue::nameError()) + t.getAHandler().getType().(ExprWithPointsTo).pointsTo(ClassValue::nameError()) ) } diff --git a/python/ql/src/Variables/UnusedModuleVariable.ql b/python/ql/src/Variables/UnusedModuleVariable.ql index 855ca27a7417..24d6559d6fea 100644 --- a/python/ql/src/Variables/UnusedModuleVariable.ql +++ b/python/ql/src/Variables/UnusedModuleVariable.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo import Definition /** @@ -58,7 +59,7 @@ predicate unused_global(Name unused, GlobalVariable v) { // indirectly defn.getBasicBlock().reachesExit() and u.getScope() != unused.getScope() ) and - not unused.getEnclosingModule().getAnExport() = v.getId() and + not unused.getEnclosingModule().(ModuleWithPointsTo).getAnExport() = v.getId() and not exists(unused.getParentNode().(ClassDef).getDefinedClass().getADecorator()) and not exists(unused.getParentNode().(FunctionDef).getDefinedFunction().getADecorator()) and unused.defines(v) and diff --git a/python/ql/src/analysis/Consistency.ql b/python/ql/src/analysis/Consistency.ql index f7d80a5da957..aafb461a5045 100644 --- a/python/ql/src/analysis/Consistency.ql +++ b/python/ql/src/analysis/Consistency.ql @@ -5,6 +5,7 @@ */ import python +private import LegacyPointsTo import analysis.DefinitionTracking predicate uniqueness_error(int number, string what, string problem) { @@ -208,18 +209,22 @@ predicate function_object_consistency(string clsname, string problem, string wha predicate multiple_origins_per_object(Object obj) { not obj.isC() and not obj instanceof ModuleObject and - exists(ControlFlowNode use, Context ctx | + exists(ControlFlowNodeWithPointsTo use, Context ctx | strictcount(ControlFlowNode orig | use.refersTo(ctx, obj, _, orig)) > 1 ) } -predicate intermediate_origins(ControlFlowNode use, ControlFlowNode inter, Object obj) { +predicate intermediate_origins( + ControlFlowNodeWithPointsTo use, ControlFlowNodeWithPointsTo inter, Object obj +) { exists(ControlFlowNode orig, Context ctx | not inter = orig | use.refersTo(ctx, obj, _, inter) and inter.refersTo(ctx, obj, _, orig) and // It can sometimes happen that two different modules (e.g. cPickle and Pickle) // have the same attribute, but different origins. - not strictcount(Object val | inter.(AttrNode).getObject().refersTo(val)) > 1 + not strictcount(Object val | + inter.(AttrNode).getObject().(ControlFlowNodeWithPointsTo).refersTo(val) + ) > 1 ) } diff --git a/python/ql/src/analysis/Efficiency.ql b/python/ql/src/analysis/Efficiency.ql index ff44fc2c47d0..37cb5c973879 100644 --- a/python/ql/src/analysis/Efficiency.ql +++ b/python/ql/src/analysis/Efficiency.ql @@ -4,6 +4,7 @@ */ import python +private import LegacyPointsTo import semmle.python.pointsto.PointsTo import semmle.python.pointsto.PointsToContext @@ -18,11 +19,11 @@ predicate trivial(ControlFlowNode f) { from int interesting_facts, int interesting_facts_in_source, int total_size, float efficiency where interesting_facts = - strictcount(ControlFlowNode f, Object value, ClassObject cls | + strictcount(ControlFlowNodeWithPointsTo f, Object value, ClassObject cls | f.refersTo(value, cls, _) and not trivial(f) ) and interesting_facts_in_source = - strictcount(ControlFlowNode f, Object value, ClassObject cls | + strictcount(ControlFlowNodeWithPointsTo f, Object value, ClassObject cls | f.refersTo(value, cls, _) and not trivial(f) and exists(f.getScope().getEnclosingModule().getFile().getRelativePath()) diff --git a/python/ql/src/analysis/ImportFailure.ql b/python/ql/src/analysis/ImportFailure.ql index 62de72f3b3ea..c9289a8b474a 100644 --- a/python/ql/src/analysis/ImportFailure.ql +++ b/python/ql/src/analysis/ImportFailure.ql @@ -7,6 +7,7 @@ */ import python +private import LegacyPointsTo ImportExpr alternative_import(ImportExpr ie) { exists(Alias thisalias, Alias otheralias | @@ -53,7 +54,7 @@ string os_specific_import(ImportExpr ie) { string get_os() { py_flags_versioned("sys.platform", result, major_version().toString()) } predicate ok_to_fail(ImportExpr ie) { - alternative_import(ie).refersTo(_) + alternative_import(ie).(ExprWithPointsTo).refersTo(_) or os_specific_import(ie) != get_os() } @@ -62,7 +63,10 @@ class VersionTest extends ControlFlowNode { VersionTest() { exists(string name | name.matches("%version%") and - this.(CompareNode).getAChild+().pointsTo(Module::named("sys").attr(name)) + this.(CompareNode) + .getAChild+() + .(ControlFlowNodeWithPointsTo) + .pointsTo(Module::named("sys").attr(name)) ) } @@ -76,7 +80,7 @@ class VersionGuard extends ConditionBlock { from ImportExpr ie where - not ie.refersTo(_) and + not ie.(ExprWithPointsTo).refersTo(_) and exists(Context c | c.appliesTo(ie.getAFlowNode())) and not ok_to_fail(ie) and not exists(VersionGuard guard | guard.controls(ie.getAFlowNode().getBasicBlock(), _)) diff --git a/python/ql/src/analysis/KeyPointsToFailure.ql b/python/ql/src/analysis/KeyPointsToFailure.ql index d869d547c755..f07e8638f385 100644 --- a/python/ql/src/analysis/KeyPointsToFailure.ql +++ b/python/ql/src/analysis/KeyPointsToFailure.ql @@ -1,5 +1,5 @@ /** - * @name Key points-to fails for expression. + * @name Key points-to fails for expression * @description Expression does not "point-to" an object which prevents further points-to analysis. * @kind problem * @problem.severity info diff --git a/python/ql/src/analysis/PointsToFailure.ql b/python/ql/src/analysis/PointsToFailure.ql index 66ff2d811a36..fee1e80d2f77 100644 --- a/python/ql/src/analysis/PointsToFailure.ql +++ b/python/ql/src/analysis/PointsToFailure.ql @@ -1,5 +1,5 @@ /** - * @name points-to fails for expression. + * @name points-to fails for expression * @description Expression does not "point-to" an object which prevents type inference. * @kind problem * @id py/points-to-failure @@ -9,7 +9,8 @@ */ import python +private import LegacyPointsTo from Expr e -where exists(ControlFlowNode f | f = e.getAFlowNode() | not f.refersTo(_)) +where exists(ControlFlowNodeWithPointsTo f | f = e.getAFlowNode() | not f.refersTo(_)) select e, "Expression does not 'point-to' any object." diff --git a/python/ql/src/analysis/RatioOfDefinitions.ql b/python/ql/src/analysis/RatioOfDefinitions.ql index 562deb750051..84b8d7602ec7 100644 --- a/python/ql/src/analysis/RatioOfDefinitions.ql +++ b/python/ql/src/analysis/RatioOfDefinitions.ql @@ -3,9 +3,10 @@ */ import python +private import LegacyPointsTo import analysis.DefinitionTracking -predicate want_to_have_definition(Expr e) { +predicate want_to_have_definition(ExprWithPointsTo e) { /* not builtin object like len, tuple, etc. */ not exists(Value builtin | e.pointsTo(builtin) and builtin.isBuiltin()) and ( diff --git a/python/ql/src/analysis/TypeInferenceFailure.ql b/python/ql/src/analysis/TypeInferenceFailure.ql index 70c4e880879d..5cfafee36b1e 100644 --- a/python/ql/src/analysis/TypeInferenceFailure.ql +++ b/python/ql/src/analysis/TypeInferenceFailure.ql @@ -8,8 +8,9 @@ */ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o +from ControlFlowNodeWithPointsTo f, Object o where f.refersTo(o) and not f.refersTo(o, _, _) diff --git a/python/ql/src/change-notes/released/1.7.0.md b/python/ql/src/change-notes/released/1.7.0.md new file mode 100644 index 000000000000..92850b2e4649 --- /dev/null +++ b/python/ql/src/change-notes/released/1.7.0.md @@ -0,0 +1,5 @@ +## 1.7.0 + +### Query Metadata Changes + +* Reduced the `security-severity` score of the `py/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. diff --git a/python/ql/src/change-notes/released/1.7.1.md b/python/ql/src/change-notes/released/1.7.1.md new file mode 100644 index 000000000000..5c9570fd0c35 --- /dev/null +++ b/python/ql/src/change-notes/released/1.7.1.md @@ -0,0 +1,3 @@ +## 1.7.1 + +No user-facing changes. diff --git a/python/ql/src/change-notes/released/1.7.2.md b/python/ql/src/change-notes/released/1.7.2.md new file mode 100644 index 000000000000..b950385c16d7 --- /dev/null +++ b/python/ql/src/change-notes/released/1.7.2.md @@ -0,0 +1,3 @@ +## 1.7.2 + +No user-facing changes. diff --git a/python/ql/src/change-notes/released/1.7.3.md b/python/ql/src/change-notes/released/1.7.3.md new file mode 100644 index 000000000000..a629082e2155 --- /dev/null +++ b/python/ql/src/change-notes/released/1.7.3.md @@ -0,0 +1,3 @@ +## 1.7.3 + +No user-facing changes. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index fbc11aa62b75..9f9661b1e77a 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.6.8 +lastReleaseVersion: 1.7.3 diff --git a/python/ql/src/experimental/Security/CWE-094/Js2Py.ql b/python/ql/src/experimental/Security/CWE-094/Js2Py.ql index 53c919d97327..2ed3c37da373 100644 --- a/python/ql/src/experimental/Security/CWE-094/Js2Py.ql +++ b/python/ql/src/experimental/Security/CWE-094/Js2Py.ql @@ -1,5 +1,5 @@ /** - * @name JavaScript code execution. + * @name JavaScript code execution * @description Passing user supplied arguments to a Javascript to Python translation engine such as Js2Py can lead to remote code execution. * @problem.severity error * @security-severity 9.3 diff --git a/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql b/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql index a0fadbff3f3b..fdbda943921f 100644 --- a/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql +++ b/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql @@ -1,5 +1,5 @@ /** - * @name Unsafe usage of v1 version of Azure Storage client-side encryption. + * @name Unsafe usage of v1 version of Azure Storage client-side encryption * @description Using version v1 of Azure Storage client-side encryption is insecure, and may enable an attacker to decrypt encrypted data * @kind path-problem * @tags security diff --git a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFAlgorithm.ql b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFAlgorithm.ql index 0f30571385a4..c3dde29952d3 100644 --- a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFAlgorithm.ql +++ b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFAlgorithm.ql @@ -1,5 +1,5 @@ /** - * @name Weak KDF algorithm. + * @name Weak KDF algorithm * @description Approved KDF algorithms must one of the following * ["PBKDF2" , "PBKDF2HMAC", "KBKDF", "KBKDFHMAC", "CONCATKDF", "CONCATKDFHASH"] * @assumption The value being used to derive a key (either a key or a password) is correct for the algorithm (i.e., a key is used for KBKDF and a password for PBKDF). diff --git a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFKeyLength.ql b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFKeyLength.ql index a7c83f9e62ee..6a5a48a4fe53 100644 --- a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFKeyLength.ql +++ b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFKeyLength.ql @@ -1,5 +1,5 @@ /** - * @name Small KDF derived key length. + * @name Small KDF derived key length * @description KDF derived keys should be a minimum of 128 bits (16 bytes). * @assumption If the key length is not explicitly provided (e.g., it is None or otherwise not specified) assumes the length is derived from the hash length. * @kind problem diff --git a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltGen.ql b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltGen.ql index 9d312583912e..4d3cd7b1dfd6 100644 --- a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltGen.ql +++ b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltGen.ql @@ -1,5 +1,5 @@ /** - * @name Weak KDF salt generation. + * @name Weak KDF salt generation * @description KDF salts must be generated by an approved random number generator (os.urandom) * @kind problem * @id py/kdf-weak-salt-gen diff --git a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltSize.ql b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltSize.ql index 54f72de0594a..7477391a7382 100644 --- a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltSize.ql +++ b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltSize.ql @@ -1,5 +1,5 @@ /** - * @name Small KDF salt length. + * @name Small KDF salt length * @description KDF salts should be a minimum of 128 bits (16 bytes). * * This alerts if a constant traces to to a salt length sink less than 128-bits or diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index dd29d5c31a2f..2cc62425f302 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.6.8 +version: 1.7.3 groups: - python - queries diff --git a/python/ql/test/2/library-tests/PointsTo/class_properties/ClassValues.ql b/python/ql/test/2/library-tests/PointsTo/class_properties/ClassValues.ql index 3281b8d26e64..382312a4b5c6 100644 --- a/python/ql/test/2/library-tests/PointsTo/class_properties/ClassValues.ql +++ b/python/ql/test/2/library-tests/PointsTo/class_properties/ClassValues.ql @@ -1,10 +1,11 @@ import python +private import LegacyPointsTo from ClassValue cls, string res where exists(CallNode call | call.getFunction().(NameNode).getId() = "test" and - call.getAnArg().pointsTo(cls) + call.getAnArg().(ControlFlowNodeWithPointsTo).pointsTo(cls) ) and ( cls.isSequence() and diff --git a/python/ql/test/2/library-tests/PointsTo/imports/Runtime.ql b/python/ql/test/2/library-tests/PointsTo/imports/Runtime.ql index 7a46cc8cad13..aad100c14d52 100644 --- a/python/ql/test/2/library-tests/PointsTo/imports/Runtime.ql +++ b/python/ql/test/2/library-tests/PointsTo/imports/Runtime.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Object o, ControlFlowNode orig +from int line, ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode orig where not f.getLocation().getFile().inStdlib() and f.refersTo(o, orig) and diff --git a/python/ql/test/2/library-tests/PointsTo/imports2/Runtime.ql b/python/ql/test/2/library-tests/PointsTo/imports2/Runtime.ql index f694bc64cf01..19add3600a04 100644 --- a/python/ql/test/2/library-tests/PointsTo/imports2/Runtime.ql +++ b/python/ql/test/2/library-tests/PointsTo/imports2/Runtime.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Object o, ControlFlowNode orig +from int line, ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode orig where not f.getLocation().getFile().inStdlib() and f.refersTo(o, orig) and diff --git a/python/ql/test/2/library-tests/PointsTo/imports2/RuntimeWithType.ql b/python/ql/test/2/library-tests/PointsTo/imports2/RuntimeWithType.ql index 99a5f7b81630..09c330596c96 100644 --- a/python/ql/test/2/library-tests/PointsTo/imports2/RuntimeWithType.ql +++ b/python/ql/test/2/library-tests/PointsTo/imports2/RuntimeWithType.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Object o, ClassObject cls, ControlFlowNode orig +from int line, ControlFlowNodeWithPointsTo f, Object o, ClassObject cls, ControlFlowNode orig where not f.getLocation().getFile().inStdlib() and f.refersTo(o, cls, orig) and diff --git a/python/ql/test/2/library-tests/PointsTo/origin_uniqueness/Origin.ql b/python/ql/test/2/library-tests/PointsTo/origin_uniqueness/Origin.ql index 4c7a4fff3588..3f923bc63fa3 100644 --- a/python/ql/test/2/library-tests/PointsTo/origin_uniqueness/Origin.ql +++ b/python/ql/test/2/library-tests/PointsTo/origin_uniqueness/Origin.ql @@ -1,8 +1,9 @@ import python +private import LegacyPointsTo string short_loc(Location l) { result = l.getFile().getShortName() + ":" + l.getStartLine() } -from ControlFlowNode use, Object obj, ControlFlowNode orig, int line +from ControlFlowNodeWithPointsTo use, Object obj, ControlFlowNode orig, int line where use.refersTo(obj, orig) and use.getLocation().getFile().getShortName() = "test.py" and diff --git a/python/ql/test/2/library-tests/six/pointsto.ql b/python/ql/test/2/library-tests/six/pointsto.ql index cca7eeede109..66a9d449a768 100644 --- a/python/ql/test/2/library-tests/six/pointsto.ql +++ b/python/ql/test/2/library-tests/six/pointsto.ql @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo string longname(Expr e) { result = e.(Name).getId() @@ -6,6 +7,6 @@ string longname(Expr e) { exists(Attribute a | a = e | result = longname(a.getObject()) + "." + a.getName()) } -from Expr e, Value v +from ExprWithPointsTo e, Value v where e.pointsTo(v) and e.getLocation().getFile().getShortName() = "test.py" select longname(e), v.toString() diff --git a/python/ql/test/3/library-tests/PointsTo/attributes/Test.ql b/python/ql/test/3/library-tests/PointsTo/attributes/Test.ql index cc191d7c7d84..ad7b74f8c581 100644 --- a/python/ql/test/3/library-tests/PointsTo/attributes/Test.ql +++ b/python/ql/test/3/library-tests/PointsTo/attributes/Test.ql @@ -1,5 +1,6 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode x where f.refersTo(o, x) select f.getLocation().getStartLine(), f.toString(), o.toString(), x.getLocation().getStartLine() diff --git a/python/ql/test/3/library-tests/PointsTo/attributes/TestWithType.ql b/python/ql/test/3/library-tests/PointsTo/attributes/TestWithType.ql index 2b4b8a8c70ca..dc19fefb4ce3 100644 --- a/python/ql/test/3/library-tests/PointsTo/attributes/TestWithType.ql +++ b/python/ql/test/3/library-tests/PointsTo/attributes/TestWithType.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ClassObject c, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ClassObject c, ControlFlowNode x where f.refersTo(o, c, x) select f.getLocation().getStartLine(), f.toString(), o.toString(), c.toString(), x.getLocation().getStartLine() diff --git a/python/ql/test/3/library-tests/PointsTo/class_properties/ClassValues.ql b/python/ql/test/3/library-tests/PointsTo/class_properties/ClassValues.ql index 3281b8d26e64..382312a4b5c6 100644 --- a/python/ql/test/3/library-tests/PointsTo/class_properties/ClassValues.ql +++ b/python/ql/test/3/library-tests/PointsTo/class_properties/ClassValues.ql @@ -1,10 +1,11 @@ import python +private import LegacyPointsTo from ClassValue cls, string res where exists(CallNode call | call.getFunction().(NameNode).getId() = "test" and - call.getAnArg().pointsTo(cls) + call.getAnArg().(ControlFlowNodeWithPointsTo).pointsTo(cls) ) and ( cls.isSequence() and diff --git a/python/ql/test/3/library-tests/PointsTo/imports/Runtime.ql b/python/ql/test/3/library-tests/PointsTo/imports/Runtime.ql index f694bc64cf01..19add3600a04 100644 --- a/python/ql/test/3/library-tests/PointsTo/imports/Runtime.ql +++ b/python/ql/test/3/library-tests/PointsTo/imports/Runtime.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Object o, ControlFlowNode orig +from int line, ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode orig where not f.getLocation().getFile().inStdlib() and f.refersTo(o, orig) and diff --git a/python/ql/test/3/library-tests/PointsTo/imports/RuntimeWithType.ql b/python/ql/test/3/library-tests/PointsTo/imports/RuntimeWithType.ql index 99a5f7b81630..09c330596c96 100644 --- a/python/ql/test/3/library-tests/PointsTo/imports/RuntimeWithType.ql +++ b/python/ql/test/3/library-tests/PointsTo/imports/RuntimeWithType.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Object o, ClassObject cls, ControlFlowNode orig +from int line, ControlFlowNodeWithPointsTo f, Object o, ClassObject cls, ControlFlowNode orig where not f.getLocation().getFile().inStdlib() and f.refersTo(o, cls, orig) and diff --git a/python/ql/test/3/library-tests/PointsTo/typehints/Values.ql b/python/ql/test/3/library-tests/PointsTo/typehints/Values.ql index 192468a2248c..be451d6f5960 100644 --- a/python/ql/test/3/library-tests/PointsTo/typehints/Values.ql +++ b/python/ql/test/3/library-tests/PointsTo/typehints/Values.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Context ctx, Value v, ControlFlowNode origin +from ControlFlowNodeWithPointsTo f, Context ctx, Value v, ControlFlowNode origin where f.pointsTo(ctx, v, origin) and f.getLocation().getFile().getBaseName() = "test.py" diff --git a/python/ql/test/3/library-tests/six/pointsto.ql b/python/ql/test/3/library-tests/six/pointsto.ql index cca7eeede109..66a9d449a768 100644 --- a/python/ql/test/3/library-tests/six/pointsto.ql +++ b/python/ql/test/3/library-tests/six/pointsto.ql @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo string longname(Expr e) { result = e.(Name).getId() @@ -6,6 +7,6 @@ string longname(Expr e) { exists(Attribute a | a = e | result = longname(a.getObject()) + "." + a.getName()) } -from Expr e, Value v +from ExprWithPointsTo e, Value v where e.pointsTo(v) and e.getLocation().getFile().getShortName() = "test.py" select longname(e), v.toString() diff --git a/python/ql/test/extractor-tests/exports/Test.ql b/python/ql/test/extractor-tests/exports/Test.ql index 50bc0a4ab56d..b04a904197ca 100644 --- a/python/ql/test/extractor-tests/exports/Test.ql +++ b/python/ql/test/extractor-tests/exports/Test.ql @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo -from Module m +from ModuleWithPointsTo m select m.toString(), m.getAnExport().toString() diff --git a/python/ql/test/library-tests/PointsTo/absent/Absent.ql b/python/ql/test/library-tests/PointsTo/absent/Absent.ql index 95cdf3a10844..b73eb9b5296c 100644 --- a/python/ql/test/library-tests/PointsTo/absent/Absent.ql +++ b/python/ql/test/library-tests/PointsTo/absent/Absent.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo import semmle.python.objects.Modules -from Value val, ControlFlowNode f +from Value val, ControlFlowNodeWithPointsTo f where f.pointsTo(val) select f, val diff --git a/python/ql/test/library-tests/PointsTo/calls/CallPointsTo.ql b/python/ql/test/library-tests/PointsTo/calls/CallPointsTo.ql index 10247a98f941..70a9bbd914b0 100644 --- a/python/ql/test/library-tests/PointsTo/calls/CallPointsTo.ql +++ b/python/ql/test/library-tests/PointsTo/calls/CallPointsTo.ql @@ -1,5 +1,6 @@ import python +private import LegacyPointsTo from CallNode call, Value func -where call.getFunction().pointsTo(func) +where call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(func) select call.getLocation().getStartLine(), call.toString(), func.toString() diff --git a/python/ql/test/library-tests/PointsTo/comparisons/PointsTo.ql b/python/ql/test/library-tests/PointsTo/comparisons/PointsTo.ql index 61f802a2ea5a..31d2f1cab36c 100644 --- a/python/ql/test/library-tests/PointsTo/comparisons/PointsTo.ql +++ b/python/ql/test/library-tests/PointsTo/comparisons/PointsTo.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Value v +from int line, ControlFlowNodeWithPointsTo f, Value v where any(ExprStmt s).getValue() = f.getNode() and line = f.getLocation().getStartLine() and diff --git a/python/ql/test/library-tests/PointsTo/decorators/Test.ql b/python/ql/test/library-tests/PointsTo/decorators/Test.ql index b5175845070d..b237ce513d2b 100644 --- a/python/ql/test/library-tests/PointsTo/decorators/Test.ql +++ b/python/ql/test/library-tests/PointsTo/decorators/Test.ql @@ -1,10 +1,11 @@ import python +private import LegacyPointsTo // We don't care about the internals of functools which vary from // version to version, just the end result. from NameNode f, Object o, ControlFlowNode x, int line where - f.refersTo(o, x) and + f.(ControlFlowNodeWithPointsTo).refersTo(o, x) and f.getLocation().getFile().getBaseName() = "test.py" and line = f.getLocation().getStartLine() select line, f.toString(), o.toString(), x.getLocation().toString() diff --git a/python/ql/test/library-tests/PointsTo/general/GlobalPointsTo.ql b/python/ql/test/library-tests/PointsTo/general/GlobalPointsTo.ql index 8caa54ccc237..e90674bab2e3 100644 --- a/python/ql/test/library-tests/PointsTo/general/GlobalPointsTo.ql +++ b/python/ql/test/library-tests/PointsTo/general/GlobalPointsTo.ql @@ -1,7 +1,8 @@ import python +private import LegacyPointsTo import interesting -from int line, ControlFlowNode f, Object o, ImportTimeScope n +from int line, ControlFlowNodeWithPointsTo f, Object o, ImportTimeScope n where of_interest(f, line) and f.refersTo(o) and diff --git a/python/ql/test/library-tests/PointsTo/general/LocalPointsTo.ql b/python/ql/test/library-tests/PointsTo/general/LocalPointsTo.ql index aee2cb11bf4c..76d711c00e08 100644 --- a/python/ql/test/library-tests/PointsTo/general/LocalPointsTo.ql +++ b/python/ql/test/library-tests/PointsTo/general/LocalPointsTo.ql @@ -6,10 +6,11 @@ */ import python +private import LegacyPointsTo import interesting import Util -from int line, ControlFlowNode f, Object o +from int line, ControlFlowNodeWithPointsTo f, Object o where of_interest(f, line) and f.refersTo(o) diff --git a/python/ql/test/library-tests/PointsTo/general/LocalPointsToType.ql b/python/ql/test/library-tests/PointsTo/general/LocalPointsToType.ql index fe14e61e01b4..8b5e008d60a0 100644 --- a/python/ql/test/library-tests/PointsTo/general/LocalPointsToType.ql +++ b/python/ql/test/library-tests/PointsTo/general/LocalPointsToType.ql @@ -1,8 +1,9 @@ import python +private import LegacyPointsTo import interesting import Util -from int line, ControlFlowNode f, Object o, ClassObject cls +from int line, ControlFlowNodeWithPointsTo f, Object o, ClassObject cls where of_interest(f, line) and f.refersTo(o, cls, _) diff --git a/python/ql/test/library-tests/PointsTo/guarded/PointsTo.ql b/python/ql/test/library-tests/PointsTo/guarded/PointsTo.ql index db4710786ac1..c264bf040136 100644 --- a/python/ql/test/library-tests/PointsTo/guarded/PointsTo.ql +++ b/python/ql/test/library-tests/PointsTo/guarded/PointsTo.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode x where f.refersTo(o, x) and exists(CallNode call | call.getFunction().getNode().(Name).getId() = "use" and call.getArg(0) = f) diff --git a/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.ql b/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.ql index 1c294e642820..f7c3d5a5c717 100644 --- a/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.ql +++ b/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ClassObject c, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ClassObject c, ControlFlowNode x where f.refersTo(o, c, x) and exists(CallNode call | call.getFunction().getNode().(Name).getId() = "use" and call.getArg(0) = f) diff --git a/python/ql/test/library-tests/PointsTo/import_star/Values.ql b/python/ql/test/library-tests/PointsTo/import_star/Values.ql index b54b8c6c78dc..f8c620662d63 100644 --- a/python/ql/test/library-tests/PointsTo/import_star/Values.ql +++ b/python/ql/test/library-tests/PointsTo/import_star/Values.ql @@ -1,5 +1,6 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Context ctx, Value v, ControlFlowNode origin +from ControlFlowNodeWithPointsTo f, Context ctx, Value v, ControlFlowNode origin where f.pointsTo(ctx, v, origin) select f, ctx, v diff --git a/python/ql/test/library-tests/PointsTo/indexing/Test.ql b/python/ql/test/library-tests/PointsTo/indexing/Test.ql index 694e4d8e98e0..d9a9d7156dea 100644 --- a/python/ql/test/library-tests/PointsTo/indexing/Test.ql +++ b/python/ql/test/library-tests/PointsTo/indexing/Test.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode x where f.refersTo(o, x) and f.getLocation().getFile().getBaseName() = "test.py" diff --git a/python/ql/test/library-tests/PointsTo/indexing/TestWithType.ql b/python/ql/test/library-tests/PointsTo/indexing/TestWithType.ql index 9f16abc2de07..b3888d5bf109 100644 --- a/python/ql/test/library-tests/PointsTo/indexing/TestWithType.ql +++ b/python/ql/test/library-tests/PointsTo/indexing/TestWithType.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ClassObject c, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ClassObject c, ControlFlowNode x where f.refersTo(o, c, x) and f.getLocation().getFile().getBaseName() = "test.py" diff --git a/python/ql/test/library-tests/PointsTo/inheritance/Self.ql b/python/ql/test/library-tests/PointsTo/inheritance/Self.ql index 050690fd1cb5..571f39d34ab5 100644 --- a/python/ql/test/library-tests/PointsTo/inheritance/Self.ql +++ b/python/ql/test/library-tests/PointsTo/inheritance/Self.ql @@ -1,5 +1,6 @@ import python +private import LegacyPointsTo from NameNode n, Object value, ClassObject cls -where n.getId() = "self" and n.refersTo(value, cls, _) +where n.getId() = "self" and n.(ControlFlowNodeWithPointsTo).refersTo(value, cls, _) select n.getNode().getLocation().getStartLine(), value.toString(), cls.toString() diff --git a/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.ql b/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.ql index 620cac343329..da4b46595e67 100644 --- a/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.ql +++ b/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.ql @@ -4,10 +4,11 @@ */ private import python +private import LegacyPointsTo import semmle.python.dataflow.new.DataFlow predicate pointsToOrigin(DataFlow::CfgNode pointer, DataFlow::CfgNode origin) { - origin.getNode() = pointer.getNode().pointsTo().getOrigin() + origin.getNode() = pointer.getNode().(ControlFlowNodeWithPointsTo).pointsTo().getOrigin() } module PointsToConfig implements DataFlow::ConfigSig { diff --git a/python/ql/test/library-tests/PointsTo/new/PointsToNone.ql b/python/ql/test/library-tests/PointsTo/new/PointsToNone.ql index c5009ad4cb67..8dca05a8a273 100644 --- a/python/ql/test/library-tests/PointsTo/new/PointsToNone.ql +++ b/python/ql/test/library-tests/PointsTo/new/PointsToNone.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo import Util -from ControlFlowNode f, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, ControlFlowNode x where f.refersTo(theNoneObject(), _, x) select locate(f.getLocation(), "abcdghijklmopqr"), f.toString(), x.getLocation().getStartLine() diff --git a/python/ql/test/library-tests/PointsTo/new/Values.ql b/python/ql/test/library-tests/PointsTo/new/Values.ql index 668e7a6b2655..9e49b44d37ea 100644 --- a/python/ql/test/library-tests/PointsTo/new/Values.ql +++ b/python/ql/test/library-tests/PointsTo/new/Values.ql @@ -1,7 +1,8 @@ import python +private import LegacyPointsTo import Util -from ControlFlowNode f, Context ctx, Value v, ControlFlowNode origin +from ControlFlowNodeWithPointsTo f, Context ctx, Value v, ControlFlowNode origin where f.pointsTo(ctx, v, origin) select locate(f.getLocation(), "abeghijklmnpqrstu"), f.toString(), ctx, vrepr(v), vrepr(v.getClass()) diff --git a/python/ql/test/library-tests/PointsTo/properties/Values.ql b/python/ql/test/library-tests/PointsTo/properties/Values.ql index 23416efc0ebd..6ab52924bb9e 100644 --- a/python/ql/test/library-tests/PointsTo/properties/Values.ql +++ b/python/ql/test/library-tests/PointsTo/properties/Values.ql @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo import semmle.python.objects.ObjectInternal string vrepr(Value v) { @@ -8,6 +9,6 @@ string vrepr(Value v) { v = ObjectInternal::boundMethod() and result = "builtin-class method" } -from ControlFlowNode f, Context ctx, Value v, ControlFlowNode origin +from ControlFlowNodeWithPointsTo f, Context ctx, Value v, ControlFlowNode origin where f.pointsTo(ctx, v, origin) select f.getLocation(), f.toString(), ctx, vrepr(v), vrepr(v.getClass()) diff --git a/python/ql/test/library-tests/PointsTo/regressions/missing/if-urlsplit-access/Test.ql b/python/ql/test/library-tests/PointsTo/regressions/missing/if-urlsplit-access/Test.ql index db02e9c4f085..87b4bb605d74 100644 --- a/python/ql/test/library-tests/PointsTo/regressions/missing/if-urlsplit-access/Test.ql +++ b/python/ql/test/library-tests/PointsTo/regressions/missing/if-urlsplit-access/Test.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode arg, CallNode call, string debug +from ControlFlowNodeWithPointsTo arg, CallNode call, string debug where call.getAnArg() = arg and call.getFunction().(NameNode).getId() = "check" and diff --git a/python/ql/test/library-tests/PointsTo/regressions/missing/re-compile/Test.ql b/python/ql/test/library-tests/PointsTo/regressions/missing/re-compile/Test.ql index db02e9c4f085..87b4bb605d74 100644 --- a/python/ql/test/library-tests/PointsTo/regressions/missing/re-compile/Test.ql +++ b/python/ql/test/library-tests/PointsTo/regressions/missing/re-compile/Test.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode arg, CallNode call, string debug +from ControlFlowNodeWithPointsTo arg, CallNode call, string debug where call.getAnArg() = arg and call.getFunction().(NameNode).getId() = "check" and diff --git a/python/ql/test/library-tests/PointsTo/regressions/missing/uncalled-function/Test.ql b/python/ql/test/library-tests/PointsTo/regressions/missing/uncalled-function/Test.ql index db02e9c4f085..87b4bb605d74 100644 --- a/python/ql/test/library-tests/PointsTo/regressions/missing/uncalled-function/Test.ql +++ b/python/ql/test/library-tests/PointsTo/regressions/missing/uncalled-function/Test.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode arg, CallNode call, string debug +from ControlFlowNodeWithPointsTo arg, CallNode call, string debug where call.getAnArg() = arg and call.getFunction().(NameNode).getId() = "check" and diff --git a/python/ql/test/library-tests/PointsTo/regressions/wrong/classmethod/Test.ql b/python/ql/test/library-tests/PointsTo/regressions/wrong/classmethod/Test.ql index 700e0dd72a59..a7be670276fd 100644 --- a/python/ql/test/library-tests/PointsTo/regressions/wrong/classmethod/Test.ql +++ b/python/ql/test/library-tests/PointsTo/regressions/wrong/classmethod/Test.ql @@ -1,10 +1,11 @@ import python +private import LegacyPointsTo from NameNode name, CallNode call, string debug where call.getAnArg() = name and call.getFunction().(NameNode).getId() = "check" and - if exists(name.pointsTo()) - then debug = name.pointsTo().toString() + if exists(name.(ControlFlowNodeWithPointsTo).pointsTo()) + then debug = name.(ControlFlowNodeWithPointsTo).pointsTo().toString() else debug = "" select name, debug diff --git a/python/ql/test/library-tests/PointsTo/super/SuperMethodCall.ql b/python/ql/test/library-tests/PointsTo/super/SuperMethodCall.ql index 86ad5bee155f..43149df47b81 100644 --- a/python/ql/test/library-tests/PointsTo/super/SuperMethodCall.ql +++ b/python/ql/test/library-tests/PointsTo/super/SuperMethodCall.ql @@ -1,11 +1,12 @@ import python +private import LegacyPointsTo import semmle.python.pointsto.PointsTo import semmle.python.pointsto.PointsToContext import semmle.python.objects.ObjectInternal from CallNode call, SuperInstance sup, BoundMethodObjectInternal bm where - call.getFunction().inferredValue() = bm and - call.getFunction().(AttrNode).getObject().inferredValue() = sup + call.getFunction().(ControlFlowNodeWithPointsTo).inferredValue() = bm and + call.getFunction().(AttrNode).getObject().(ControlFlowNodeWithPointsTo).inferredValue() = sup select call.getLocation().getStartLine(), call.toString(), bm.getFunction().getSource().(FunctionObject).getQualifiedName() diff --git a/python/ql/test/library-tests/objects/Strings.ql b/python/ql/test/library-tests/objects/Strings.ql index eca8dec51fd3..4c79df89dafd 100644 --- a/python/ql/test/library-tests/objects/Strings.ql +++ b/python/ql/test/library-tests/objects/Strings.ql @@ -1,5 +1,6 @@ import python +private import LegacyPointsTo -from StringObject s, ControlFlowNode f +from StringObject s, ControlFlowNodeWithPointsTo f where f.refersTo(s) select f.getLocation().toString(), s.getText() diff --git a/python/ql/test/library-tests/taint/extensions/ExtensionsLib.qll b/python/ql/test/library-tests/taint/extensions/ExtensionsLib.qll index 4ae53e94a381..e6874512f5cd 100644 --- a/python/ql/test/library-tests/taint/extensions/ExtensionsLib.qll +++ b/python/ql/test/library-tests/taint/extensions/ExtensionsLib.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo import semmle.python.dataflow.TaintTracking class SimpleTest extends TaintKind { @@ -30,7 +31,7 @@ predicate visit_call(CallNode call, FunctionObject func) { exists(AttrNode attr, ClassObject cls, string name | name.matches("visit\\_%") and func = cls.lookupAttribute(name) and - attr.getObject("visit").refersTo(_, cls, _) and + attr.getObject("visit").(ControlFlowNodeWithPointsTo).refersTo(_, cls, _) and attr = call.getFunction() ) } diff --git a/ql/ql/src/queries/performance/DontUseGetAQlClass.ql b/ql/ql/src/queries/performance/DontUseGetAQlClass.ql index dbf31cad4c3c..fcba654e1754 100644 --- a/ql/ql/src/queries/performance/DontUseGetAQlClass.ql +++ b/ql/ql/src/queries/performance/DontUseGetAQlClass.ql @@ -1,5 +1,5 @@ /** - * @name Don't use getAQlClass. + * @name Don't use getAQlClass * @description Any use of getAQlClass causes both compile-time and runtime to be significantly slower. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/performance/VarUnusedInDisjunct.ql b/ql/ql/src/queries/performance/VarUnusedInDisjunct.ql index 2d85b8721531..e6db3ad3d989 100644 --- a/ql/ql/src/queries/performance/VarUnusedInDisjunct.ql +++ b/ql/ql/src/queries/performance/VarUnusedInDisjunct.ql @@ -1,5 +1,5 @@ /** - * @name Var only used in one side of disjunct. + * @name Var only used in one side of disjunct * @description Only using a variable on one side of a disjunction can cause a cartesian product. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/AcronymsShouldBeCamelCase.ql b/ql/ql/src/queries/style/AcronymsShouldBeCamelCase.ql index e7d27efa66ca..70c2955ff010 100644 --- a/ql/ql/src/queries/style/AcronymsShouldBeCamelCase.ql +++ b/ql/ql/src/queries/style/AcronymsShouldBeCamelCase.ql @@ -1,5 +1,5 @@ /** - * @name Acronyms should be PascalCase/camelCase. + * @name Acronyms should be PascalCase/camelCase * @description Acronyms should be PascalCase/camelCase instead of upper-casing all the letters. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/IfWithElseNone.ql b/ql/ql/src/queries/style/IfWithElseNone.ql index c563c28e9f89..0c1c4b8b17bb 100644 --- a/ql/ql/src/queries/style/IfWithElseNone.ql +++ b/ql/ql/src/queries/style/IfWithElseNone.ql @@ -1,5 +1,5 @@ /** - * @name Use of 'if' with a 'none()' branch. + * @name Use of 'if' with a 'none()' branch * @description Using 'if p() then q() else none()' is bad style. It should be rewritten as 'p() and q()'. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/OverridingParameterName.ql b/ql/ql/src/queries/style/OverridingParameterName.ql index 723f4442fc2d..1a5630f60a09 100644 --- a/ql/ql/src/queries/style/OverridingParameterName.ql +++ b/ql/ql/src/queries/style/OverridingParameterName.ql @@ -1,5 +1,5 @@ /** - * @name Using a different parameter name than used in the super-predicate. + * @name Using a different parameter name than used in the super-predicate * @description Using another parameter can be an indication of copy-pasted code, or a mistake. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/RedundantAssignment.ql b/ql/ql/src/queries/style/RedundantAssignment.ql index 83f62364d9f7..8a741c190f8b 100644 --- a/ql/ql/src/queries/style/RedundantAssignment.ql +++ b/ql/ql/src/queries/style/RedundantAssignment.ql @@ -1,5 +1,5 @@ /** - * @name Redundant assignment. + * @name Redundant assignment * @description Assigning the same value twice is redundant. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/SuperfluousExists.ql b/ql/ql/src/queries/style/SuperfluousExists.ql index 84380330fa81..b1993b4994f8 100644 --- a/ql/ql/src/queries/style/SuperfluousExists.ql +++ b/ql/ql/src/queries/style/SuperfluousExists.ql @@ -1,5 +1,5 @@ /** - * @name Superfluous 'exists' conjunct. + * @name Superfluous 'exists' conjunct * @description Writing 'exists(x)' when the existence of X is implied by another conjunct is bad practice. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/SwappedParameterNames.ql b/ql/ql/src/queries/style/SwappedParameterNames.ql index c3b835f6ab8b..766b798ffdd3 100644 --- a/ql/ql/src/queries/style/SwappedParameterNames.ql +++ b/ql/ql/src/queries/style/SwappedParameterNames.ql @@ -1,5 +1,5 @@ /** - * @name Swapped parameter names in overriding predicate. + * @name Swapped parameter names in overriding predicate * @description Swapping the parameter names in an overriding method indicates an implementation mistake. * @kind problem * @problem.severity error diff --git a/ql/ql/src/queries/style/UseInstanceofExtension.ql b/ql/ql/src/queries/style/UseInstanceofExtension.ql index 33ceb5f1030d..9cb7a1cd6b5d 100644 --- a/ql/ql/src/queries/style/UseInstanceofExtension.ql +++ b/ql/ql/src/queries/style/UseInstanceofExtension.ql @@ -1,5 +1,5 @@ /** - * @name Suggest using non-extending subtype relationships. + * @name Suggest using non-extending subtype relationships * @description Non-extending subtypes ("instanceof extensions") are generally preferable to instanceof expressions in characteristic predicates. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/docs/ClassDocs.ql b/ql/ql/src/queries/style/docs/ClassDocs.ql index f7e5d7ac8d80..675d8976f168 100644 --- a/ql/ql/src/queries/style/docs/ClassDocs.ql +++ b/ql/ql/src/queries/style/docs/ClassDocs.ql @@ -1,5 +1,5 @@ /** - * @name Class QLDoc style. + * @name Class QLDoc style * @description The QLDoc for a class should start with "A", "An", or "The". * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/docs/PredicateDocs.ql b/ql/ql/src/queries/style/docs/PredicateDocs.ql index a8a271e7ab82..8ab415fec4a6 100644 --- a/ql/ql/src/queries/style/docs/PredicateDocs.ql +++ b/ql/ql/src/queries/style/docs/PredicateDocs.ql @@ -1,5 +1,5 @@ /** - * @name Predicate QLDoc style. + * @name Predicate QLDoc style * @description The QLDoc for a predicate should start with "Gets" or "Holds". * @kind problem * @problem.severity warning diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index a99e40177893..7c3ccd16c8a1 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,19 @@ +## 5.1.6 + +No user-facing changes. + +## 5.1.5 + +No user-facing changes. + +## 5.1.4 + +No user-facing changes. + +## 5.1.3 + +No user-facing changes. + ## 5.1.2 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/5.1.3.md b/ruby/ql/lib/change-notes/released/5.1.3.md new file mode 100644 index 000000000000..9af1eab14f34 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/5.1.3.md @@ -0,0 +1,3 @@ +## 5.1.3 + +No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/5.1.4.md b/ruby/ql/lib/change-notes/released/5.1.4.md new file mode 100644 index 000000000000..0fb22ded7d9d --- /dev/null +++ b/ruby/ql/lib/change-notes/released/5.1.4.md @@ -0,0 +1,3 @@ +## 5.1.4 + +No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/5.1.5.md b/ruby/ql/lib/change-notes/released/5.1.5.md new file mode 100644 index 000000000000..fa76be9d79ae --- /dev/null +++ b/ruby/ql/lib/change-notes/released/5.1.5.md @@ -0,0 +1,3 @@ +## 5.1.5 + +No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/5.1.6.md b/ruby/ql/lib/change-notes/released/5.1.6.md new file mode 100644 index 000000000000..74ba63bd37a6 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/5.1.6.md @@ -0,0 +1,3 @@ +## 5.1.6 + +No user-facing changes. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index d21c12fbe7fb..5ddeeed69fc2 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.1.2 +lastReleaseVersion: 5.1.6 diff --git a/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll b/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll index c04a85487acf..80ec45a3cf17 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll @@ -62,6 +62,8 @@ * should be prefixed with a tilde character (`~`). For example, `~Bar` can be used to indicate that * the type is not intended to match a static type. */ +overlay[local?] +module; private import codeql.util.Unit private import ApiGraphModelsSpecific as Specific diff --git a/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModelsExtensions.qll b/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModelsExtensions.qll index 4969da43be34..3f38c498f324 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModelsExtensions.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModelsExtensions.qll @@ -1,6 +1,8 @@ /** * Defines extensible predicates for contributing library models from data extensions. */ +overlay[local] +module; /** * Holds if the value at `(type, path)` should be seen as a flow diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index eec414da0f09..c3d1c07c2bc1 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 5.1.2 +version: 5.1.6 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 282fd2846352..ab000feb4a38 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,21 @@ +## 1.5.3 + +No user-facing changes. + +## 1.5.2 + +No user-facing changes. + +## 1.5.1 + +No user-facing changes. + +## 1.5.0 + +### Query Metadata Changes + +* Reduced the `security-severity` score of the `rb/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. + ## 1.4.8 No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.5.0.md b/ruby/ql/src/change-notes/released/1.5.0.md new file mode 100644 index 000000000000..491a3bf9ee42 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.5.0.md @@ -0,0 +1,5 @@ +## 1.5.0 + +### Query Metadata Changes + +* Reduced the `security-severity` score of the `rb/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. diff --git a/ruby/ql/src/change-notes/released/1.5.1.md b/ruby/ql/src/change-notes/released/1.5.1.md new file mode 100644 index 000000000000..7b24a64aca3a --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.5.1.md @@ -0,0 +1,3 @@ +## 1.5.1 + +No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.5.2.md b/ruby/ql/src/change-notes/released/1.5.2.md new file mode 100644 index 000000000000..384c27833f18 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.5.2.md @@ -0,0 +1,3 @@ +## 1.5.2 + +No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.5.3.md b/ruby/ql/src/change-notes/released/1.5.3.md new file mode 100644 index 000000000000..2e9bcb5e6636 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.5.3.md @@ -0,0 +1,3 @@ +## 1.5.3 + +No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 16e6425ae7e4..232224b0e267 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.8 +lastReleaseVersion: 1.5.3 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index aaac6c00522f..480f35c0170b 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.4.8 +version: 1.5.3 groups: - ruby - queries diff --git a/ruby/ql/src/queries/security/cwe-020/OverlyLargeRange.ql b/ruby/ql/src/queries/security/cwe-020/OverlyLargeRange.ql index 62b088355b54..6f0f529a31dd 100644 --- a/ruby/ql/src/queries/security/cwe-020/OverlyLargeRange.ql +++ b/ruby/ql/src/queries/security/cwe-020/OverlyLargeRange.ql @@ -4,7 +4,7 @@ * This may allow an attacker to bypass a filter or sanitizer. * @kind problem * @problem.severity warning - * @security-severity 5.0 + * @security-severity 4.0 * @precision high * @id rb/overly-large-range * @tags correctness diff --git a/ruby/ql/src/queries/security/cwe-327/WeakSensitiveDataHashing.qhelp b/ruby/ql/src/queries/security/cwe-327/WeakSensitiveDataHashing.qhelp index 422cbb835141..33d0c845a66d 100644 --- a/ruby/ql/src/queries/security/cwe-327/WeakSensitiveDataHashing.qhelp +++ b/ruby/ql/src/queries/security/cwe-327/WeakSensitiveDataHashing.qhelp @@ -67,7 +67,7 @@ The following example shows two functions for checking whether the hash of a certificate matches a known value -- to prevent tampering. - The first function uses MD5 that is known to be vulnerable to collision attacks. + The first function uses SHA-1 that is known to be vulnerable to collision attacks. The second function uses SHA-256 that is a strong cryptographic hashing function.

    diff --git a/ruby/ql/src/queries/variables/UnusedParameter.ql b/ruby/ql/src/queries/variables/UnusedParameter.ql index d212ee883f74..2dc3e0b5341c 100644 --- a/ruby/ql/src/queries/variables/UnusedParameter.ql +++ b/ruby/ql/src/queries/variables/UnusedParameter.ql @@ -1,5 +1,5 @@ /** - * @name Unused parameter. + * @name Unused parameter * @description A parameter that is not used later on, or whose value is always overwritten, * can be removed. * @kind problem diff --git a/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql b/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql index 039fcfbf1c96..160aed490405 100644 --- a/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql +++ b/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql @@ -1,5 +1,5 @@ /** - * @name Fetch a subset of valid access paths of input and output parameters of a method (framework mode). + * @name Fetch a subset of valid access paths of input and output parameters of a method (framework mode) * @description A list of access paths for input and output parameters of a method. Excludes test and generated code. * @kind table * @id ruby/utils/modeleditor/framework-mode-access-paths diff --git a/ruby/ql/test/library-tests/security/CryptoAlgorithms.expected b/ruby/ql/test/library-tests/security/CryptoAlgorithms.expected index eedddb2df9ff..3f1ba8e12c67 100644 --- a/ruby/ql/test/library-tests/security/CryptoAlgorithms.expected +++ b/ruby/ql/test/library-tests/security/CryptoAlgorithms.expected @@ -34,6 +34,8 @@ strongHashingAlgorithms | SHA3256 | | SHA3384 | | SHA3512 | +| SHA512224 | +| SHA512256 | | SHAKE128 | | SHAKE256 | | SM3 | diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index ffe947da742b..fc9e0d0f30c5 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -235,7 +235,6 @@ lib/codeql/rust/elements/internal/AwaitExprConstructor.qll 44ff1653e73d5b9f6885c lib/codeql/rust/elements/internal/BecomeExprConstructor.qll ba073aaa256cb8827a0307c3128d50f62b11aac0b1f324e48c95f30351a9b942 3a787ded505c3158fa4f4923f66e8ecdcb7b5f86f27f64c5412dc32dca031f18 lib/codeql/rust/elements/internal/BinaryExprConstructor.qll 7f9b17757f78b9fb7c46e21d2040a77fa50083bef4911c8464991c3d1ad91d87 a59390cd8e896c0bfbdc9ba0674e06d980ffcefa710fbc9886be52ed427e9717 lib/codeql/rust/elements/internal/BlockExprConstructor.qll 438337c807645e98a01440f3f4610d68b0567ba15c8f51dc43bf5a30c9af3696 48ce7a546910c884619762349b8ada9836284f8008298fdb0070a38f7ddf25a0 -lib/codeql/rust/elements/internal/BlockExprImpl.qll 36ac09e4a6eeeec22919b62b1d004bdb5bb2527e67932c308aec383a770768d6 3b4b2a2014f6fe075c63a2d633b297566b548ef2e4343cadf067a9edbcadc876 lib/codeql/rust/elements/internal/BoxPatConstructor.qll 153f110ba25fd6c889092bfd16f73bb610fa60d6e0c8965d5f44d2446fcd48a2 9324cf0d8aa29945551bf8ab64801d598f57aab8cd4e19bcd4e9ef8a4a4e06eb lib/codeql/rust/elements/internal/BreakExprConstructor.qll 356be043c28e0b34fdf925a119c945632ee883c6f5ebb9a27003c6a8d250afd9 bb77e66b04bb9489340e7506931559b94285c6904b6f9d2f83b214cba4f3cfd5 lib/codeql/rust/elements/internal/CallExprConstructor.qll 742b38e862e2cf82fd1ecc4d4fc5b4782a9c7c07f031452b2bae7aa59d5aa13a cad6e0a8be21d91b20ac2ec16cab9c30eae810b452c0f1992ed87d5c7f4144dc @@ -247,7 +246,6 @@ lib/codeql/rust/elements/internal/ConstArgImpl.qll dc7e7b5fe1a6eeb61dd30a55a3ed2 lib/codeql/rust/elements/internal/ConstBlockPatConstructor.qll ddb4a0045635d477e87360ecafec0ba90ddcffc6e62996eb6e7edd5a5d65b860 442061d0497a615b3f008b990f5e3c4f045110f76500eff81a7f44ffd1319acf lib/codeql/rust/elements/internal/ConstBlockPatImpl.qll 2082a3244c21e03b6dadfba9b3f97a00981324e10d1465d3a51cf3c921eb89e4 889e347834d8c6e90dfef9714af073b3b2193f6830f1c8356cee9c6573b3ecb4 lib/codeql/rust/elements/internal/ConstConstructor.qll 72a31fd9b8b3fd910e35af1b2b30fa54cc4d9e14e7eabdb94b4cd2af95b2df38 3edc0a82a7b446fdfd3e71947801f3c7cac010b2a217b8accb69980387bdd67a -lib/codeql/rust/elements/internal/ConstImpl.qll 058b474b9aaf2ad687ab1e62ebc8a51ba93d9ea4340c2f41768b71613ac330c1 c2c5d4746a588096cbbdfa4355ee73d806c7a4ac9507930a120e49060f9d5347 lib/codeql/rust/elements/internal/ConstParamConstructor.qll f6645f952aac87c7e00e5e9661275312a1df47172088b4de6b5a253d5c4ed048 eda737470a7b89cf6a02715c9147d074041d6d00fd50d5b2d70266add6e4b571 lib/codeql/rust/elements/internal/ConstParamImpl.qll c6995be58f84d1df65897c80f7ee3dd8eb410bb3e634ff1bfe1be94dfb3fdf32 bcfb5547b40f24bcec20056fe1d36724b734c920b0bc7538fe2974b03f4478fe lib/codeql/rust/elements/internal/ContinueExprConstructor.qll cd93f1b35ccdb031d7e8deba92f6a76187f6009c454f3ea07e89ba459de57ca6 6f658e7d580c4c9068b01d6dd6f72888b8800860668a6653f8c3b27dc9996935 @@ -288,7 +286,6 @@ lib/codeql/rust/elements/internal/ImplConstructor.qll 24edccca59f70d812d1458b412 lib/codeql/rust/elements/internal/ImplTraitTypeReprConstructor.qll 1ed355e5e56f432b24b6f4778e4dc45c6e65095190cacb7a5015529e0c9d01f8 c8505185a042da4eb20a0cc32323194a0290c4bf821c7e0fce7351b194b10f31 lib/codeql/rust/elements/internal/IndexExprConstructor.qll 99bdc3d793c4dbd993860da60abe2b7c604345d645e86916462bc55a6939a5d1 3fe9d7da725956903707806aadbecac8d5b3874e8bed63c9bab54fff630e75dd lib/codeql/rust/elements/internal/InferTypeReprConstructor.qll bc5f16853401617fc9c5af8a1287a23c5921df1b615cfbe2d7c7a70145ecfcbd da93bd28ea2daade2cbb0a729be3fbf05f72bc02009565c7bb062e4f68fdb9e7 -lib/codeql/rust/elements/internal/ItemImpl.qll e3fb78d572ce1c3cc857d2671bd71ff4d7850321acfddc5f15533ff87accda79 fbabc2081e4b2773b04938d57bb51af908c80b7bc53c3127c74ab5d4fb9837bc lib/codeql/rust/elements/internal/ItemListConstructor.qll 08af3bd12536941c3dd4a43c81cc861be24325e242e2593c087a3ce632674291 2fa166159c409d2aaffa73a30babb40829a6de580bd40894d909ee6152801082 lib/codeql/rust/elements/internal/ItemListImpl.qll 195dbe93c334ad2bfc29db530bda9aaea88fc31696b2f230faae9e6c2ecb74a8 e498983a5b2f7a91e2fd336e85ac17e521a18c677784a0788d95bb283f3652e7 lib/codeql/rust/elements/internal/LabelConstructor.qll 1f814c94251e664bfa1b1a606aef995382e40e78d4f953350ec951ee0bc8bd34 3157fb8c7c6bd365a739f217ad73ba1e0b65ccd59b922e5ab034e3449915b36c @@ -569,7 +566,7 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll eaa0cd4402d3665013d47e lib/codeql/rust/elements/internal/generated/ParenExpr.qll 812d2ff65079277f39f15c084657a955a960a7c1c0e96dd60472a58d56b945eb eb8c607f43e1fcbb41f37a10de203a1db806690e10ff4f04d48ed874189cb0eb lib/codeql/rust/elements/internal/generated/ParenPat.qll 24f9dc7fce75827d6fddb856cd48f80168143151b27295c0bab6db5a06567a09 ebadbc6f5498e9ed754b39893ce0763840409a0721036a25b56e1ead7dcc09aa lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 03f5c5b96a37adeb845352d7fcea3e098da9050e534972d14ac0f70d60a2d776 ed3d6e5d02086523087adebce4e89e35461eb95f2a66d1d4100fe23fc691b126 -lib/codeql/rust/elements/internal/generated/ParentChild.qll 6e86fd9b6d5ec1b4aeeb5472cc6d2ebf3328bbaa8605cf52c9add56652cc47dc 3cf2a8e12ffb6631221c7b94fa112e8e3be96efba697996862685a87b2c9aff7 +lib/codeql/rust/elements/internal/generated/ParentChild.qll f04ca3d02170f7e532a480cc81748cf04f1b022d5e0e32ffcdf0f15c8f1961aa 999104d69a5435c9cab594e04b82ed26ae38b1b1d2ac1dbbb315a433c586f941 lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll d901fdc8142a5b8847cc98fc2afcfd16428b8ace4fbffb457e761b5fd3901a77 5dbb0aea5a13f937da666ccb042494af8f11e776ade1459d16b70a4dd193f9fb lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4 lib/codeql/rust/elements/internal/generated/Path.qll 9b12afb46fc5a9ad3a811b05472621bbecccb900c47504feb7f29d96b28421ca bcacbffc36fb3e0c9b26523b5963af0ffa9fd6b19f00a2a31bdb2316071546bd @@ -584,7 +581,7 @@ lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 8d0ea4f6c7f8203340bf lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9 lib/codeql/rust/elements/internal/generated/RangePat.qll 80826a6a6868a803aa2372e31c52a03e1811a3f1f2abdb469f91ca0bfdd9ecb6 34ee1e208c1690cba505dff2c588837c0cd91e185e2a87d1fe673191962276a9 -lib/codeql/rust/elements/internal/generated/Raw.qll f50925f4925848cef73003adf01420566ca3efa16f491eadac62a30972ee9204 17d62252413618e1fa162c6c0b303ccfcac5f7f70cc170d739b20cc95f57035b +lib/codeql/rust/elements/internal/generated/Raw.qll 14758dc2e2a9af251f24e24516eab0fc95d334c1da06f418ea5da3c5521642c9 a8b6637f57293a85714cc8761f8fd1e23780d58f3873acaa3c77acd9cbfcf19f lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66 lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05 lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll 5b0663a6d234572fb3e467e276d019415caa95ef006438cc59b7af4e1783161e 0e27c8a8f0e323c0e4d6db01fca821bf07c0864d293cdf96fa891b10820c1e4b @@ -609,7 +606,7 @@ lib/codeql/rust/elements/internal/generated/StructFieldList.qll 5da528a51a6a5db9 lib/codeql/rust/elements/internal/generated/StructPat.qll c76fa005c2fd0448a8803233e1e8818c4123301eb66ac5cf69d0b9eaafc61e98 6e0dffccdce24bca20e87d5ba0f0995c9a1ae8983283e71e7dbfcf6fffc67a58 lib/codeql/rust/elements/internal/generated/StructPatField.qll 5b5c7302dbc4a902ca8e69ff31875c867e295a16a626ba3cef29cd0aa248f179 4e192a0df79947f5cb0d47fdbbba7986137a6a40a1be92ae119873e2fad67edf lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll 1a95a1bd9f64fb18e9571657cf2d02a8b13c747048a1f0f74baf31b91f0392ad fc274e414ff4ed54386046505920de92755ad0b4d39a7523cdffa4830bd53b37 -lib/codeql/rust/elements/internal/generated/Synth.qll 4c741d502d21d449c4e01010776f767c69b408c80ce7d10784b599463bcfd0e3 c76b8628663c126914ead897c779ce782294e9109125d61de958e0eee543abce +lib/codeql/rust/elements/internal/generated/Synth.qll a8ea364358a2bc3a9226d451c0867e89c29509a0f54dd88ed23c77045db2c85a a44de5e84a63cb5a1bfa66b0df33bf28c9f8b6628393d0f3b2f6215dabee47bd lib/codeql/rust/elements/internal/generated/SynthConstructors.qll f41abfc73415b7accb38da7c107faebfe6843c270ad54e0e54a96e930dfe479a f41abfc73415b7accb38da7c107faebfe6843c270ad54e0e54a96e930dfe479a lib/codeql/rust/elements/internal/generated/Token.qll 77a91a25ca5669703cf3a4353b591cef4d72caa6b0b9db07bb9e005d69c848d1 2fdffc4882ed3a6ca9ac6d1fb5f1ac5a471ca703e2ffdc642885fa558d6e373b lib/codeql/rust/elements/internal/generated/TokenTree.qll 1a3c4f5f30659738641abdd28cb793dab3cfde484196b59656fc0a2767e53511 de2ebb210c7759ef7a6f7ee9f805e1cac879221287281775fc80ba34a5492edf diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index df4a65e7d957..99728972ec7a 100644 --- a/rust/ql/.gitattributes +++ b/rust/ql/.gitattributes @@ -237,7 +237,6 @@ /lib/codeql/rust/elements/internal/BecomeExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/BinaryExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/BlockExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/BlockExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/BoxPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/BreakExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/CallExprConstructor.qll linguist-generated @@ -249,7 +248,6 @@ /lib/codeql/rust/elements/internal/ConstBlockPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ConstBlockPatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ConstConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ConstImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ConstParamConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ConstParamImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ContinueExprConstructor.qll linguist-generated @@ -290,7 +288,6 @@ /lib/codeql/rust/elements/internal/ImplTraitTypeReprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/IndexExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/InferTypeReprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ItemImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ItemListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ItemListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/LabelConstructor.qll linguist-generated diff --git a/rust/ql/examples/qlpack.lock.yml b/rust/ql/examples/qlpack.lock.yml new file mode 100644 index 000000000000..06dd07fc7dc7 --- /dev/null +++ b/rust/ql/examples/qlpack.lock.yml @@ -0,0 +1,4 @@ +--- +dependencies: {} +compiled: false +lockVersion: 1.0.0 diff --git a/rust/ql/examples/qlpack.yml b/rust/ql/examples/qlpack.yml new file mode 100644 index 000000000000..41adabd2c70e --- /dev/null +++ b/rust/ql/examples/qlpack.yml @@ -0,0 +1,7 @@ +name: codeql/rust-examples +groups: + - rust + - examples +dependencies: + codeql/rust-all: ${workspace} +warnOnImplicitThis: true diff --git a/rust/ql/examples/snippets/empty_if.ql b/rust/ql/examples/snippets/empty_if.ql new file mode 100644 index 000000000000..f21839459799 --- /dev/null +++ b/rust/ql/examples/snippets/empty_if.ql @@ -0,0 +1,18 @@ +/** + * @name Empty 'if' expression + * @description Finds 'if' expressions where the "then" branch is empty and no + * "else" branch exists. + * @id rust/examples/empty-if + * @tags example + */ + +import rust + +// find 'if' expressions... +from IfExpr ifExpr +where + // where the 'then' branch is empty + ifExpr.getThen().getStmtList().getNumberOfStmtOrExpr() = 0 and + // and no 'else' branch exists + not ifExpr.hasElse() +select ifExpr, "This 'if' expression is redundant." diff --git a/rust/ql/examples/snippets/simple_constant_password.ql b/rust/ql/examples/snippets/simple_constant_password.ql new file mode 100644 index 000000000000..b0902235a96d --- /dev/null +++ b/rust/ql/examples/snippets/simple_constant_password.ql @@ -0,0 +1,48 @@ +/** + * @name Constant password + * @description Finds places where a string literal is used in a function call + * argument that looks like a password. + * @id rust/examples/simple-constant-password + * @tags example + */ + +import rust +import codeql.rust.dataflow.DataFlow +import codeql.rust.dataflow.TaintTracking + +/** + * A data flow configuration for tracking flow from a string literal to a function + * call argument that looks like a password. For example: + * ``` + * fn set_password(password: &str) { ... } + * + * ... + * + * let pwd = "123456"; // source + * set_password(pwd); // sink (argument 0) + * ``` + */ +module ConstantPasswordConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node node) { + // `node` is a string literal + node.asExpr() instanceof StringLiteralExpr + } + + predicate isSink(DataFlow::Node node) { + // `node` is an argument whose corresponding parameter name matches the pattern "pass%" + exists(CallExpr call, Function target, int argIndex, Variable v | + call.getStaticTarget() = target and + v.getParameter() = target.getParam(argIndex) and + v.getText().matches("pass%") and + call.getArg(argIndex) = node.asExpr() + ) + } +} + +// instantiate the data flow configuration as a global taint tracking module +module ConstantPasswordFlow = TaintTracking::Global; + +// report flows from sources to sinks +from DataFlow::Node sourceNode, DataFlow::Node sinkNode +where ConstantPasswordFlow::flow(sourceNode, sinkNode) +select sinkNode, "The value $@ is used as a constant password.", sourceNode, sourceNode.toString() diff --git a/rust/ql/examples/snippets/simple_sql_injection.ql b/rust/ql/examples/snippets/simple_sql_injection.ql new file mode 100644 index 000000000000..653c761d7ebb --- /dev/null +++ b/rust/ql/examples/snippets/simple_sql_injection.ql @@ -0,0 +1,39 @@ +/** + * @name Database query built from user-controlled sources + * @description Finds places where a value from a remote or local user input + * is used as the first argument of a call to `sqlx_core::query::query`. + * @id rust/examples/simple-sql-injection + * @tags example + */ + +import rust +import codeql.rust.dataflow.DataFlow +import codeql.rust.dataflow.TaintTracking +import codeql.rust.Concepts + +/** + * A data flow configuration for tracking flow from a user input (threat model + * source) to the first argument of a call to `sqlx_core::query::query`. + */ +module SqlInjectionConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node node) { + // `node` is a user input (threat model source) + node instanceof ActiveThreatModelSource + } + + predicate isSink(DataFlow::Node node) { + // `node` is the first argument of a call to `sqlx_core::query::query` + exists(CallExpr call | + call.getStaticTarget().getCanonicalPath() = "sqlx_core::query::query" and + call.getArg(0) = node.asExpr() + ) + } +} + +// instantiate the data flow configuration as a global taint tracking module +module SqlInjectionFlow = TaintTracking::Global; + +// report flows from sources to sinks +from DataFlow::Node sourceNode, DataFlow::Node sinkNode +where SqlInjectionFlow::flow(sourceNode, sinkNode) +select sinkNode, "This query depends on a $@.", sourceNode, "user-provided value" diff --git a/rust/ql/integration-tests/hello-workspace/exe/src/main.rs b/rust/ql/integration-tests/hello-workspace/exe/src/main.rs index 5bb9375719ea..63670ff63a37 100644 --- a/rust/ql/integration-tests/hello-workspace/exe/src/main.rs +++ b/rust/ql/integration-tests/hello-workspace/exe/src/main.rs @@ -7,4 +7,5 @@ mod a_module; fn main() { my_macro2!(); // $ item=my_macro2 hello(); // $ item=HELLO + lib::extern_crate_alias::a_module::hello(); // $ item=HELLO } diff --git a/rust/ql/integration-tests/hello-workspace/functions.expected b/rust/ql/integration-tests/hello-workspace/functions.expected index 6d8aa73cd833..b6d54fa07d3e 100644 --- a/rust/ql/integration-tests/hello-workspace/functions.expected +++ b/rust/ql/integration-tests/hello-workspace/functions.expected @@ -1,2 +1,2 @@ -| exe/src/main.rs:7:1:10:1 | fn main | +| exe/src/main.rs:7:1:11:1 | fn main | | lib/src/a_module/mod.rs:1:1:4:1 | fn hello | diff --git a/rust/ql/integration-tests/hello-workspace/lib/src/lib.rs b/rust/ql/integration-tests/hello-workspace/lib/src/lib.rs index f313f76edadd..7999517c72d4 100644 --- a/rust/ql/integration-tests/hello-workspace/lib/src/lib.rs +++ b/rust/ql/integration-tests/hello-workspace/lib/src/lib.rs @@ -15,3 +15,5 @@ mod macros { } pub mod a_module; + +pub extern crate self as extern_crate_alias; diff --git a/rust/ql/integration-tests/hello-workspace/path-resolution.ql b/rust/ql/integration-tests/hello-workspace/path-resolution.ql index 9ec97b61eeb3..574a95531558 100644 --- a/rust/ql/integration-tests/hello-workspace/path-resolution.ql +++ b/rust/ql/integration-tests/hello-workspace/path-resolution.ql @@ -2,7 +2,7 @@ import rust import codeql.rust.internal.PathResolution import utils.test.PathResolutionInlineExpectationsTest -query predicate resolveDollarCrate(RelevantPath p, Crate c) { +query predicate resolveDollarCrate(PathExt p, Crate c) { c = resolvePath(p) and p.isDollarCrate() and p.fromSource() and diff --git a/rust/ql/integration-tests/hello-workspace/summary.cargo.expected b/rust/ql/integration-tests/hello-workspace/summary.cargo.expected index cb07b66d437d..11fba34f9019 100644 --- a/rust/ql/integration-tests/hello-workspace/summary.cargo.expected +++ b/rust/ql/integration-tests/hello-workspace/summary.cargo.expected @@ -9,8 +9,8 @@ | Inconsistencies - Path resolution | 0 | | Inconsistencies - SSA | 0 | | Inconsistencies - data flow | 0 | -| Lines of code extracted | 21 | -| Lines of user code extracted | 21 | +| Lines of code extracted | 23 | +| Lines of user code extracted | 23 | | Macro calls - resolved | 10 | | Macro calls - total | 10 | | Macro calls - unresolved | 0 | diff --git a/rust/ql/integration-tests/hello-workspace/summary.rust-project.expected b/rust/ql/integration-tests/hello-workspace/summary.rust-project.expected index cb07b66d437d..11fba34f9019 100644 --- a/rust/ql/integration-tests/hello-workspace/summary.rust-project.expected +++ b/rust/ql/integration-tests/hello-workspace/summary.rust-project.expected @@ -9,8 +9,8 @@ | Inconsistencies - Path resolution | 0 | | Inconsistencies - SSA | 0 | | Inconsistencies - data flow | 0 | -| Lines of code extracted | 21 | -| Lines of user code extracted | 21 | +| Lines of code extracted | 23 | +| Lines of user code extracted | 23 | | Macro calls - resolved | 10 | | Macro calls - total | 10 | | Macro calls - unresolved | 0 | diff --git a/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected b/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected index 70e1bcb10647..9b10079767ba 100644 --- a/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected @@ -10,7 +10,9 @@ ql/rust/ql/src/queries/diagnostics/UnextractedElements.ql ql/rust/ql/src/queries/diagnostics/UnresolvedMacroCalls.ql ql/rust/ql/src/queries/security/CWE-020/RegexInjection.ql ql/rust/ql/src/queries/security/CWE-022/TaintedPath.ql +ql/rust/ql/src/queries/security/CWE-079/XSS.ql ql/rust/ql/src/queries/security/CWE-089/SqlInjection.ql +ql/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql ql/rust/ql/src/queries/security/CWE-311/CleartextTransmission.ql ql/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql ql/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql diff --git a/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected b/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected index 596fdef3b20e..4059cb40ab61 100644 --- a/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected @@ -10,8 +10,10 @@ ql/rust/ql/src/queries/diagnostics/UnextractedElements.ql ql/rust/ql/src/queries/diagnostics/UnresolvedMacroCalls.ql ql/rust/ql/src/queries/security/CWE-020/RegexInjection.ql ql/rust/ql/src/queries/security/CWE-022/TaintedPath.ql +ql/rust/ql/src/queries/security/CWE-079/XSS.ql ql/rust/ql/src/queries/security/CWE-089/SqlInjection.ql ql/rust/ql/src/queries/security/CWE-117/LogInjection.ql +ql/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql ql/rust/ql/src/queries/security/CWE-311/CleartextTransmission.ql ql/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql ql/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql diff --git a/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected b/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected index 102c63e7942b..2d660d4f3a3e 100644 --- a/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected @@ -10,8 +10,10 @@ ql/rust/ql/src/queries/diagnostics/UnextractedElements.ql ql/rust/ql/src/queries/diagnostics/UnresolvedMacroCalls.ql ql/rust/ql/src/queries/security/CWE-020/RegexInjection.ql ql/rust/ql/src/queries/security/CWE-022/TaintedPath.ql +ql/rust/ql/src/queries/security/CWE-079/XSS.ql ql/rust/ql/src/queries/security/CWE-089/SqlInjection.ql ql/rust/ql/src/queries/security/CWE-117/LogInjection.ql +ql/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql ql/rust/ql/src/queries/security/CWE-311/CleartextTransmission.ql ql/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql ql/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql diff --git a/rust/ql/lib/CHANGELOG.md b/rust/ql/lib/CHANGELOG.md index 7e8575b03be4..e2aeb59f40ba 100644 --- a/rust/ql/lib/CHANGELOG.md +++ b/rust/ql/lib/CHANGELOG.md @@ -1,3 +1,27 @@ +## 0.2.2 + +No user-facing changes. + +## 0.2.1 + +No user-facing changes. + +## 0.2.0 + +### Breaking Changes + +* The type `DataFlow::Node` is now based directly on the AST instead of the CFG, which means that predicates like `asExpr()` return AST nodes instead of CFG nodes. + +### Minor Analysis Improvements + +* Added more detailed models for `std::fs` and `std::path`. + +## 0.1.20 + +### Minor Analysis Improvements + +* Added models for cookie methods in the `poem` crate. + ## 0.1.19 ### Major Analysis Improvements diff --git a/rust/ql/lib/change-notes/released/0.1.20.md b/rust/ql/lib/change-notes/released/0.1.20.md new file mode 100644 index 000000000000..12d4a7a3d5ac --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.1.20.md @@ -0,0 +1,5 @@ +## 0.1.20 + +### Minor Analysis Improvements + +* Added models for cookie methods in the `poem` crate. diff --git a/rust/ql/lib/change-notes/released/0.2.0.md b/rust/ql/lib/change-notes/released/0.2.0.md new file mode 100644 index 000000000000..a419eea18742 --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.2.0.md @@ -0,0 +1,9 @@ +## 0.2.0 + +### Breaking Changes + +* The type `DataFlow::Node` is now based directly on the AST instead of the CFG, which means that predicates like `asExpr()` return AST nodes instead of CFG nodes. + +### Minor Analysis Improvements + +* Added more detailed models for `std::fs` and `std::path`. diff --git a/rust/ql/lib/change-notes/released/0.2.1.md b/rust/ql/lib/change-notes/released/0.2.1.md new file mode 100644 index 000000000000..3dbfc85fe11d --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.2.1.md @@ -0,0 +1,3 @@ +## 0.2.1 + +No user-facing changes. diff --git a/rust/ql/lib/change-notes/released/0.2.2.md b/rust/ql/lib/change-notes/released/0.2.2.md new file mode 100644 index 000000000000..98e69fd07723 --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.2.2.md @@ -0,0 +1,3 @@ +## 0.2.2 + +No user-facing changes. diff --git a/rust/ql/lib/codeql-pack.release.yml b/rust/ql/lib/codeql-pack.release.yml index de6e4c490684..16a06790aa83 100644 --- a/rust/ql/lib/codeql-pack.release.yml +++ b/rust/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.19 +lastReleaseVersion: 0.2.2 diff --git a/rust/ql/lib/codeql/rust/Concepts.qll b/rust/ql/lib/codeql/rust/Concepts.qll index 20247e088752..2e2220430e1d 100644 --- a/rust/ql/lib/codeql/rust/Concepts.qll +++ b/rust/ql/lib/codeql/rust/Concepts.qll @@ -4,14 +4,13 @@ * provide concrete subclasses. */ +private import rust private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.internal.DataFlowImpl private import codeql.Locations private import codeql.threatmodels.ThreatModels private import codeql.rust.Frameworks private import codeql.rust.dataflow.FlowSource -private import codeql.rust.controlflow.ControlFlowGraph as Cfg -private import codeql.rust.controlflow.CfgNodes as CfgNodes private import codeql.concepts.ConceptsShared private module ConceptsShared = ConceptsMake; @@ -345,16 +344,16 @@ module Path { SafeAccessCheck() { this = DataFlow::BarrierGuard::getABarrierNode() } } - private predicate safeAccessCheck(CfgNodes::AstCfgNode g, Cfg::CfgNode node, boolean branch) { - g.(SafeAccessCheck::Range).checks(node, branch) + private predicate safeAccessCheck(AstNode g, Expr e, boolean branch) { + g.(SafeAccessCheck::Range).checks(e, branch) } /** Provides a class for modeling new path safety checks. */ module SafeAccessCheck { /** A data-flow node that checks that a path is safe to access in some way, for example by having a controlled prefix. */ - abstract class Range extends CfgNodes::AstCfgNode { - /** Holds if this guard validates `node` upon evaluating to `branch`. */ - abstract predicate checks(Cfg::CfgNode node, boolean branch); + abstract class Range extends AstNode { + /** Holds if this guard validates `e` upon evaluating to `branch`. */ + abstract predicate checks(Expr e, boolean branch); } } } diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll b/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll index 0250f1cbc435..33da4db473eb 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll @@ -1,5 +1,6 @@ private import codeql.util.Boolean private import codeql.rust.controlflow.ControlFlowGraph +private import codeql.rust.elements.internal.VariableImpl::Impl as VariableImpl private import rust newtype TCompletion = @@ -123,13 +124,7 @@ class BooleanCompletion extends ConditionalCompletion, TBooleanCompletion { */ private predicate cannotCauseMatchFailure(Pat pat) { pat instanceof RangePat or - // Identifier patterns that are in fact path patterns can cause failures. For - // instance `None`. Only if an `@ ...` part is present can we be sure that - // it's an actual identifier pattern. As a heuristic, if the identifier starts - // with a lower case letter, then we assume that it's an identifier. This - // works for code that follows the Rust naming convention for enums and - // constants. - pat = any(IdentPat p | p.hasPat() or p.getName().getText().charAt(0).isLowercase()) or + pat = any(IdentPat p | p.hasPat() or VariableImpl::variableDecl(_, p.getName(), _)) or pat instanceof WildcardPat or pat instanceof RestPat or pat instanceof RefPat or diff --git a/rust/ql/lib/codeql/rust/dataflow/DataFlow.qll b/rust/ql/lib/codeql/rust/dataflow/DataFlow.qll index cfcea9eaa2da..c299671ec6d5 100644 --- a/rust/ql/lib/codeql/rust/dataflow/DataFlow.qll +++ b/rust/ql/lib/codeql/rust/dataflow/DataFlow.qll @@ -8,8 +8,6 @@ private import codeql.dataflow.DataFlow private import internal.DataFlowImpl as DataFlowImpl private import internal.Node as Node private import internal.Content as Content -private import codeql.rust.controlflow.ControlFlowGraph as Cfg -private import codeql.rust.controlflow.CfgNodes as CfgNodes /** * Provides classes for performing local (intra-procedural) and global @@ -68,7 +66,7 @@ module DataFlow { * For example, the guard `g` might be a call `isSafe(x)` and the expression `e` * the argument `x`. */ - signature predicate guardChecksSig(CfgNodes::AstCfgNode g, Cfg::CfgNode e, boolean branch); + signature predicate guardChecksSig(AstNode g, Expr e, boolean branch); /** * Provides a set of barrier nodes for a guard that validates an expression. diff --git a/rust/ql/lib/codeql/rust/dataflow/Ssa.qll b/rust/ql/lib/codeql/rust/dataflow/Ssa.qll index badbef9e4207..52e7d35e3b48 100644 --- a/rust/ql/lib/codeql/rust/dataflow/Ssa.qll +++ b/rust/ql/lib/codeql/rust/dataflow/Ssa.qll @@ -9,7 +9,6 @@ module Ssa { private import rust private import codeql.rust.controlflow.BasicBlocks private import codeql.rust.controlflow.ControlFlowGraph - private import codeql.rust.controlflow.CfgNodes private import codeql.rust.controlflow.internal.ControlFlowGraphImpl as CfgImpl private import internal.SsaImpl as SsaImpl @@ -51,7 +50,7 @@ module Ssa { * } * ``` */ - final CfgNode getARead() { result = SsaImpl::getARead(this) } + final Expr getARead() { result = SsaImpl::getARead(this) } /** * Gets a first control flow node that reads the value of this SSA definition. @@ -80,7 +79,7 @@ module Ssa { * } * ``` */ - final CfgNode getAFirstRead() { SsaImpl::firstRead(this, result) } + final Expr getAFirstRead() { SsaImpl::firstRead(this, result) } /** * Holds if `read1` and `read2` are adjacent reads of this SSA definition. @@ -108,7 +107,7 @@ module Ssa { * } * ``` */ - final predicate hasAdjacentReads(CfgNode read1, CfgNode read2) { + final predicate hasAdjacentReads(Expr read1, Expr read2) { SsaImpl::adjacentReadPair(this, read1, read2) } @@ -168,28 +167,28 @@ module Ssa { * ``` */ class WriteDefinition extends Definition, SsaImpl::WriteDefinition { - private CfgNode write; + private AstNode write; WriteDefinition() { - exists(BasicBlock bb, int i, Variable v, CfgNode n | + exists(BasicBlock bb, int i, Variable v, AstNode n | this.definesAt(v, bb, i) and - SsaImpl::variableWriteActual(bb, i, v, n) + SsaImpl::variableWriteActual(bb, i, v, n.getACfgNode()) | - write.(VariableAccessCfgNode).getAccess().getVariable() = v and + write.(VariableAccess).getVariable() = v and ( - write = n.(AssignmentExprCfgNode).getAWriteAccess() + write = n.(AssignmentExpr).getAWriteAccess() or - write = n.(CompoundAssignmentExprCfgNode).getLhs() + write = n.(CompoundAssignmentExpr).getLhs() ) or - not n instanceof AssignmentExprCfgNode and - not n instanceof CompoundAssignmentExprCfgNode and + not n instanceof AssignmentExpr and + not n instanceof CompoundAssignmentExpr and write = n ) } /** Gets the underlying write access. */ - final CfgNode getWriteAccess() { result = write } + final AstNode getWriteAccess() { result = write } /** * Holds if this SSA definition assigns `value` to the underlying @@ -199,19 +198,19 @@ module Ssa { * `let` statement, `let x = value`. Note that patterns on the lhs. are * currently not supported. */ - predicate assigns(ExprCfgNode value) { - exists(AssignmentExprCfgNode ae | + predicate assigns(Expr value) { + exists(AssignmentExpr ae | ae.getLhs() = write and ae.getRhs() = value ) or - exists(IdentPatCfgNode pat | pat.getName() = write | - exists(LetStmtCfgNode ls | + exists(IdentPat pat | pat.getName() = write | + exists(LetStmt ls | pat = ls.getPat() and ls.getInitializer() = value ) or - exists(LetExprCfgNode le | + exists(LetExpr le | pat = le.getPat() and le.getScrutinee() = value ) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll b/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll index 95a5fa98bb40..12e4b6820915 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll @@ -3,7 +3,7 @@ */ private import rust -private import codeql.rust.controlflow.CfgNodes +private import codeql.rust.frameworks.stdlib.Builtins private import DataFlowImpl /** @@ -21,14 +21,18 @@ abstract class Content extends TContent { abstract class FieldContent extends Content { /** Gets an access to this field. */ pragma[nomagic] - abstract FieldExprCfgNode getAnAccess(); + abstract FieldExpr getAnAccess(); } /** A tuple field belonging to either a variant or a struct. */ class TupleFieldContent extends FieldContent, TTupleFieldContent { private TupleField field; - TupleFieldContent() { this = TTupleFieldContent(field) } + TupleFieldContent() { + this = TTupleFieldContent(field) and + // tuples are handled using the special `TupleContent` type + not field = any(TupleType tt).getATupleField() + } /** Holds if this field belongs to an enum variant. */ predicate isVariantField(Variant v, int pos) { field.isVariantField(v, pos) } @@ -36,7 +40,7 @@ class TupleFieldContent extends FieldContent, TTupleFieldContent { /** Holds if this field belongs to a struct. */ predicate isStructField(Struct s, int pos) { field.isStructField(s, pos) } - override FieldExprCfgNode getAnAccess() { field = result.getFieldExpr().getTupleField() } + override FieldExpr getAnAccess() { field = result.getTupleField() } final override string toString() { exists(Variant v, int pos, string vname | @@ -69,7 +73,7 @@ class StructFieldContent extends FieldContent, TStructFieldContent { /** Holds if this field belongs to a struct. */ predicate isStructField(Struct s, string name) { field.isStructField(s, name) } - override FieldExprCfgNode getAnAccess() { field = result.getFieldExpr().getStructField() } + override FieldExpr getAnAccess() { field = result.getStructField() } final override string toString() { exists(Variant v, string name, string vname | @@ -148,7 +152,7 @@ final class TuplePositionContent extends FieldContent, TTuplePositionContent { /** Gets the index of this tuple position. */ int getPosition() { result = pos } - override FieldExprCfgNode getAnAccess() { + override FieldExpr getAnAccess() { // TODO: limit to tuple types result.getIdentifier().getText().toInt() = pos } diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll index d544ff888d56..731996661cb2 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll @@ -29,17 +29,6 @@ private module Input implements InputSig { } predicate missingLocationExclude(RustDataFlow::Node n) { not exists(n.asExpr().getLocation()) } - - predicate multipleArgumentCallExclude(Node::ArgumentNode arg, DataFlowCall call) { - // An argument such as `x` in `if !x { ... }` has two successors (and hence - // two calls); one for each Boolean outcome of `x`. - exists(CfgNodes::ExprCfgNode n | - arg.isArgumentOf(call, _) and - n = call.asCallCfgNode() and - arg.asExpr().getASuccessor(any(ConditionalSuccessor c)).getASuccessor*() = n and - n.getASplit() instanceof ConditionalCompletionSplitting::ConditionalCompletionSplit - ) - } } import MakeConsistency diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll index 8e367f5da1d1..66db33b75dbb 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll @@ -14,7 +14,6 @@ private import codeql.rust.controlflow.internal.Scope as Scope private import codeql.rust.internal.PathResolution private import codeql.rust.internal.TypeInference as TypeInference private import codeql.rust.controlflow.ControlFlowGraph -private import codeql.rust.controlflow.CfgNodes private import codeql.rust.dataflow.Ssa private import codeql.rust.dataflow.FlowSummary private import Node @@ -60,7 +59,7 @@ final class DataFlowCallable extends TDataFlowCallable { final class DataFlowCall extends TDataFlowCall { /** Gets the underlying call in the CFG, if any. */ - CallCfgNode asCallCfgNode() { this = TCall(result) } + Call asCall() { this = TCall(result) } predicate isSummaryCall( FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver @@ -69,13 +68,13 @@ final class DataFlowCall extends TDataFlowCall { } DataFlowCallable getEnclosingCallable() { - result.asCfgScope() = this.asCallCfgNode().getExpr().getEnclosingCfgScope() + result.asCfgScope() = this.asCall().getEnclosingCfgScope() or this.isSummaryCall(result.asSummarizedCallable(), _) } string toString() { - result = this.asCallCfgNode().toString() + result = this.asCall().toString() or exists( FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver @@ -85,7 +84,7 @@ final class DataFlowCall extends TDataFlowCall { ) } - Location getLocation() { result = this.asCallCfgNode().getLocation() } + Location getLocation() { result = this.asCall().getLocation() } } /** @@ -146,13 +145,13 @@ final class ArgumentPosition extends ParameterPosition { * Note that this does not hold for the receiever expression of a method call * as the synthetic `ReceiverNode` is the argument for the `self` parameter. */ -predicate isArgumentForCall(ExprCfgNode arg, CallCfgNode call, ParameterPosition pos) { +predicate isArgumentForCall(Expr arg, Call call, ParameterPosition pos) { // TODO: Handle index expressions as calls in data flow. - not call.getCall() instanceof IndexExpr and + not call instanceof IndexExpr and ( call.getPositionalArgument(pos.getPosition()) = arg or - call.getReceiver() = arg and pos.isSelf() and not call.getCall().receiverImplicitlyBorrowed() + call.getReceiver() = arg and pos.isSelf() and not call.receiverImplicitlyBorrowed() ) } @@ -181,19 +180,24 @@ module SsaFlow { } /** - * Gets a node that may execute last in `n`, and which, when it executes last, - * will be the value of `n`. + * Gets a node that may execute last in `e`, and which, when it executes last, + * will be the value of `e`. */ -private ExprCfgNode getALastEvalNode(ExprCfgNode e) { - e = any(IfExprCfgNode n | result = [n.getThen(), n.getElse()]) or - result = e.(LoopExprCfgNode).getLoopBody() or - result = e.(ReturnExprCfgNode).getExpr() or - result = e.(BreakExprCfgNode).getExpr() or - result = e.(BlockExprCfgNode).getTailExpr() or - result = e.(MacroBlockExprCfgNode).getTailExpr() or - result = e.(MatchExprCfgNode).getArmExpr(_) or - result = e.(MacroExprCfgNode).getMacroCall().(MacroCallCfgNode).getExpandedNode() or - result.(BreakExprCfgNode).getTarget() = e +private Expr getALastEvalNode(Expr e) { + e = any(IfExpr n | result = [n.getThen(), n.getElse()]) or + result = e.(LoopExpr).getLoopBody() or + result = e.(ReturnExpr).getExpr() or + result = e.(BreakExpr).getExpr() or + e = + any(BlockExpr be | + not be.isAsync() and + result = be.getTailExpr() + ) or + result = e.(MacroBlockExpr).getTailExpr() or + result = e.(MatchExpr).getAnArm().getExpr() or + result = e.(MacroExpr).getMacroCall().getMacroCallExpansion() or + result.(BreakExpr).getTarget() = e or + result = e.(ParenExpr).getExpr() } /** @@ -211,11 +215,11 @@ private ExprCfgNode getALastEvalNode(ExprCfgNode e) { * we add a reverse flow step from `[post] { foo(); &mut a}` to `[post] &mut a`, * in order for the side-effect of `set_data` to reach `&mut a`. */ -ExprCfgNode getPostUpdateReverseStep(ExprCfgNode e, boolean preservesValue) { +Expr getPostUpdateReverseStep(Expr e, boolean preservesValue) { result = getALastEvalNode(e) and preservesValue = true or - result = e.(CastExprCfgNode).getExpr() and + result = e.(CastExpr).getExpr() and preservesValue = false } @@ -236,48 +240,48 @@ module LocalFlow { pragma[nomagic] predicate localFlowStepCommon(Node nodeFrom, Node nodeTo) { - nodeFrom.getCfgNode() = getALastEvalNode(nodeTo.getCfgNode()) + nodeFrom.asExpr() = getALastEvalNode(nodeTo.asExpr()) or // An edge from the right-hand side of a let statement to the left-hand side. - exists(LetStmtCfgNode s | - nodeFrom.getCfgNode() = s.getInitializer() and - nodeTo.getCfgNode() = s.getPat() + exists(LetStmt s | + nodeFrom.asExpr() = s.getInitializer() and + nodeTo.asPat() = s.getPat() ) or // An edge from the right-hand side of a let expression to the left-hand side. - exists(LetExprCfgNode e | - nodeFrom.getCfgNode() = e.getScrutinee() and - nodeTo.getCfgNode() = e.getPat() + exists(LetExpr e | + nodeFrom.asExpr() = e.getScrutinee() and + nodeTo.asPat() = e.getPat() ) or - exists(IdentPatCfgNode p | + exists(IdentPat p | not p.isRef() and - nodeFrom.getCfgNode() = p and - nodeTo.getCfgNode() = p.getName() + nodeFrom.asPat() = p and + nodeTo.(NameNode).getName() = p.getName() ) or - exists(SelfParamCfgNode self | - nodeFrom.getCfgNode() = self and - nodeTo.getCfgNode() = self.getName() + exists(SelfParam self | + nodeFrom.asParameter() = self and + nodeTo.(NameNode).getName() = self.getName() ) or // An edge from a pattern/expression to its corresponding SSA definition. - nodeFrom.(AstCfgFlowNode).getCfgNode() = + nodeFrom.(AstNodeNode).getAstNode() = nodeTo.(SsaNode).asDefinition().(Ssa::WriteDefinition).getWriteAccess() or - nodeFrom.(SourceParameterNode).getParameter().(ParamCfgNode).getPat() = nodeTo.asPat() + nodeFrom.(SourceParameterNode).getParameter().(Param).getPat() = nodeTo.asPat() or - exists(AssignmentExprCfgNode a | - a.getRhs() = nodeFrom.getCfgNode() and - a.getLhs() = nodeTo.getCfgNode() + exists(AssignmentExpr a | + a.getRhs() = nodeFrom.asExpr() and + a.getLhs() = nodeTo.asExpr() ) or - exists(MatchExprCfgNode match | + exists(MatchExpr match | nodeFrom.asExpr() = match.getScrutinee() and - nodeTo.asPat() = match.getArmPat(_) + nodeTo.asPat() = match.getAnArm().getPat() ) or - nodeFrom.asPat().(OrPatCfgNode).getAPat() = nodeTo.asPat() + nodeFrom.asPat().(OrPat).getAPat() = nodeTo.asPat() or // Simple value step from receiver expression to receiver node, in case // there is no implicit deref or borrow operation. @@ -305,12 +309,10 @@ predicate lambdaCreationExpr(Expr creation) { * Holds if `call` is a lambda call of kind `kind` where `receiver` is the * invoked expression. */ -predicate lambdaCallExpr(CallExprCfgNode call, LambdaCallKind kind, ExprCfgNode receiver) { +predicate lambdaCallExpr(CallExpr call, LambdaCallKind kind, Expr receiver) { receiver = call.getFunction() and // All calls to complex expressions and local variable accesses are lambda call. - exists(Expr f | f = receiver.getExpr() | - f instanceof PathExpr implies f = any(Variable v).getAnAccess() - ) and + (receiver instanceof PathExpr implies receiver = any(Variable v).getAnAccess()) and exists(kind) } @@ -379,19 +381,27 @@ module RustDataFlow implements InputSig { node instanceof CaptureNode or node instanceof ClosureParameterNode or node instanceof ReceiverNode or - node instanceof ReceiverPostUpdateNode + node.asExpr() instanceof ParenExpr or + nodeIsHidden(node.(PostUpdateNode).getPreUpdateNode()) + } + + private Expr stripParens(Expr e) { + not e instanceof ParenExpr and + result = e + or + result = stripParens(e.(ParenExpr).getExpr()) } predicate neverSkipInPathGraph(Node node) { - node.(Node::Node).getCfgNode() = any(LetStmtCfgNode s).getPat() + node.(Node::Node).asPat() = any(LetStmt s).getPat() or - node.(Node::Node).getCfgNode() = any(LetExprCfgNode e).getPat() + node.(Node::Node).asPat() = any(LetExpr e).getPat() or - node.(Node::Node).getCfgNode() = any(AssignmentExprCfgNode a).getLhs() + node.(Node::Node).asExpr() = stripParens(any(AssignmentExpr a).getLhs()) or - exists(MatchExprCfgNode match | - node.asExpr() = match.getScrutinee() or - node.asExpr() = match.getArmPat(_) + exists(MatchExpr match | + node.asExpr() = stripParens(match.getScrutinee()) or + node.asPat() = match.getAnArm().getPat() ) or FlowSummaryImpl::Private::Steps::sourceLocalStep(_, node, _) @@ -399,7 +409,7 @@ module RustDataFlow implements InputSig { FlowSummaryImpl::Private::Steps::sinkLocalStep(node, _, _) } - class DataFlowExpr = ExprCfgNode; + class DataFlowExpr = Expr; /** Gets the node corresponding to `e`. */ Node exprNode(DataFlowExpr e) { result.asExpr() = e } @@ -412,7 +422,7 @@ module RustDataFlow implements InputSig { /** Gets a viable implementation of the target of the given `Call`. */ DataFlowCallable viableCallable(DataFlowCall call) { - exists(Call c | c = call.asCallCfgNode().getCall() | + exists(Call c | c = call.asCall() | result.asCfgScope() = c.getARuntimeTarget() or exists(SummarizedCallable sc, Function staticTarget | @@ -511,79 +521,79 @@ module RustDataFlow implements InputSig { pragma[nomagic] private predicate implicitDerefToReceiver(Node node1, ReceiverNode node2, ReferenceContent c) { - TypeInference::receiverHasImplicitDeref(node1.asExpr().getExpr()) and + TypeInference::receiverHasImplicitDeref(node1.asExpr()) and node1.asExpr() = node2.getReceiver() and exists(c) } pragma[nomagic] private predicate implicitBorrowToReceiver(Node node1, ReceiverNode node2, ReferenceContent c) { - TypeInference::receiverHasImplicitBorrow(node1.asExpr().getExpr()) and + TypeInference::receiverHasImplicitBorrow(node1.asExpr()) and node1.asExpr() = node2.getReceiver() and exists(c) } pragma[nomagic] private predicate referenceExprToExpr(Node node1, Node node2, ReferenceContent c) { - node1.asExpr() = node2.asExpr().(RefExprCfgNode).getExpr() and + node1.asExpr() = node2.asExpr().(RefExpr).getExpr() and exists(c) } pragma[nomagic] additional predicate readContentStep(Node node1, Content c, Node node2) { - exists(TupleStructPatCfgNode pat, int pos | + exists(TupleStructPat pat, int pos | pat = node1.asPat() and node2.asPat() = pat.getField(pos) and - c = TTupleFieldContent(pat.getTupleStructPat().getTupleField(pos)) + c = TTupleFieldContent(pat.getTupleField(pos)) ) or - exists(TuplePatCfgNode pat, int pos | + exists(TuplePat pat, int pos | pos = c.(TuplePositionContent).getPosition() and node1.asPat() = pat and node2.asPat() = pat.getField(pos) ) or - exists(StructPatCfgNode pat, string field | + exists(StructPat pat, string field | pat = node1.asPat() and - c = TStructFieldContent(pat.getStructPat().getStructField(field)) and - node2.asPat() = pat.getFieldPat(field) + c = TStructFieldContent(pat.getStructField(field)) and + node2.asPat() = pat.getPatField(field).getPat() ) or c instanceof ReferenceContent and - node1.asPat().(RefPatCfgNode).getPat() = node2.asPat() + node1.asPat().(RefPat).getPat() = node2.asPat() or - exists(FieldExprCfgNode access | + exists(FieldExpr access | node1.asExpr() = access.getContainer() and node2.asExpr() = access and access = c.(FieldContent).getAnAccess() ) or - exists(IndexExprCfgNode arr | + exists(IndexExpr arr | c instanceof ElementContent and node1.asExpr() = arr.getBase() and node2.asExpr() = arr ) or - exists(ForExprCfgNode for | + exists(ForExpr for | c instanceof ElementContent and node1.asExpr() = for.getIterable() and node2.asPat() = for.getPat() ) or - exists(SlicePatCfgNode pat | + exists(SlicePat pat | c instanceof ElementContent and node1.asPat() = pat and node2.asPat() = pat.getAPat() ) or - exists(TryExprCfgNode try | + exists(TryExpr try | node1.asExpr() = try.getExpr() and node2.asExpr() = try and c.(TupleFieldContent) .isVariantField([any(OptionEnum o).getSome(), any(ResultEnum r).getOk()], 0) ) or - exists(PrefixExprCfgNode deref | + exists(PrefixExpr deref | c instanceof ReferenceContent and deref.getOperatorName() = "*" and node1.asExpr() = deref.getExpr() and @@ -597,7 +607,7 @@ module RustDataFlow implements InputSig { c instanceof FunctionCallReturnContent ) or - exists(AwaitExprCfgNode await | + exists(AwaitExpr await | c instanceof FutureContent and node1.asExpr() = await.getExpr() and node2.asExpr() = await @@ -644,7 +654,7 @@ module RustDataFlow implements InputSig { pragma[nomagic] private predicate fieldAssignment(Node node1, Node node2, FieldContent c) { - exists(AssignmentExprCfgNode assignment, FieldExprCfgNode access | + exists(AssignmentExpr assignment, FieldExpr access | assignment.getLhs() = access and node1.asExpr() = assignment.getRhs() and node2.asExpr() = access.getContainer() and @@ -654,7 +664,7 @@ module RustDataFlow implements InputSig { pragma[nomagic] private predicate referenceAssignment(Node node1, Node node2, ReferenceContent c) { - exists(AssignmentExprCfgNode assignment, PrefixExprCfgNode deref | + exists(AssignmentExpr assignment, PrefixExpr deref | assignment.getLhs() = deref and deref.getOperatorName() = "*" and node1.asExpr() = assignment.getRhs() and @@ -665,19 +675,19 @@ module RustDataFlow implements InputSig { pragma[nomagic] additional predicate storeContentStep(Node node1, Content c, Node node2) { - exists(CallExprCfgNode call, int pos | - node1.asExpr() = call.getArgument(pragma[only_bind_into](pos)) and + exists(CallExpr call, int pos | + node1.asExpr() = call.getArg(pragma[only_bind_into](pos)) and node2.asExpr() = call and - c = TTupleFieldContent(call.getCallExpr().getTupleField(pragma[only_bind_into](pos))) + c = TTupleFieldContent(call.getTupleField(pragma[only_bind_into](pos))) ) or - exists(StructExprCfgNode re, string field | - c = TStructFieldContent(re.getStructExpr().getStructField(field)) and - node1.asExpr() = re.getFieldExpr(field) and + exists(StructExpr re, string field | + c = TStructFieldContent(re.getStructField(field)) and + node1.asExpr() = re.getFieldExpr(field).getExpr() and node2.asExpr() = re ) or - exists(TupleExprCfgNode tuple | + exists(TupleExpr tuple | node1.asExpr() = tuple.getField(c.(TuplePositionContent).getPosition()) and node2.asExpr() = tuple ) @@ -685,23 +695,23 @@ module RustDataFlow implements InputSig { c instanceof ElementContent and node1.asExpr() = [ - node2.asExpr().(ArrayRepeatExprCfgNode).getRepeatOperand(), - node2.asExpr().(ArrayListExprCfgNode).getAnExpr() + node2.asExpr().(ArrayRepeatExpr).getRepeatOperand(), + node2.asExpr().(ArrayListExpr).getAnExpr() ] or // Store from a `ref` identifier pattern into the contained name. - exists(IdentPatCfgNode p | + exists(IdentPat p | c instanceof ReferenceContent and p.isRef() and node1.asPat() = p and - node2.(NameNode).asName() = p.getName() + node2.(NameNode).getName() = p.getName() ) or fieldAssignment(node1, node2.(PostUpdateNode).getPreUpdateNode(), c) or referenceAssignment(node1, node2.(PostUpdateNode).getPreUpdateNode(), c) or - exists(AssignmentExprCfgNode assignment, IndexExprCfgNode index | + exists(AssignmentExpr assignment, IndexExpr index | c instanceof ElementContent and assignment.getLhs() = index and node1.asExpr() = assignment.getRhs() and @@ -808,7 +818,7 @@ module RustDataFlow implements InputSig { /** Holds if `creation` is an expression that creates a lambda of kind `kind` for `c`. */ predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) { exists(kind) and - exists(Expr e | e = creation.asExpr().getExpr() | + exists(Expr e | e = creation.asExpr() | lambdaCreationExpr(e) and e = c.asCfgScope() or // A path expression, that resolves to a function, evaluates to a function @@ -825,9 +835,9 @@ module RustDataFlow implements InputSig { */ predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { ( - receiver.asExpr() = call.asCallCfgNode().(CallExprCfgNode).getFunction() and + receiver.asExpr() = call.asCall().(CallExpr).getFunction() and // All calls to complex expressions and local variable accesses are lambda call. - exists(Expr f | f = receiver.asExpr().getExpr() | + exists(Expr f | f = receiver.asExpr() | f instanceof PathExpr implies f = any(Variable v).getAnAccess() ) or @@ -854,7 +864,7 @@ module VariableCapture { private import codeql.dataflow.VariableCapture as SharedVariableCapture private import codeql.rust.controlflow.BasicBlocks as BasicBlocks - private predicate closureFlowStep(ExprCfgNode e1, ExprCfgNode e2) { + private predicate closureFlowStep(Expr e1, Expr e2) { Stages::DataFlowStage::ref() and e1 = getALastEvalNode(e2) or @@ -883,48 +893,48 @@ module VariableCapture { CapturedParameter() { p = this.getParameter() } - SourceParameterNode getParameterNode() { result.getParameter().getParamBase() = p } + SourceParameterNode getParameterNode() { result.getParameter() = p } } - class Expr extends CfgNode { - predicate hasCfgNode(BasicBlocks::BasicBlock bb, int i) { this = bb.getNode(i) } + class Expr extends AstNode { + predicate hasCfgNode(BasicBlocks::BasicBlock bb, int i) { this = bb.getNode(i).getAstNode() } } class VariableWrite extends Expr { - ExprCfgNode source; + Expr source; CapturedVariable v; VariableWrite() { - exists(AssignmentExprCfgNode assign, Variable::VariableWriteAccess write | + exists(AssignmentExpr assign, Variable::VariableWriteAccess write | this = assign and v = write.getVariable() and - assign.getLhs().getExpr() = write and + assign.getLhs() = write and assign.getRhs() = source ) or - exists(LetStmtCfgNode ls | - this = ls and - v.getPat() = ls.getPat().getPat() and - ls.getInitializer() = source - ) + this = + any(LetStmt ls | + v.getPat() = ls.getPat() and + ls.getInitializer() = source + ) or - exists(LetExprCfgNode le | - this = le and - v.getPat() = le.getPat().getPat() and - le.getScrutinee() = source - ) + this = + any(LetExpr le | + v.getPat() = le.getPat() and + le.getScrutinee() = source + ) } CapturedVariable getVariable() { result = v } - ExprCfgNode getSource() { result = source } + Expr getSource() { result = source } } - class VariableRead extends Expr instanceof ExprCfgNode { + class VariableRead extends Expr { CapturedVariable v; VariableRead() { - exists(VariableAccess read | this.getExpr() = read and v = read.getVariable() | + exists(VariableAccess read | this = read and v = read.getVariable() | read instanceof VariableReadAccess or read = any(RefExpr re).getExpr() @@ -934,10 +944,10 @@ module VariableCapture { CapturedVariable getVariable() { result = v } } - class ClosureExpr extends Expr instanceof ExprCfgNode { - ClosureExpr() { lambdaCreationExpr(super.getExpr()) } + class ClosureExpr extends Expr { + ClosureExpr() { lambdaCreationExpr(this) } - predicate hasBody(Callable body) { body = super.getExpr() } + predicate hasBody(Callable body) { body = this } predicate hasAliasedAccess(Expr f) { closureFlowStep+(this, f) and not closureFlowStep(f, _) } } @@ -991,10 +1001,11 @@ private module Cached { cached newtype TDataFlowCall = - TCall(CallCfgNode c) { + TCall(Call call) { Stages::DataFlowStage::ref() and + call.hasEnclosingCfgScope() and // TODO: Handle index expressions as calls in data flow. - not c.getCall() instanceof IndexExpr + not call instanceof IndexExpr } or TSummaryCall( FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll index 2763908ae02e..d9457d795109 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll @@ -9,7 +9,6 @@ private import codeql.rust.dataflow.internal.DataFlowImpl private import codeql.rust.internal.PathResolution private import codeql.rust.dataflow.FlowSummary private import codeql.rust.dataflow.Ssa -private import codeql.rust.controlflow.CfgNodes private import Content module Input implements InputSig { @@ -132,9 +131,7 @@ module Input implements InputSig { private import Make as Impl private module StepsInput implements Impl::Private::StepsInputSig { - DataFlowCall getACall(Public::SummarizedCallable sc) { - result.asCallCfgNode().getCall().getStaticTarget() = sc - } + DataFlowCall getACall(Public::SummarizedCallable sc) { result.asCall().getStaticTarget() = sc } /** Gets the argument of `source` described by `sc`, if any. */ private Expr getSourceNodeArgument(Input::SourceBase source, Impl::Private::SummaryComponent sc) { @@ -151,10 +148,9 @@ private module StepsInput implements Impl::Private::StepsInputSig { result = expr.(ClosureExpr) or // The expression is an SSA read of an assignment of a closure - exists(Ssa::Definition def, ExprCfgNode value | - def.getARead().getAstNode() = expr and - def.getAnUltimateDefinition().(Ssa::WriteDefinition).assigns(value) and - result = value.getExpr().(ClosureExpr) + exists(Ssa::Definition def | + def.getARead() = expr and + def.getAnUltimateDefinition().(Ssa::WriteDefinition).assigns(result.(ClosureExpr)) ) } @@ -164,7 +160,7 @@ private module StepsInput implements Impl::Private::StepsInputSig { RustDataFlow::Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { s.head() = Impl::Private::SummaryComponent::return(_) and - result.asExpr().getExpr() = source.getCall() + result.asExpr() = source.getCall() or exists(ArgumentPosition pos, Expr arg | s.head() = Impl::Private::SummaryComponent::parameter(pos) and @@ -172,13 +168,13 @@ private module StepsInput implements Impl::Private::StepsInputSig { result.asParameter() = getCallable(arg).getParam(pos.getPosition()) ) or - result.(RustDataFlow::PostUpdateNode).getPreUpdateNode().asExpr().getExpr() = + result.(RustDataFlow::PostUpdateNode).getPreUpdateNode().asExpr() = getSourceNodeArgument(source, s.headOfSingleton()) } RustDataFlow::Node getSinkNode(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { exists(CallExprBase call, Expr arg, ArgumentPosition pos | - result.asExpr().getExpr() = arg and + result.asExpr() = arg and sc = Impl::Private::SummaryComponent::argument(pos) and call = sink.getCall() and arg = pos.getArgument(call) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll index e46b4375c04c..2191714d6a17 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll @@ -35,17 +35,17 @@ class NodePublic extends TNode { /** * Gets the expression that corresponds to this node, if any. */ - final ExprCfgNode asExpr() { this = TExprNode(result) } + final Expr asExpr() { this = TExprNode(result) } /** * Gets the parameter that corresponds to this node, if any. */ - ParamBase asParameter() { result = this.(SourceParameterNode).getParameter().getParamBase() } + ParamBase asParameter() { result = this.(SourceParameterNode).getParameter() } /** * Gets the pattern that corresponds to this node, if any. */ - final PatCfgNode asPat() { this = TPatNode(result) } + final Pat asPat() { this = TPatNode(result) } } abstract class Node extends NodePublic { @@ -56,9 +56,9 @@ abstract class Node extends NodePublic { abstract CfgScope getCfgScope(); /** - * Gets the control flow node that corresponds to this data flow node. + * Gets the AST node that corresponds to this data flow node, if any. */ - CfgNode getCfgNode() { none() } + AstNode getAstNode() { none() } } /** A data flow node used to model flow summaries. */ @@ -118,17 +118,17 @@ class FlowSummaryNode extends Node, TFlowSummaryNode { } } -/** A data flow node that corresponds directly to a CFG node for an AST node. */ -abstract class AstCfgFlowNode extends Node { - AstCfgNode n; +/** A data flow node that corresponds directly to an AST node. */ +abstract class AstNodeNode extends Node { + AstNode n; - final override CfgNode getCfgNode() { result = n } + final override AstNode getAstNode() { result = n } - final override CfgScope getCfgScope() { result = n.getAstNode().getEnclosingCfgScope() } + final override CfgScope getCfgScope() { result = n.getEnclosingCfgScope() } - final override Location getLocation() { result = n.getAstNode().getLocation() } + final override Location getLocation() { result = n.getLocation() } - final override string toString() { result = n.getAstNode().toString() } + final override string toString() { result = n.toString() } } /** @@ -139,25 +139,25 @@ abstract class AstCfgFlowNode extends Node { * to multiple `ExprNode`s, just like it may correspond to multiple * `ControlFlow::Node`s. */ -class ExprNode extends AstCfgFlowNode, TExprNode { - override ExprCfgNode n; +class ExprNode extends AstNodeNode, TExprNode { + override Expr n; ExprNode() { this = TExprNode(n) } } -final class PatNode extends AstCfgFlowNode, TPatNode { - override PatCfgNode n; +final class PatNode extends AstNodeNode, TPatNode { + override Pat n; PatNode() { this = TPatNode(n) } } /** A data flow node that corresponds to a name node in the CFG. */ -final class NameNode extends AstCfgFlowNode, TNameNode { - override NameCfgNode n; +final class NameNode extends AstNodeNode, TNameNode { + override Name n; NameNode() { this = TNameNode(n) } - NameCfgNode asName() { result = n } + Name getName() { result = n } } /** @@ -169,20 +169,20 @@ abstract class ParameterNode extends Node { abstract predicate isParameterOf(DataFlowCallable c, ParameterPosition pos); } -final class SourceParameterNode extends AstCfgFlowNode, ParameterNode, TSourceParameterNode { - override ParamBaseCfgNode n; +final class SourceParameterNode extends AstNodeNode, ParameterNode, TSourceParameterNode { + override ParamBase n; SourceParameterNode() { this = TSourceParameterNode(n) } override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { - n.getAstNode() = pos.getParameterIn(c.asCfgScope().(Callable).getParamList()) + n = pos.getParameterIn(c.asCfgScope().(Callable).getParamList()) } /** Get the parameter position of this parameter. */ ParameterPosition getPosition() { this.isParameterOf(_, result) } /** Gets the parameter in the CFG that this node corresponds to. */ - ParamBaseCfgNode getParameter() { result = n } + ParamBase getParameter() { result = n } } /** A parameter for a library callable with a flow summary. */ @@ -223,13 +223,13 @@ abstract class ArgumentNode extends Node { } final class ExprArgumentNode extends ArgumentNode, ExprNode { - private CallCfgNode call_; + private Call call_; private RustDataFlow::ArgumentPosition pos_; ExprArgumentNode() { isArgumentForCall(n, call_, pos_) } override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) { - call.asCallCfgNode() = call_ and pos = pos_ + call.asCall() = call_ and pos = pos_ } } @@ -238,19 +238,19 @@ final class ExprArgumentNode extends ArgumentNode, ExprNode { * has taken place. */ final class ReceiverNode extends ArgumentNode, TReceiverNode { - private CallCfgNode n; + private Call n; ReceiverNode() { this = TReceiverNode(n, false) } - ExprCfgNode getReceiver() { result = n.getReceiver() } + Expr getReceiver() { result = n.getReceiver() } - MethodCallExprCfgNode getMethodCall() { result = n } + MethodCallExpr getMethodCall() { result = n } override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) { - call.asCallCfgNode() = n and pos = TSelfParameterPosition() + call.asCall() = n and pos = TSelfParameterPosition() } - override CfgScope getCfgScope() { result = n.getAstNode().getEnclosingCfgScope() } + override CfgScope getCfgScope() { result = n.getEnclosingCfgScope() } override Location getLocation() { result = this.getReceiver().getLocation() } @@ -275,12 +275,12 @@ final class SummaryArgumentNode extends FlowSummaryNode, ArgumentNode { * passed into the closure body at an invocation. */ final class ClosureArgumentNode extends ArgumentNode, ExprNode { - private CallExprCfgNode call_; + private CallExpr call_; ClosureArgumentNode() { lambdaCallExpr(call_, _, this.asExpr()) } override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) { - call.asCallCfgNode() = call_ and + call.asCall() = call_ and pos.isClosureSelf() } } @@ -309,7 +309,7 @@ abstract class ReturnNode extends Node { } final class ExprReturnNode extends ExprNode, ReturnNode { - ExprReturnNode() { this.getCfgNode().getASuccessor() instanceof AnnotatedExitCfgNode } + ExprReturnNode() { n.getACfgNode().getASuccessor() instanceof AnnotatedExitCfgNode } override ReturnKind getKind() { result = TNormalReturnKind() } } @@ -329,11 +329,11 @@ abstract class OutNode extends Node { } final private class ExprOutNode extends ExprNode, OutNode { - ExprOutNode() { this.asExpr() instanceof CallCfgNode } + ExprOutNode() { this.asExpr() instanceof Call } /** Gets the underlying call CFG node that includes this out node. */ override DataFlowCall getCall(ReturnKind kind) { - result.asCallCfgNode() = this.getCfgNode() and + result.asCall() = n and kind = TNormalReturnKind() } } @@ -391,27 +391,27 @@ abstract class PostUpdateNode extends PostUpdateNodePublic, Node { } final class ExprPostUpdateNode extends PostUpdateNode, TExprPostUpdateNode { - private ExprCfgNode n; + private Expr e; - ExprPostUpdateNode() { this = TExprPostUpdateNode(n) } + ExprPostUpdateNode() { this = TExprPostUpdateNode(e) } - override Node getPreUpdateNode() { result = TExprNode(n) } + override Node getPreUpdateNode() { result = TExprNode(e) } - override CfgScope getCfgScope() { result = n.getScope() } + override CfgScope getCfgScope() { result = e.getEnclosingCfgScope() } - override Location getLocation() { result = n.getLocation() } + override Location getLocation() { result = e.getLocation() } } final class ReceiverPostUpdateNode extends PostUpdateNode, TReceiverNode { - private CallCfgNode n; + private Call call; - ReceiverPostUpdateNode() { this = TReceiverNode(n, true) } + ReceiverPostUpdateNode() { this = TReceiverNode(call, true) } - override Node getPreUpdateNode() { result = TReceiverNode(n, false) } + override Node getPreUpdateNode() { result = TReceiverNode(call, false) } - override CfgScope getCfgScope() { result = n.getAstNode().getEnclosingCfgScope() } + override CfgScope getCfgScope() { result = call.getEnclosingCfgScope() } - override Location getLocation() { result = n.getReceiver().getLocation() } + override Location getLocation() { result = call.getReceiver().getLocation() } } final class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode { @@ -445,38 +445,46 @@ final class CastNode extends ExprNode { cached newtype TNode = - TExprNode(ExprCfgNode n) { Stages::DataFlowStage::ref() } or - TSourceParameterNode(ParamBaseCfgNode p) or - TPatNode(PatCfgNode p) or - TNameNode(NameCfgNode n) { n.getName() = any(Variable v).getName() } or - TExprPostUpdateNode(ExprCfgNode e) { - isArgumentForCall(e, _, _) - or - lambdaCallExpr(_, _, e) - or - lambdaCreationExpr(e.getExpr()) - or - // Whenever `&mut e` has a post-update node we also create one for `e`. - // E.g., for `e` in `f(..., &mut e, ...)` or `*(&mut e) = ...`. - e = any(RefExprCfgNode ref | ref.isMut() and exists(TExprPostUpdateNode(ref))).getExpr() - or - e = - [ - any(IndexExprCfgNode i).getBase(), // - any(FieldExprCfgNode access).getContainer(), // - any(TryExprCfgNode try).getExpr(), // - any(PrefixExprCfgNode pe | pe.getOperatorName() = "*").getExpr(), // - any(AwaitExprCfgNode a).getExpr(), // - any(MethodCallExprCfgNode mc).getReceiver(), // - getPostUpdateReverseStep(any(PostUpdateNode n).getPreUpdateNode().asExpr(), _) - ] + TExprNode(Expr e) { e.hasEnclosingCfgScope() and Stages::DataFlowStage::ref() } or + TSourceParameterNode(ParamBase p) { p.hasEnclosingCfgScope() } or + TPatNode(Pat p) { p.hasEnclosingCfgScope() } or + TNameNode(Name n) { n = any(Variable v).getName() and n.hasEnclosingCfgScope() } or + TExprPostUpdateNode(Expr e) { + e.hasEnclosingCfgScope() and + ( + isArgumentForCall(e, _, _) + or + lambdaCallExpr(_, _, e) + or + lambdaCreationExpr(e) + or + // Whenever `&mut e` has a post-update node we also create one for `e`. + // E.g., for `e` in `f(..., &mut e, ...)` or `*(&mut e) = ...`. + e = any(RefExpr ref | ref.isMut() and exists(TExprPostUpdateNode(ref))).getExpr() + or + e = + [ + any(IndexExpr i).getBase(), // + any(FieldExpr access).getContainer(), // + any(TryExpr try).getExpr(), // + any(PrefixExpr pe | pe.getOperatorName() = "*").getExpr(), // + any(AwaitExpr a).getExpr(), // + any(MethodCallExpr mc).getReceiver(), // + getPostUpdateReverseStep(any(PostUpdateNode n).getPreUpdateNode().asExpr(), _) + ] + ) } or - TReceiverNode(CallCfgNode mc, Boolean isPost) { - mc.getCall().receiverImplicitlyBorrowed() and + TReceiverNode(Call call, Boolean isPost) { + call.hasEnclosingCfgScope() and + call.receiverImplicitlyBorrowed() and // TODO: Handle index expressions as calls in data flow. - not mc.getCall() instanceof IndexExpr + not call instanceof IndexExpr } or TSsaNode(SsaImpl::DataFlowIntegration::SsaNode node) or - TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) or + TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) { + forall(AstNode n | n = sn.getSinkElement() or n = sn.getSourceElement() | + n.hasEnclosingCfgScope() + ) + } or TClosureSelfReferenceNode(CfgScope c) { lambdaCreationExpr(c) } or TCaptureNode(VariableCapture::Flow::SynthesizedCaptureNode cn) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll index 49b40474c987..29674cbd1dfb 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll @@ -2,7 +2,6 @@ private import rust private import codeql.rust.controlflow.BasicBlocks as BasicBlocks private import BasicBlocks private import codeql.rust.controlflow.ControlFlowGraph as Cfg -private import codeql.rust.controlflow.CfgNodes as CfgNodes private import Cfg private import codeql.rust.controlflow.internal.ControlFlowGraphImpl as ControlFlowGraphImpl private import codeql.ssa.Ssa as SsaImplCommon @@ -229,11 +228,11 @@ private module Cached { } cached - CfgNode getARead(Definition def) { + Expr getARead(Definition def) { exists(Variable v, BasicBlock bb, int i | Impl::ssaDefReachesRead(v, def, bb, i) and variableReadCertain(bb, i, v.getAnAccess(), v) and - result = bb.getNode(i) + result = bb.getNode(i).getAstNode() ) } @@ -247,8 +246,10 @@ private module Cached { * without passing through any other non-pseudo read. */ cached - predicate firstRead(Definition def, CfgNode read) { - exists(BasicBlock bb, int i | Impl::firstUse(def, bb, i, true) and read = bb.getNode(i)) + predicate firstRead(Definition def, Expr read) { + exists(BasicBlock bb, int i | + Impl::firstUse(def, bb, i, true) and read = bb.getNode(i).getAstNode() + ) } /** @@ -257,12 +258,12 @@ private module Cached { * passing through another non-pseudo read. */ cached - predicate adjacentReadPair(Definition def, CfgNode read1, CfgNode read2) { + predicate adjacentReadPair(Definition def, Expr read1, Expr read2) { exists(BasicBlock bb1, int i1, BasicBlock bb2, int i2, Variable v | Impl::ssaDefReachesRead(v, def, bb1, i1) and Impl::adjacentUseUse(bb1, i1, bb2, i2, v, true) and - read1 = bb1.getNode(i1) and - read2 = bb2.getNode(i2) + read1 = bb1.getNode(i1).getAstNode() and + read2 = bb2.getNode(i2).getAstNode() ) } @@ -287,7 +288,7 @@ private module Cached { DataFlowIntegrationImpl::localMustFlowStep(v, nodeFrom, nodeTo) } - signature predicate guardChecksSig(CfgNodes::AstCfgNode g, Cfg::CfgNode e, boolean branch); + signature predicate guardChecksSig(AstNode g, Expr e, boolean branch); cached // nothing is actually cached module BarrierGuard { @@ -310,47 +311,49 @@ private module Cached { import Cached private import codeql.rust.dataflow.Ssa +private class ExprAlias = Expr; + private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInputSig { private import codeql.rust.dataflow.internal.DataFlowImpl as DataFlowImpl private import codeql.util.Boolean - class Expr extends CfgNodes::AstCfgNode { - predicate hasCfgNode(BasicBlock bb, int i) { this = bb.getNode(i) } + class Expr extends ExprAlias { + predicate hasCfgNode(BasicBlock bb, int i) { this.getACfgNode() = bb.getNode(i) } } Expr getARead(Definition def) { result = Cached::getARead(def) } predicate ssaDefHasSource(WriteDefinition def) { none() } // handled in `DataFlowImpl.qll` instead - private predicate isArg(CfgNodes::CallExprBaseCfgNode call, CfgNodes::ExprCfgNode e) { - call.getArgument(_) = e + private predicate isArg(CallExprBase call, Expr e) { + call.getAnArg() = e or - call.(CfgNodes::MethodCallExprCfgNode).getReceiver() = e + call.(MethodCallExpr).getReceiver() = e or - exists(CfgNodes::ExprCfgNode mid | + exists(Expr mid | isArg(call, mid) and e = DataFlowImpl::getPostUpdateReverseStep(mid, _) ) } predicate allowFlowIntoUncertainDef(UncertainWriteDefinition def) { - exists(CfgNodes::CallExprBaseCfgNode call, Variable v, BasicBlock bb, int i | + exists(Variable v, BasicBlock bb, int i | def.definesAt(v, bb, i) and mutablyBorrows(bb.getNode(i).getAstNode(), v) and - isArg(call, bb.getNode(i)) + isArg(_, bb.getNode(i).getAstNode()) ) } class GuardValue = Boolean; - class Guard extends CfgNodes::AstCfgNode { + class Guard extends AstNode { /** * Holds if the evaluation of this guard to `branch` corresponds to the edge * from `bb1` to `bb2`. */ predicate hasValueBranchEdge(BasicBlock bb1, BasicBlock bb2, GuardValue branch) { exists(Cfg::ConditionalSuccessor s | - this = bb1.getANode() and + this = bb1.getANode().getAstNode() and bb2 = bb1.getASuccessor(s) and s.getValue() = branch ) @@ -369,7 +372,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu /** Holds if the guard `guard` controls block `bb` upon evaluating to `branch`. */ predicate guardDirectlyControlsBlock(Guard guard, BasicBlock bb, GuardValue branch) { exists(ConditionBasicBlock conditionBlock, ConditionalSuccessor s | - guard = conditionBlock.getLastNode() and + guard = conditionBlock.getLastNode().getAstNode() and s.getValue() = branch and conditionBlock.edgeDominates(bb, s) ) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll index b702c514c1ab..544bed64730f 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll @@ -1,6 +1,5 @@ private import rust private import codeql.dataflow.TaintTracking -private import codeql.rust.controlflow.CfgNodes private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.FlowSummary private import DataFlowImpl @@ -21,22 +20,22 @@ module RustTaintTracking implements InputSig { Stages::DataFlowStage::ref() and model = "" and ( - exists(BinaryExprCfgNode binary | + exists(BinaryExpr binary | binary.getOperatorName() = ["+", "-", "*", "/", "%", "&", "|", "^", "<<", ">>"] and pred.asExpr() = [binary.getLhs(), binary.getRhs()] and succ.asExpr() = binary ) or - exists(PrefixExprCfgNode prefix | + exists(PrefixExpr prefix | prefix.getOperatorName() = ["-", "!"] and pred.asExpr() = prefix.getExpr() and succ.asExpr() = prefix ) or - pred.asExpr() = succ.asExpr().(CastExprCfgNode).getExpr() + pred.asExpr() = succ.asExpr().(CastExpr).getExpr() or - exists(IndexExprCfgNode index | - index.getIndex() instanceof RangeExprCfgNode and + exists(IndexExpr index | + index.getIndex() instanceof RangeExpr and pred.asExpr() = index.getBase() and succ.asExpr() = index ) @@ -52,8 +51,16 @@ module RustTaintTracking implements InputSig { cs.getContent() instanceof ReferenceContent ) or - exists(FormatArgsExprCfgNode format | succ.asExpr() = format | - pred.asExpr() = [format.getArgumentExpr(_), format.getFormatTemplateVariableAccess(_)] + exists(FormatArgsExpr format | succ.asExpr() = format | + pred.asExpr() = format.getAnArg().getExpr() + or + pred.asExpr() = + any(FormatTemplateVariableAccess v | + exists(Format f | + f = format.getAFormat() and + v.getArgument() = [f.getArgumentRef(), f.getWidthArgument(), f.getPrecisionArgument()] + ) + ) ) or succ.(Node::PostUpdateNode).getPreUpdateNode().asExpr() = diff --git a/rust/ql/lib/codeql/rust/elements/AssignmentOperation.qll b/rust/ql/lib/codeql/rust/elements/AssignmentOperation.qll index a3ca1722b577..6fbbdf7cd812 100644 --- a/rust/ql/lib/codeql/rust/elements/AssignmentOperation.qll +++ b/rust/ql/lib/codeql/rust/elements/AssignmentOperation.qll @@ -25,6 +25,11 @@ final class AssignmentOperation = AssignmentOperationImpl; final class AssignmentExpr extends AssignmentOperationImpl { AssignmentExpr() { this.getOperatorName() = "=" } + /** + * Gets a write access that occurs in the left-hand side of this assignment expression. + */ + VariableWriteAccess getAWriteAccess() { this = result.getAssignmentExpr() } + override string getAPrimaryQlClass() { result = "AssignmentExpr" } } diff --git a/rust/ql/lib/codeql/rust/elements/ConstAccess.qll b/rust/ql/lib/codeql/rust/elements/ConstAccess.qll new file mode 100644 index 000000000000..ae2f6c3e333c --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/ConstAccess.qll @@ -0,0 +1,7 @@ +/** + * This module provides the public class `ConstAccess`. + */ + +private import internal.ConstImpl + +final class ConstAccess = Impl::ConstAccess; diff --git a/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll index 237ebfa6b413..554942f0fddc 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll @@ -13,9 +13,9 @@ private import codeql.rust.controlflow.ControlFlowGraph */ module Impl { private import rust + private import codeql.rust.elements.internal.ElementImpl::Impl as ElementImpl private import codeql.rust.elements.internal.generated.ParentChild private import codeql.rust.controlflow.ControlFlowGraph - private import codeql.rust.elements.internal.MacroCallImpl::Impl as MacroCallImpl /** * Gets the immediate parent of a non-`AstNode` element `e`. @@ -59,6 +59,9 @@ module Impl { ) } + /** Holds if this node is inside a CFG scope. */ + predicate hasEnclosingCfgScope() { exists(this.getEnclosingCfgScope()) } + /** Gets the block that encloses this node, if any. */ cached BlockExpr getEnclosingBlock() { @@ -71,21 +74,15 @@ module Impl { } /** Holds if this node is inside a macro expansion. */ - predicate isInMacroExpansion() { MacroCallImpl::isInMacroExpansion(_, this) } + predicate isInMacroExpansion() { ElementImpl::MacroExpansion::isInMacroExpansion(this) } /** * Holds if this node exists only as the result of a macro expansion. * * This is the same as `isInMacroExpansion()`, but excludes AST nodes corresponding - * to macro arguments. + * to macro arguments, including attribute macro targets. */ - pragma[nomagic] - predicate isFromMacroExpansion() { - exists(AstNode root | - MacroCallImpl::isInMacroExpansion(root, this) and - not this = root.(MacroCall).getATokenTreeNode() - ) - } + predicate isFromMacroExpansion() { ElementImpl::MacroExpansion::isFromMacroExpansion(this) } /** * Gets a control flow node for this AST node, if any. diff --git a/rust/ql/lib/codeql/rust/elements/internal/BlockExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/BlockExprImpl.qll index 9011109b194e..9e8576dc440b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/BlockExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/BlockExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `BlockExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.BlockExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A block expression. For example: * ```rust @@ -26,5 +26,10 @@ module Impl { * } * ``` */ - class BlockExpr extends Generated::BlockExpr { } + class BlockExpr extends Generated::BlockExpr { + /** + * Gets the tail expression of this block, if it exists. + */ + Expr getTailExpr() { result = this.getStmtList().getTailExpr() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll index 210820fd1053..71c6cfbffc07 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll @@ -82,7 +82,7 @@ module Impl { } private predicate callHasTraitQualifier(CallExpr call, Trait qualifier) { - exists(RelevantPath qualifierPath | + exists(PathExt qualifierPath | callHasQualifier(call, _, qualifierPath) and qualifier = resolvePath(qualifierPath) and // When the qualifier is `Self` and resolves to a trait, it's inside a diff --git a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll index d2f3cde2d037..44114674a566 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Const`. * @@ -6,12 +5,17 @@ */ private import codeql.rust.elements.internal.generated.Const +private import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl +private import codeql.rust.elements.internal.IdentPatImpl::Impl as IdentPatImpl +private import codeql.rust.elements.internal.PathExprImpl::Impl as PathExprImpl +private import codeql.rust.internal.PathResolution /** * INTERNAL: This module contains the customizable definition of `Const` and should not * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A constant item declaration. * @@ -21,4 +25,43 @@ module Impl { * ``` */ class Const extends Generated::Const { } + + /** + * A constant access. + * + * For example: + * ```rust + * const X: i32 = 42; + * + * fn main() { + * println!("{}", X); + * } + * ``` + */ + abstract class ConstAccess extends AstNodeImpl::AstNode { + /** Gets the constant being accessed. */ + abstract Const getConst(); + + override string getAPrimaryQlClass() { result = "ConstAccess" } + } + + private class PathExprConstAccess extends ConstAccess, PathExprImpl::PathExpr { + private Const c; + + PathExprConstAccess() { c = resolvePath(this.getPath()) } + + override Const getConst() { result = c } + + override string getAPrimaryQlClass() { result = ConstAccess.super.getAPrimaryQlClass() } + } + + private class IdentPatConstAccess extends ConstAccess, IdentPatImpl::IdentPat { + private Const c; + + IdentPatConstAccess() { c = resolvePath(this) } + + override Const getConst() { result = c } + + override string getAPrimaryQlClass() { result = ConstAccess.super.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll index 7a464a378d1e..158a5ee96707 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll @@ -11,7 +11,118 @@ private import codeql.rust.elements.internal.generated.Element * be referenced directly. */ module Impl { + private import rust + private import codeql.rust.elements.internal.generated.ParentChild + private import codeql.rust.elements.internal.generated.Synth + private import codeql.rust.elements.internal.generated.Raw + private import codeql.rust.elements.internal.LocationImpl + + /** + * Provides logic for classifying elements with respect to macro expansions. + */ + cached + module MacroExpansion { + /** + * Holds if `e` is superseded by an attribute macro expansion. That is, `e` is + * a transitive child of an item with an attribute macro expansion. + * + * Since this predicate is referenced in the charpred of `Element`, we need to + * use the parent-child relation on raw elements to avoid non-monotonicity. + */ + private predicate supersededByAttributeMacroExpansionRaw(Raw::Item item, Raw::Element e) { + exists(item.getAttributeMacroExpansion()) and + e = Raw::getImmediateChild(item, _) and + not e = item.getAttributeMacroExpansion() and + // Don't consider attributes themselves to be superseded. E.g., in `#[a] fn + // f() {}` the macro expansion supersedes `fn f() {}` but not `#[a]`. + not e instanceof Raw::Attr + or + exists(Raw::Element parent | + e = Raw::getImmediateChild(parent, _) and + supersededByAttributeMacroExpansionRaw(item, parent) + ) + } + + private predicate isMacroExpansion(AstNode macro, AstNode expansion) { + expansion = macro.(MacroCall).getMacroCallExpansion() + or + expansion = macro.(Adt).getDeriveMacroExpansion(_) + or + expansion = macro.(Item).getAttributeMacroExpansion() + } + + /** + * Gets the immediately enclosing macro invocation for element `e`, if any. + * + * The result is either a `MacroCall`, an `Adt` with a derive macro expansion, or + * an `Item` with an attribute macro expansion. + */ + cached + AstNode getImmediatelyEnclosingMacroInvocation(Element e) { + isMacroExpansion(result, e) + or + exists(Element mid | + result = getImmediatelyEnclosingMacroInvocation(mid) and + mid = getImmediateParent(e) and + not isMacroExpansion(mid, e) + ) + } + + pragma[nomagic] + private predicate isAttributeMacroExpansionSourceLocation(Item i, Location l) { + exists(Raw::Locatable e, @location_default loc | + supersededByAttributeMacroExpansionRaw(Synth::convertElementToRaw(i), e) and + locatable_locations(e, loc) and + l = LocationImpl::TLocationDefault(loc) + ) + } + + /** Gets an AST node whose location is inside the token tree belonging to `mc`. */ + pragma[nomagic] + private AstNode getATokenTreeNode(MacroCall mc) { + mc = getImmediatelyEnclosingMacroInvocation(result) and + mc.getTokenTree().getLocation().contains(result.getLocation()) + } + + /** Holds if `n` is inside a macro expansion. */ + cached + predicate isInMacroExpansion(AstNode n) { exists(getImmediatelyEnclosingMacroInvocation(n)) } + + /** + * Holds if `n` exists only as the result of a macro expansion. + * + * This is the same as `isInMacroExpansion(n)`, but excludes AST nodes corresponding + * to macro arguments, including attribute macro targets. + * + * Note: This predicate is a heuristic based on location information and may not be + * accurate in all cases. + */ + cached + predicate isFromMacroExpansion(AstNode n) { + exists(AstNode macro | + macro = getImmediatelyEnclosingMacroInvocation(n) and + not n = getATokenTreeNode(macro) and + not isAttributeMacroExpansionSourceLocation(macro, n.getLocation()) + ) + or + isFromMacroExpansion(pragma[only_bind_into](getImmediatelyEnclosingMacroInvocation(n))) + } + + cached + predicate isRelevantElement(Generated::Element e) { + exists(Raw::Element raw | + raw = Synth::convertElementToRaw(e) and + not supersededByAttributeMacroExpansionRaw(_, raw) + ) + or + // Synthetic elements are relevant when their parents are + Synth::convertFormatArgsExprToRaw(_) = Synth::getSynthParent(e) + } + } + class Element extends Generated::Element { + Element() { MacroExpansion::isRelevantElement(this) } + override string toStringImpl() { result = this.getAPrimaryQlClass() } /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll index e57a416fa721..3862cc42137e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll @@ -31,5 +31,23 @@ module Impl { result = this.getVariantList().getAVariant() and result.getName().getText() = name } + + /** + * Holds if this is a field-less enum, that is, an enum where no constructors contain fields. + * + * See: https://doc.rust-lang.org/reference/items/enumerations.html#r-items.enum.fieldless + */ + predicate isFieldless() { + forall(Variant v | v = this.getVariantList().getAVariant() | v.getNumberOfFields() = 0) + } + + /** + * Holds if this is a unit-only enum, that is, an enum where all constructors are unit variants. + * + * See: https://doc.rust-lang.org/reference/items/enumerations.html#r-items.enum.unit-only + */ + predicate isUnitOnly() { + forall(Variant v | v = this.getVariantList().getAVariant() | v.isUnit()) + } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessImpl.qll index adb12a359316..35154ae0acb0 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessImpl.qll @@ -31,6 +31,8 @@ module Impl { override string toStringImpl() { result = this.getName() } + override string getAPrimaryQlClass() { result = "FormatTemplateVariableAccess" } + /** Gets the name of the variable */ string getName() { result = argument.getName() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll index f211708bc812..46e554e4b420 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Item`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.Item * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An item such as a function, struct, enum, etc. * @@ -23,4 +23,10 @@ module Impl { * ``` */ class Item extends Generated::Item { } + + private class ItemWithAttributeMacroExpansion extends Item { + ItemWithAttributeMacroExpansion() { this.hasAttributeMacroExpansion() } + + override string toStringImpl() { result = "(item with attribute macro expansion)" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LiteralExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LiteralExprImpl.qll index a836a4c40752..45c18ac3a9d0 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LiteralExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LiteralExprImpl.qll @@ -68,7 +68,7 @@ module Impl { * [1]: https://doc.rust-lang.org/reference/tokens.html#string-literals */ class StringLiteralExpr extends LiteralExpr { - StringLiteralExpr() { this.getTextValue().regexpMatch("r?#*\".*\"#*") } + StringLiteralExpr() { this.getTextValue().charAt(0) = ["\"", "r"] } override string getAPrimaryQlClass() { result = "StringLiteralExpr" } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LocatableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LocatableImpl.qll index fcb5289e0493..78a9e7f38eca 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LocatableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LocatableImpl.qll @@ -5,6 +5,7 @@ */ import codeql.Locations +private import codeql.rust.elements.internal.ElementImpl::Impl as ElementImpl private import codeql.rust.elements.internal.LocationImpl private import codeql.rust.elements.internal.generated.Locatable private import codeql.rust.elements.internal.generated.Synth @@ -50,21 +51,12 @@ module Impl { locatable_locations(Synth::convertLocatableToRaw(l), result) } - private MacroCall getImmediatelyEnclosingMacroCall(AstNode n) { - result = n.getParentNode() - or - exists(AstNode mid | - result = getImmediatelyEnclosingMacroCall(mid) and - n.getParentNode() = mid and - not mid instanceof MacroCall - ) - } - /** Gets the non-synthesized location of `l`, if any. */ LocationImpl::LocationDefault getLocationDefault(Locatable l) { result = LocationImpl::TLocationDefault(getDbLocation(l)) or not exists(getDbLocation(l)) and - result = getLocationDefault(getImmediatelyEnclosingMacroCall(l)) + result = + getLocationDefault(ElementImpl::MacroExpansion::getImmediatelyEnclosingMacroInvocation(l)) } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll index 17cc47d803f8..8e048517f63c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll @@ -14,17 +14,6 @@ module Impl { private import rust private import codeql.rust.internal.PathResolution - pragma[nomagic] - predicate isInMacroExpansion(AstNode root, AstNode n) { - n = root.(MacroCall).getMacroCallExpansion() - or - n = root.(Adt).getDeriveMacroExpansion(_) - or - n = root.(Item).getAttributeMacroExpansion() - or - isInMacroExpansion(root, n.getParentNode()) - } - // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A macro invocation. @@ -35,16 +24,7 @@ module Impl { * ``` */ class MacroCall extends Generated::MacroCall { - override string toStringImpl() { - if this.hasPath() then result = this.getPath().toAbbreviatedString() + "!..." else result = "" - } - - /** Gets an AST node whose location is inside the token tree belonging to this macro call. */ - pragma[nomagic] - AstNode getATokenTreeNode() { - isInMacroExpansion(this, result) and - this.getTokenTree().getLocation().contains(result.getLocation()) - } + override string toStringImpl() { result = this.getPath().toAbbreviatedString() + "!..." } /** * Gets the macro definition that this macro call resolves to. diff --git a/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll index e8c800bc9b8c..f52fd3aa0674 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll @@ -21,6 +21,24 @@ module Impl { * ``` */ class ParenExpr extends Generated::ParenExpr { - override string toStringImpl() { result = "(" + this.getExpr().toAbbreviatedString() + ")" } + override string toStringImpl() { + result = "(" + this.getExpr().toAbbreviatedString() + ")" + or + // In macro expansions such as + // + // ```rust + // [ + // "a", + // "b", + // #[cfg(target_os = "macos")] + // "c", + // ] + // ``` + // + // the last array element will give rise to an empty `ParenExpr` when not + // compiling for macos. + not exists(this.getExpr().toAbbreviatedString()) and + result = "(...)" + } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll index 652dc68b3c9c..cb2abc45e10c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll @@ -4,6 +4,7 @@ * INTERNAL: Do not use. */ +private import rust private import codeql.rust.elements.internal.generated.PathExpr /** @@ -25,5 +26,11 @@ module Impl { override string toStringImpl() { result = this.toAbbreviatedString() } override string toAbbreviatedString() { result = this.getPath().toStringImpl() } + + override string getAPrimaryQlClass() { + if this instanceof VariableAccess + then result = "VariableAccess" + else result = super.getAPrimaryQlClass() + } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll index 3b6fc1ee4ea6..cb4121b7224d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll @@ -32,20 +32,25 @@ module Impl { result.getName().getText() = name } + /** Gets a record field, if any. */ + StructField getAStructField() { result = this.getStructField(_) } + /** Gets the `i`th tuple field, if any. */ pragma[nomagic] TupleField getTupleField(int i) { result = this.getFieldList().(TupleFieldList).getField(i) } + /** Gets a tuple field, if any. */ + TupleField getATupleField() { result = this.getTupleField(_) } + /** Holds if this struct uses tuple fields. */ pragma[nomagic] predicate isTuple() { this.getFieldList() instanceof TupleFieldList } - /** - * Holds if this struct uses record fields. - * - * Empty structs are considered to use record fields. - */ + /** Holds if this struct uses struct fields. */ pragma[nomagic] - predicate isStruct() { not this.isTuple() } + predicate isStruct() { this.getFieldList() instanceof StructFieldList } + + /** Holds if this struct does not have a field list. */ + predicate isUnit() { not this.hasFieldList() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll index 6f89be716603..4569a108cd8c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll @@ -1,8 +1,9 @@ private import rust private import codeql.rust.controlflow.ControlFlowGraph +private import codeql.rust.internal.PathResolution as PathResolution private import codeql.rust.elements.internal.generated.ParentChild as ParentChild +private import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl private import codeql.rust.elements.internal.PathImpl::Impl as PathImpl -private import codeql.rust.elements.internal.PathExprBaseImpl::Impl as PathExprBaseImpl private import codeql.rust.elements.internal.FormatTemplateVariableAccessImpl::Impl as FormatTemplateVariableAccessImpl private import codeql.util.DenseRank @@ -15,21 +16,12 @@ module Impl { class BlockExprScope extends VariableScope, BlockExpr { } - abstract class MatchArmScope extends VariableScope { - MatchArm arm; - - bindingset[arm] - MatchArmScope() { exists(arm) } - - Pat getPat() { result = arm.getPat() } - } - - class MatchArmExprScope extends MatchArmScope { - MatchArmExprScope() { this = arm.getExpr() } + class MatchArmExprScope extends VariableScope { + MatchArmExprScope() { this = any(MatchArm arm).getExpr() } } - class MatchArmGuardScope extends MatchArmScope { - MatchArmGuardScope() { this = arm.getGuard() } + class MatchArmGuardScope extends VariableScope { + MatchArmGuardScope() { this = any(MatchArm arm).getGuard() } } class ClosureBodyScope extends VariableScope { @@ -41,7 +33,7 @@ module Impl { * * Such variables are only available in the body guarded by the condition. */ - class ConditionScope extends VariableScope, Expr { + class ConditionScope extends VariableScope { private AstNode parent; private AstNode body; @@ -57,6 +49,12 @@ module Impl { this = we.getCondition() and body = we.getLoopBody() ) + or + parent = + any(MatchArm ma | + this = ma.getGuard() and + body = ma.getExpr() + ) } /** Gets the parent of this condition. */ @@ -101,7 +99,7 @@ module Impl { * pattern. */ cached - private predicate variableDecl(AstNode definingNode, Name name, string text) { + predicate variableDecl(AstNode definingNode, Name name, string text) { Cached::ref() and exists(SelfParam sp | name = sp.getName() and @@ -120,11 +118,7 @@ module Impl { not exists(getOutermostEnclosingOrPat(pat)) and definingNode = name ) and text = name.getText() and - // exclude for now anything starting with an uppercase character, which may be a reference to - // an enum constant (e.g. `None`). This excludes static and constant variables (UPPERCASE), - // which we don't appear to recognize yet anyway. This also assumes programmers follow the - // naming guidelines, which they generally do, but they're not enforced. - not text.charAt(0).isUppercase() and + not PathResolution::identPatIsResolvable(pat) and // exclude parameters from functions without a body as these are trait method declarations // without implementations not exists(Function f | not f.hasBody() and f.getAParam().getPat() = pat) and @@ -417,11 +411,14 @@ module Impl { ord = getPreOrderNumbering(scope, scope) or exists(Pat pat | pat = getAVariablePatAncestor(v) | - scope = - any(MatchArmScope arm | - arm.getPat() = pat and - ord = getPreOrderNumbering(scope, arm) - ) + exists(MatchArm arm | + pat = arm.getPat() and + ord = getPreOrderNumbering(scope, scope) + | + scope = arm.getGuard() + or + not arm.hasGuard() and scope = arm.getExpr() + ) or exists(LetStmt let | let.getPat() = pat and @@ -666,7 +663,7 @@ module Impl { } /** A variable access. */ - class VariableAccess extends PathExprBaseImpl::PathExprBase { + class VariableAccess extends PathExprBase { private string name; private Variable v; @@ -677,10 +674,6 @@ module Impl { /** Holds if this access is a capture. */ predicate isCapture() { this.getEnclosingCfgScope() != v.getEnclosingCfgScope() } - - override string toStringImpl() { result = name } - - override string getAPrimaryQlClass() { result = "VariableAccess" } } /** Holds if `e` occurs in the LHS of an assignment or compound assignment. */ @@ -722,7 +715,7 @@ module Impl { } /** A nested function access. */ - class NestedFunctionAccess extends PathExprBaseImpl::PathExprBase { + class NestedFunctionAccess extends PathExprBase { private Function f; NestedFunctionAccess() { nestedFunctionAccess(_, f, this) } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll index d6b25b21e289..ed8b93f6c1d2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll @@ -36,17 +36,27 @@ module Impl { pragma[nomagic] TupleField getTupleField(int i) { result = this.getFieldList().(TupleFieldList).getField(i) } + /** Gets the number of fields of this variant. */ + int getNumberOfFields() { + not this.hasFieldList() and + result = 0 + or + result = this.getFieldList().(StructFieldList).getNumberOfFields() + or + result = this.getFieldList().(TupleFieldList).getNumberOfFields() + } + /** Holds if this variant uses tuple fields. */ pragma[nomagic] predicate isTuple() { this.getFieldList() instanceof TupleFieldList } - /** - * Holds if this variant uses struct fields. - * - * Empty variants are considered to use struct fields. - */ + /** Holds if this variant uses struct fields. */ + pragma[nomagic] + predicate isStruct() { this.getFieldList() instanceof StructFieldList } + + /** Holds if this variant does not have a field list. */ pragma[nomagic] - predicate isStruct() { not this.isTuple() } + predicate isUnit() { not this.hasFieldList() } /** Gets the enum that this variant belongs to. */ Enum getEnum() { this = result.getVariantList().getAVariant() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll index 7b8d4d4e4627..233c29e01738 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll @@ -74,7 +74,7 @@ private module Impl { private Element getImmediateChildOfArgList(ArgList e, int index, string partialPredicateCall) { exists(int n, int nArg | n = 0 and - nArg = n + 1 + max(int i | i = -1 or exists(e.getArg(i)) | i) and + nArg = n + e.getNumberOfArgs() and ( none() or @@ -126,8 +126,8 @@ private module Impl { ) { exists(int n, int nAssocItem, int nAttr | n = 0 and - nAssocItem = n + 1 + max(int i | i = -1 or exists(e.getAssocItem(i)) | i) and - nAttr = nAssocItem + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAssocItem = n + e.getNumberOfAssocItems() and + nAttr = nAssocItem + e.getNumberOfAttrs() and ( none() or @@ -157,8 +157,8 @@ private module Impl { ) { exists(int n, int nAttr, int nExternItem | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nExternItem = nAttr + 1 + max(int i | i = -1 or exists(e.getExternItem(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nExternItem = nAttr + e.getNumberOfExternItems() and ( none() or @@ -207,7 +207,7 @@ private module Impl { ) { exists(int n, int nGenericArg | n = 0 and - nGenericArg = n + 1 + max(int i | i = -1 or exists(e.getGenericArg(i)) | i) and + nGenericArg = n + e.getNumberOfGenericArgs() and ( none() or @@ -222,7 +222,7 @@ private module Impl { ) { exists(int n, int nGenericParam | n = 0 and - nGenericParam = n + 1 + max(int i | i = -1 or exists(e.getGenericParam(i)) | i) and + nGenericParam = n + e.getNumberOfGenericParams() and ( none() or @@ -235,8 +235,8 @@ private module Impl { private Element getImmediateChildOfItemList(ItemList e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nItem | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nItem = nAttr + 1 + max(int i | i = -1 or exists(e.getItem(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nItem = nAttr + e.getNumberOfItems() and ( none() or @@ -276,7 +276,7 @@ private module Impl { private Element getImmediateChildOfMacroItems(MacroItems e, int index, string partialPredicateCall) { exists(int n, int nItem | n = 0 and - nItem = n + 1 + max(int i | i = -1 or exists(e.getItem(i)) | i) and + nItem = n + e.getNumberOfItems() and ( none() or @@ -289,7 +289,7 @@ private module Impl { private Element getImmediateChildOfMatchArm(MatchArm e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr, int nGuard, int nPat | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and nGuard = nExpr + 1 and nPat = nGuard + 1 and @@ -313,8 +313,8 @@ private module Impl { ) { exists(int n, int nArm, int nAttr | n = 0 and - nArm = n + 1 + max(int i | i = -1 or exists(e.getArm(i)) | i) and - nAttr = nArm + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nArm = n + e.getNumberOfArms() and + nAttr = nArm + e.getNumberOfAttrs() and ( none() or @@ -362,7 +362,7 @@ private module Impl { private Element getImmediateChildOfParamList(ParamList e, int index, string partialPredicateCall) { exists(int n, int nParam, int nSelfParam | n = 0 and - nParam = n + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nParam = n + e.getNumberOfParams() and nSelfParam = nParam + 1 and ( none() @@ -380,7 +380,7 @@ private module Impl { ) { exists(int n, int nTypeArg | n = 0 and - nTypeArg = n + 1 + max(int i | i = -1 or exists(e.getTypeArg(i)) | i) and + nTypeArg = n + e.getNumberOfTypeArgs() and ( none() or @@ -487,8 +487,8 @@ private module Impl { private Element getImmediateChildOfSourceFile(SourceFile e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nItem | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nItem = nAttr + 1 + max(int i | i = -1 or exists(e.getItem(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nItem = nAttr + e.getNumberOfItems() and ( none() or @@ -504,8 +504,8 @@ private module Impl { private Element getImmediateChildOfStmtList(StmtList e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nStatement, int nTailExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nStatement = nAttr + 1 + max(int i | i = -1 or exists(e.getStatement(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nStatement = nAttr + e.getNumberOfStatements() and nTailExpr = nStatement + 1 and ( none() @@ -526,7 +526,7 @@ private module Impl { ) { exists(int n, int nAttr, int nExpr, int nIdentifier | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and nIdentifier = nExpr + 1 and ( @@ -547,8 +547,8 @@ private module Impl { ) { exists(int n, int nAttr, int nField, int nSpread | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nField = nAttr + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nField = nAttr + e.getNumberOfFields() and nSpread = nField + 1 and ( none() @@ -569,7 +569,7 @@ private module Impl { ) { exists(int n, int nAttr, int nDefault, int nName, int nTypeRepr, int nVisibility | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nDefault = nAttr + 1 and nName = nDefault + 1 and nTypeRepr = nName + 1 and @@ -596,7 +596,7 @@ private module Impl { ) { exists(int n, int nAttr, int nIdentifier, int nPat | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nIdentifier = nAttr + 1 and nPat = nIdentifier + 1 and ( @@ -617,7 +617,7 @@ private module Impl { ) { exists(int n, int nField, int nRestPat | n = 0 and - nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nField = n + e.getNumberOfFields() and nRestPat = nField + 1 and ( none() @@ -637,7 +637,7 @@ private module Impl { private Element getImmediateChildOfTupleField(TupleField e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nTypeRepr, int nVisibility | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nTypeRepr = nAttr + 1 and nVisibility = nTypeRepr + 1 and ( @@ -681,7 +681,7 @@ private module Impl { ) { exists(int n, int nBound | n = 0 and - nBound = n + 1 + max(int i | i = -1 or exists(e.getBound(i)) | i) and + nBound = n + e.getNumberOfBounds() and ( none() or @@ -696,7 +696,7 @@ private module Impl { ) { exists(int n, int nUseBoundGenericArg | n = 0 and - nUseBoundGenericArg = n + 1 + max(int i | i = -1 or exists(e.getUseBoundGenericArg(i)) | i) and + nUseBoundGenericArg = n + e.getNumberOfUseBoundGenericArgs() and ( none() or @@ -729,7 +729,7 @@ private module Impl { ) { exists(int n, int nUseTree | n = 0 and - nUseTree = n + 1 + max(int i | i = -1 or exists(e.getUseTree(i)) | i) and + nUseTree = n + e.getNumberOfUseTrees() and ( none() or @@ -744,7 +744,7 @@ private module Impl { ) { exists(int n, int nVariant | n = 0 and - nVariant = n + 1 + max(int i | i = -1 or exists(e.getVariant(i)) | i) and + nVariant = n + e.getNumberOfVariants() and ( none() or @@ -771,7 +771,7 @@ private module Impl { ) { exists(int n, int nPredicate | n = 0 and - nPredicate = n + 1 + max(int i | i = -1 or exists(e.getPredicate(i)) | i) and + nPredicate = n + e.getNumberOfPredicates() and ( none() or @@ -809,8 +809,8 @@ private module Impl { ) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nExpr = nAttr + 1 + max(int i | i = -1 or exists(e.getExpr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + e.getNumberOfExprs() and ( none() or @@ -894,7 +894,7 @@ private module Impl { ) { exists(int n, int nAsmOption | n = 0 and - nAsmOption = n + 1 + max(int i | i = -1 or exists(e.getAsmOption(i)) | i) and + nAsmOption = n + e.getNumberOfAsmOptions() and ( none() or @@ -991,7 +991,7 @@ private module Impl { private Element getImmediateChildOfAwaitExpr(AwaitExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -1007,7 +1007,7 @@ private module Impl { private Element getImmediateChildOfBecomeExpr(BecomeExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -1023,7 +1023,7 @@ private module Impl { private Element getImmediateChildOfBinaryExpr(BinaryExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nLhs, int nRhs | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nLhs = nAttr + 1 and nRhs = nLhs + 1 and ( @@ -1054,7 +1054,7 @@ private module Impl { private Element getImmediateChildOfBreakExpr(BreakExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr, int nLifetime | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and nLifetime = nExpr + 1 and ( @@ -1073,7 +1073,7 @@ private module Impl { private Element getImmediateChildOfCastExpr(CastExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr, int nTypeRepr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and nTypeRepr = nExpr + 1 and ( @@ -1095,7 +1095,7 @@ private module Impl { exists(int n, int nParamList, int nAttr, int nClosureBody, int nForBinder, int nRetType | n = 0 and nParamList = n + 1 and - nAttr = nParamList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nParamList + e.getNumberOfAttrs() and nClosureBody = nAttr + 1 and nForBinder = nClosureBody + 1 and nRetType = nForBinder + 1 and @@ -1149,7 +1149,7 @@ private module Impl { private Element getImmediateChildOfConstParam(ConstParam e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nDefaultVal, int nName, int nTypeRepr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nDefaultVal = nAttr + 1 and nName = nDefaultVal + 1 and nTypeRepr = nName + 1 and @@ -1173,7 +1173,7 @@ private module Impl { ) { exists(int n, int nAttr, int nLifetime | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nLifetime = nAttr + 1 and ( none() @@ -1215,7 +1215,7 @@ private module Impl { private Element getImmediateChildOfFieldExpr(FieldExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nContainer, int nIdentifier | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nContainer = nAttr + 1 and nIdentifier = nContainer + 1 and ( @@ -1273,10 +1273,10 @@ private module Impl { ) { exists(int n, int nArg, int nAttr, int nTemplate, int nFormat | n = 0 and - nArg = n + 1 + max(int i | i = -1 or exists(e.getArg(i)) | i) and - nAttr = nArg + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nArg = n + e.getNumberOfArgs() and + nAttr = nArg + e.getNumberOfAttrs() and nTemplate = nAttr + 1 and - nFormat = nTemplate + 1 + max(int i | i = -1 or exists(e.getFormat(i)) | i) and + nFormat = nTemplate + e.getNumberOfFormats() and ( none() or @@ -1297,7 +1297,7 @@ private module Impl { private Element getImmediateChildOfIdentPat(IdentPat e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nName, int nPat | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nName = nAttr + 1 and nPat = nName + 1 and ( @@ -1316,7 +1316,7 @@ private module Impl { private Element getImmediateChildOfIfExpr(IfExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nCondition, int nElse, int nThen | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nCondition = nAttr + 1 and nElse = nCondition + 1 and nThen = nElse + 1 and @@ -1352,7 +1352,7 @@ private module Impl { private Element getImmediateChildOfIndexExpr(IndexExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nBase, int nIndex | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nBase = nAttr + 1 and nIndex = nBase + 1 and ( @@ -1377,7 +1377,7 @@ private module Impl { private Element getImmediateChildOfLetExpr(LetExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nScrutinee, int nPat | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nScrutinee = nAttr + 1 and nPat = nScrutinee + 1 and ( @@ -1396,7 +1396,7 @@ private module Impl { private Element getImmediateChildOfLetStmt(LetStmt e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nInitializer, int nLetElse, int nPat, int nTypeRepr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nInitializer = nAttr + 1 and nLetElse = nInitializer + 1 and nPat = nLetElse + 1 and @@ -1441,7 +1441,7 @@ private module Impl { ) { exists(int n, int nAttr, int nLifetime, int nTypeBoundList | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nLifetime = nAttr + 1 and nTypeBoundList = nLifetime + 1 and ( @@ -1464,7 +1464,7 @@ private module Impl { ) { exists(int n, int nAttr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and ( none() or @@ -1491,7 +1491,7 @@ private module Impl { ) { exists(int n, int nStatement, int nTailExpr | n = 0 and - nStatement = n + 1 + max(int i | i = -1 or exists(e.getStatement(i)) | i) and + nStatement = n + e.getNumberOfStatements() and nTailExpr = nStatement + 1 and ( none() @@ -1545,7 +1545,7 @@ private module Impl { private Element getImmediateChildOfMatchExpr(MatchExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nScrutinee, int nMatchArmList | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nScrutinee = nAttr + 1 and nMatchArmList = nScrutinee + 1 and ( @@ -1578,8 +1578,8 @@ private module Impl { ) { exists(int n, int nAttr, int nField, int nTypeRepr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nField = nAttr + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nField = nAttr + e.getNumberOfFields() and nTypeRepr = nField + 1 and ( none() @@ -1598,7 +1598,7 @@ private module Impl { private Element getImmediateChildOfOrPat(OrPat e, int index, string partialPredicateCall) { exists(int n, int nPat | n = 0 and - nPat = n + 1 + max(int i | i = -1 or exists(e.getPat(i)) | i) and + nPat = n + e.getNumberOfPats() and ( none() or @@ -1611,7 +1611,7 @@ private module Impl { private Element getImmediateChildOfParam(Param e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nTypeRepr, int nPat | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nTypeRepr = nAttr + 1 and nPat = nTypeRepr + 1 and ( @@ -1630,7 +1630,7 @@ private module Impl { private Element getImmediateChildOfParenExpr(ParenExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -1698,7 +1698,7 @@ private module Impl { private Element getImmediateChildOfPrefixExpr(PrefixExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -1728,7 +1728,7 @@ private module Impl { private Element getImmediateChildOfRangeExpr(RangeExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nEnd, int nStart | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nEnd = nAttr + 1 and nStart = nEnd + 1 and ( @@ -1762,7 +1762,7 @@ private module Impl { private Element getImmediateChildOfRefExpr(RefExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -1807,7 +1807,7 @@ private module Impl { private Element getImmediateChildOfRestPat(RestPat e, int index, string partialPredicateCall) { exists(int n, int nAttr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and ( none() or @@ -1820,7 +1820,7 @@ private module Impl { private Element getImmediateChildOfReturnExpr(ReturnExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -1836,7 +1836,7 @@ private module Impl { private Element getImmediateChildOfSelfParam(SelfParam e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nTypeRepr, int nLifetime, int nName | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nTypeRepr = nAttr + 1 and nLifetime = nTypeRepr + 1 and nName = nLifetime + 1 and @@ -1858,7 +1858,7 @@ private module Impl { private Element getImmediateChildOfSlicePat(SlicePat e, int index, string partialPredicateCall) { exists(int n, int nPat | n = 0 and - nPat = n + 1 + max(int i | i = -1 or exists(e.getPat(i)) | i) and + nPat = n + e.getNumberOfPats() and ( none() or @@ -1904,7 +1904,7 @@ private module Impl { ) { exists(int n, int nField | n = 0 and - nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nField = n + e.getNumberOfFields() and ( none() or @@ -1934,7 +1934,7 @@ private module Impl { private Element getImmediateChildOfTryExpr(TryExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -1950,8 +1950,8 @@ private module Impl { private Element getImmediateChildOfTupleExpr(TupleExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nField | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nField = nAttr + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nField = nAttr + e.getNumberOfFields() and ( none() or @@ -1969,7 +1969,7 @@ private module Impl { ) { exists(int n, int nField | n = 0 and - nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nField = n + e.getNumberOfFields() and ( none() or @@ -1982,7 +1982,7 @@ private module Impl { private Element getImmediateChildOfTuplePat(TuplePat e, int index, string partialPredicateCall) { exists(int n, int nField | n = 0 and - nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nField = n + e.getNumberOfFields() and ( none() or @@ -1998,7 +1998,7 @@ private module Impl { exists(int n, int nPath, int nField | n = 0 and nPath = n + 1 and - nField = nPath + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nField = nPath + e.getNumberOfFields() and ( none() or @@ -2015,7 +2015,7 @@ private module Impl { ) { exists(int n, int nField | n = 0 and - nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nField = n + e.getNumberOfFields() and ( none() or @@ -2040,7 +2040,7 @@ private module Impl { private Element getImmediateChildOfTypeParam(TypeParam e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nDefaultType, int nName, int nTypeBoundList | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nDefaultType = nAttr + 1 and nName = nDefaultType + 1 and nTypeBoundList = nName + 1 and @@ -2064,7 +2064,7 @@ private module Impl { ) { exists(int n, int nAttr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and ( none() or @@ -2077,7 +2077,7 @@ private module Impl { private Element getImmediateChildOfVariant(Variant e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nDiscriminant, int nFieldList, int nName, int nVisibility | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nDiscriminant = nAttr + 1 and nFieldList = nDiscriminant + 1 and nName = nFieldList + 1 and @@ -2108,7 +2108,7 @@ private module Impl { private Element getImmediateChildOfYeetExpr(YeetExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -2124,7 +2124,7 @@ private module Impl { private Element getImmediateChildOfYieldExpr(YieldExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -2142,8 +2142,8 @@ private module Impl { ) { exists(int n, int nExpr, int nAttr | n = 0 and - nExpr = n + 1 + max(int i | i = -1 or exists(e.getExpr(i)) | i) and - nAttr = nExpr + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nExpr = n + e.getNumberOfExprs() and + nAttr = nExpr + e.getNumberOfAttrs() and ( none() or @@ -2161,8 +2161,8 @@ private module Impl { ) { exists(int n, int nExpr, int nAttr, int nRepeatOperand, int nRepeatLength | n = 0 and - nExpr = n + 1 + max(int i | i = -1 or exists(e.getExpr(i)) | i) and - nAttr = nExpr + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nExpr = n + e.getNumberOfExprs() and + nAttr = nExpr + e.getNumberOfAttrs() and nRepeatOperand = nAttr + 1 and nRepeatLength = nRepeatOperand + 1 and ( @@ -2187,9 +2187,9 @@ private module Impl { exists(int n, int nAttributeMacroExpansion, int nAsmPiece, int nAttr, int nTemplate | n = 0 and nAttributeMacroExpansion = n + 1 and - nAsmPiece = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAsmPiece(i)) | i) and - nAttr = nAsmPiece + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nTemplate = nAttr + 1 + max(int i | i = -1 or exists(e.getTemplate(i)) | i) and + nAsmPiece = nAttributeMacroExpansion + e.getNumberOfAsmPieces() and + nAttr = nAsmPiece + e.getNumberOfAttrs() and + nTemplate = nAttr + e.getNumberOfTemplates() and ( none() or @@ -2213,7 +2213,7 @@ private module Impl { exists(int n, int nLabel, int nAttr, int nStmtList | n = 0 and nLabel = n + 1 and - nAttr = nLabel + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nLabel + e.getNumberOfAttrs() and nStmtList = nAttr + 1 and ( none() @@ -2232,7 +2232,7 @@ private module Impl { exists(int n, int nArgList, int nAttr, int nFunction | n = 0 and nArgList = n + 1 and - nAttr = nArgList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nArgList + e.getNumberOfAttrs() and nFunction = nAttr + 1 and ( none() @@ -2254,7 +2254,7 @@ private module Impl { n = 0 and nAttributeMacroExpansion = n + 1 and nAbi = nAttributeMacroExpansion + 1 and - nAttr = nAbi + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAbi + e.getNumberOfAttrs() and nExternItemList = nAttr + 1 and ( none() @@ -2283,7 +2283,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nIdentifier = nAttr + 1 and nRename = nIdentifier + 1 and nVisibility = nRename + 1 and @@ -2320,7 +2320,7 @@ private module Impl { n = 0 and nAttributeMacroExpansion = n + 1 and nAssocItemList = nAttributeMacroExpansion + 1 and - nAttr = nAssocItemList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAssocItemList + e.getNumberOfAttrs() and nGenericParamList = nAttr + 1 and nSelfTy = nGenericParamList + 1 and nTrait = nSelfTy + 1 and @@ -2365,7 +2365,7 @@ private module Impl { n = 0 and nAttributeMacroExpansion = n + 1 and nArgs = nAttributeMacroExpansion + 1 and - nAttr = nArgs + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nArgs + e.getNumberOfAttrs() and nBody = nAttr + 1 and nName = nBody + 1 and nVisibility = nName + 1 and @@ -2398,7 +2398,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nName = nAttr + 1 and nTokenTree = nName + 1 and nVisibility = nTokenTree + 1 and @@ -2427,7 +2427,7 @@ private module Impl { exists(int n, int nArgList, int nAttr, int nGenericArgList, int nIdentifier, int nReceiver | n = 0 and nArgList = n + 1 and - nAttr = nArgList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nArgList + e.getNumberOfAttrs() and nGenericArgList = nAttr + 1 and nIdentifier = nGenericArgList + 1 and nReceiver = nIdentifier + 1 and @@ -2458,7 +2458,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nItemList = nAttr + 1 and nName = nItemList + 1 and nVisibility = nName + 1 and @@ -2485,7 +2485,7 @@ private module Impl { exists(int n, int nPath, int nAttr | n = 0 and nPath = n + 1 and - nAttr = nPath + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nPath + e.getNumberOfAttrs() and ( none() or @@ -2505,7 +2505,7 @@ private module Impl { n = 0 and nAttributeMacroExpansion = n + 1 and nAssocItemList = nAttributeMacroExpansion + 1 and - nAttr = nAssocItemList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAssocItemList + e.getNumberOfAttrs() and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nTypeBoundList = nName + 1 and @@ -2551,7 +2551,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nTypeBoundList = nName + 1 and @@ -2590,7 +2590,7 @@ private module Impl { exists(int n, int nAttributeMacroExpansion, int nAttr, int nUseTree, int nVisibility | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nUseTree = nAttr + 1 and nVisibility = nUseTree + 1 and ( @@ -2617,7 +2617,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nBody = nAttr + 1 and nGenericParamList = nBody + 1 and nName = nGenericParamList + 1 and @@ -2660,10 +2660,8 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nDeriveMacroExpansion = - nAttributeMacroExpansion + 1 + - max(int i | i = -1 or exists(e.getDeriveMacroExpansion(i)) | i) and - nAttr = nDeriveMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nDeriveMacroExpansion = nAttributeMacroExpansion + e.getNumberOfDeriveMacroExpansions() and + nAttr = nDeriveMacroExpansion + e.getNumberOfAttrs() and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nVariantList = nName + 1 and @@ -2707,7 +2705,7 @@ private module Impl { n = 0 and nLabel = n + 1 and nLoopBody = nLabel + 1 and - nAttr = nLoopBody + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nLoopBody + e.getNumberOfAttrs() and nIterable = nAttr + 1 and nPat = nIterable + 1 and ( @@ -2735,7 +2733,7 @@ private module Impl { n = 0 and nAttributeMacroExpansion = n + 1 and nParamList = nAttributeMacroExpansion + 1 and - nAttr = nParamList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nParamList + e.getNumberOfAttrs() and nAbi = nAttr + 1 and nFunctionBody = nAbi + 1 and nGenericParamList = nFunctionBody + 1 and @@ -2783,7 +2781,7 @@ private module Impl { n = 0 and nLabel = n + 1 and nLoopBody = nLabel + 1 and - nAttr = nLoopBody + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nLoopBody + e.getNumberOfAttrs() and ( none() or @@ -2804,7 +2802,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nPath = nAttr + 1 and nTokenTree = nPath + 1 and nMacroCallExpansion = nTokenTree + 1 and @@ -2836,7 +2834,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nBody = nAttr + 1 and nName = nBody + 1 and nTypeRepr = nName + 1 and @@ -2869,10 +2867,8 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nDeriveMacroExpansion = - nAttributeMacroExpansion + 1 + - max(int i | i = -1 or exists(e.getDeriveMacroExpansion(i)) | i) and - nAttr = nDeriveMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nDeriveMacroExpansion = nAttributeMacroExpansion + e.getNumberOfDeriveMacroExpansions() and + nAttr = nDeriveMacroExpansion + e.getNumberOfAttrs() and nFieldList = nAttr + 1 and nGenericParamList = nFieldList + 1 and nName = nGenericParamList + 1 and @@ -2916,7 +2912,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nTypeRepr = nName + 1 and @@ -2963,10 +2959,8 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nDeriveMacroExpansion = - nAttributeMacroExpansion + 1 + - max(int i | i = -1 or exists(e.getDeriveMacroExpansion(i)) | i) and - nAttr = nDeriveMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nDeriveMacroExpansion = nAttributeMacroExpansion + e.getNumberOfDeriveMacroExpansions() and + nAttr = nDeriveMacroExpansion + e.getNumberOfAttrs() and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nStructFieldList = nName + 1 and @@ -3012,7 +3006,7 @@ private module Impl { n = 0 and nLabel = n + 1 and nLoopBody = nLabel + 1 and - nAttr = nLoopBody + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nLoopBody + e.getNumberOfAttrs() and nCondition = nAttr + 1 and ( none() diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll index 21782ed7db43..aff81e9b9ab8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll @@ -34,6 +34,8 @@ module Raw { int getDurationMs() { extractor_steps(this, _, result) } } + private Element getImmediateChildOfExtractorStep(ExtractorStep e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -56,6 +58,8 @@ module Raw { Crate getCrate() { named_crates(this, _, result) } } + private Element getImmediateChildOfNamedCrate(NamedCrate e, int index) { none() } + /** * INTERNAL: Do not use. * The base class marking everything that was not properly extracted for some reason, such as: @@ -91,12 +95,27 @@ module Raw { */ string getCfgOption(int index) { crate_cfg_options(this, index, result) } + /** + * Gets the number of cfg options of this crate. + */ + int getNumberOfCfgOptions() { result = count(int i | crate_cfg_options(this, i, _)) } + /** * Gets the `index`th named dependency of this crate (0-based). */ NamedCrate getNamedDependency(int index) { crate_named_dependencies(this, index, result) } + + /** + * Gets the number of named dependencies of this crate. + * INTERNAL: Do not use. + */ + int getNumberOfNamedDependencies() { + result = count(int i | crate_named_dependencies(this, i, _)) + } } + private Element getImmediateChildOfCrate(Crate e, int index) { none() } + /** * INTERNAL: Do not use. * The base class marking errors during parsing or resolution. @@ -105,6 +124,8 @@ module Raw { override string toString() { result = "Missing" } } + private Element getImmediateChildOfMissing(Missing e, int index) { none() } + /** * INTERNAL: Do not use. * The base class for unimplemented nodes. This is used to mark nodes that are not yet extracted. @@ -113,6 +134,8 @@ module Raw { override string toString() { result = "Unimplemented" } } + private Element getImmediateChildOfUnimplemented(Unimplemented e, int index) { none() } + /** * INTERNAL: Do not use. * An ABI specification for an extern function or block. @@ -132,6 +155,8 @@ module Raw { string getAbiString() { abi_abi_strings(this, result) } } + private Element getImmediateChildOfAbi(Abi e, int index) { none() } + /** * INTERNAL: Do not use. * Something that can be addressed by a path. @@ -157,6 +182,23 @@ module Raw { * Gets the `index`th argument of this argument list (0-based). */ Expr getArg(int index) { arg_list_args(this, index, result) } + + /** + * Gets the number of arguments of this argument list. + */ + int getNumberOfArgs() { result = count(int i | arg_list_args(this, i, _)) } + } + + private Element getImmediateChildOfArgList(ArgList e, int index) { + exists(int n, int nArg | + n = 0 and + nArg = n + e.getNumberOfArgs() and + ( + none() + or + result = e.getArg(index - n) + ) + ) } /** @@ -174,6 +216,8 @@ module Raw { override string toString() { result = "AsmDirSpec" } } + private Element getImmediateChildOfAsmDirSpec(AsmDirSpec e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -204,6 +248,21 @@ module Raw { Expr getOutExpr() { asm_operand_expr_out_exprs(this, result) } } + private Element getImmediateChildOfAsmOperandExpr(AsmOperandExpr e, int index) { + exists(int n, int nInExpr, int nOutExpr | + n = 0 and + nInExpr = n + 1 and + nOutExpr = nInExpr + 1 and + ( + none() + or + index = n and result = e.getInExpr() + or + index = nInExpr and result = e.getOutExpr() + ) + ) + } + /** * INTERNAL: Do not use. * An option in an inline assembly block. @@ -224,6 +283,8 @@ module Raw { predicate isRaw() { asm_option_is_raw(this) } } + private Element getImmediateChildOfAsmOption(AsmOption e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -249,6 +310,18 @@ module Raw { NameRef getIdentifier() { asm_reg_spec_identifiers(this, result) } } + private Element getImmediateChildOfAsmRegSpec(AsmRegSpec e, int index) { + exists(int n, int nIdentifier | + n = 0 and + nIdentifier = n + 1 and + ( + none() + or + index = n and result = e.getIdentifier() + ) + ) + } + /** * INTERNAL: Do not use. * A list of `AssocItem` elements, as appearing in a `Trait` or `Impl`. @@ -261,10 +334,35 @@ module Raw { */ AssocItem getAssocItem(int index) { assoc_item_list_assoc_items(this, index, result) } + /** + * Gets the number of assoc items of this assoc item list. + */ + int getNumberOfAssocItems() { result = count(int i | assoc_item_list_assoc_items(this, i, _)) } + /** * Gets the `index`th attr of this assoc item list (0-based). */ Attr getAttr(int index) { assoc_item_list_attrs(this, index, result) } + + /** + * Gets the number of attrs of this assoc item list. + */ + int getNumberOfAttrs() { result = count(int i | assoc_item_list_attrs(this, i, _)) } + } + + private Element getImmediateChildOfAssocItemList(AssocItemList e, int index) { + exists(int n, int nAssocItem, int nAttr | + n = 0 and + nAssocItem = n + e.getNumberOfAssocItems() and + nAttr = nAssocItem + e.getNumberOfAttrs() and + ( + none() + or + result = e.getAssocItem(index - n) + or + result = e.getAttr(index - nAssocItem) + ) + ) } /** @@ -287,6 +385,18 @@ module Raw { Meta getMeta() { attr_meta(this, result) } } + private Element getImmediateChildOfAttr(Attr e, int index) { + exists(int n, int nMeta | + n = 0 and + nMeta = n + 1 and + ( + none() + or + index = n and result = e.getMeta() + ) + ) + } + /** * INTERNAL: Do not use. * A callable. Either a `Function` or a `ClosureExpr`. @@ -301,6 +411,11 @@ module Raw { * Gets the `index`th attr of this callable (0-based). */ Attr getAttr(int index) { callable_attrs(this, index, result) } + + /** + * Gets the number of attrs of this callable. + */ + int getNumberOfAttrs() { result = count(int i | callable_attrs(this, i, _)) } } /** @@ -329,10 +444,37 @@ module Raw { */ Attr getAttr(int index) { extern_item_list_attrs(this, index, result) } + /** + * Gets the number of attrs of this extern item list. + */ + int getNumberOfAttrs() { result = count(int i | extern_item_list_attrs(this, i, _)) } + /** * Gets the `index`th extern item of this extern item list (0-based). */ ExternItem getExternItem(int index) { extern_item_list_extern_items(this, index, result) } + + /** + * Gets the number of extern items of this extern item list. + */ + int getNumberOfExternItems() { + result = count(int i | extern_item_list_extern_items(this, i, _)) + } + } + + private Element getImmediateChildOfExternItemList(ExternItemList e, int index) { + exists(int n, int nAttr, int nExternItem | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExternItem = nAttr + e.getNumberOfExternItems() and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getExternItem(index - nAttr) + ) + ) } /** @@ -373,6 +515,18 @@ module Raw { GenericParamList getGenericParamList() { for_binder_generic_param_lists(this, result) } } + private Element getImmediateChildOfForBinder(ForBinder e, int index) { + exists(int n, int nGenericParamList | + n = 0 and + nGenericParamList = n + 1 and + ( + none() + or + index = n and result = e.getGenericParamList() + ) + ) + } + /** * INTERNAL: Do not use. * A FormatArgsArg. For example the `"world"` in: @@ -394,6 +548,21 @@ module Raw { Name getName() { format_args_arg_names(this, result) } } + private Element getImmediateChildOfFormatArgsArg(FormatArgsArg e, int index) { + exists(int n, int nExpr, int nName | + n = 0 and + nExpr = n + 1 and + nName = nExpr + 1 and + ( + none() + or + index = n and result = e.getExpr() + or + index = nExpr and result = e.getName() + ) + ) + } + /** * INTERNAL: Do not use. * A generic argument in a generic argument list. @@ -420,6 +589,25 @@ module Raw { * Gets the `index`th generic argument of this generic argument list (0-based). */ GenericArg getGenericArg(int index) { generic_arg_list_generic_args(this, index, result) } + + /** + * Gets the number of generic arguments of this generic argument list. + */ + int getNumberOfGenericArgs() { + result = count(int i | generic_arg_list_generic_args(this, i, _)) + } + } + + private Element getImmediateChildOfGenericArgList(GenericArgList e, int index) { + exists(int n, int nGenericArg | + n = 0 and + nGenericArg = n + e.getNumberOfGenericArgs() and + ( + none() + or + result = e.getGenericArg(index - n) + ) + ) } /** @@ -453,6 +641,25 @@ module Raw { GenericParam getGenericParam(int index) { generic_param_list_generic_params(this, index, result) } + + /** + * Gets the number of generic parameters of this generic parameter list. + */ + int getNumberOfGenericParams() { + result = count(int i | generic_param_list_generic_params(this, i, _)) + } + } + + private Element getImmediateChildOfGenericParamList(GenericParamList e, int index) { + exists(int n, int nGenericParam | + n = 0 and + nGenericParam = n + e.getNumberOfGenericParams() and + ( + none() + or + result = e.getGenericParam(index - n) + ) + ) } /** @@ -475,10 +682,35 @@ module Raw { */ Attr getAttr(int index) { item_list_attrs(this, index, result) } + /** + * Gets the number of attrs of this item list. + */ + int getNumberOfAttrs() { result = count(int i | item_list_attrs(this, i, _)) } + /** * Gets the `index`th item of this item list (0-based). */ Item getItem(int index) { item_list_items(this, index, result) } + + /** + * Gets the number of items of this item list. + */ + int getNumberOfItems() { result = count(int i | item_list_items(this, i, _)) } + } + + private Element getImmediateChildOfItemList(ItemList e, int index) { + exists(int n, int nAttr, int nItem | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nItem = nAttr + e.getNumberOfItems() and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getItem(index - nAttr) + ) + ) } /** @@ -500,6 +732,18 @@ module Raw { Lifetime getLifetime() { label_lifetimes(this, result) } } + private Element getImmediateChildOfLabel(Label e, int index) { + exists(int n, int nLifetime | + n = 0 and + nLifetime = n + 1 and + ( + none() + or + index = n and result = e.getLifetime() + ) + ) + } + /** * INTERNAL: Do not use. * An else block in a let-else statement. @@ -521,6 +765,18 @@ module Raw { BlockExpr getBlockExpr() { let_else_block_exprs(this, result) } } + private Element getImmediateChildOfLetElse(LetElse e, int index) { + exists(int n, int nBlockExpr | + n = 0 and + nBlockExpr = n + 1 and + ( + none() + or + index = n and result = e.getBlockExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A sequence of items generated by a macro. For example: @@ -545,6 +801,23 @@ module Raw { * Gets the `index`th item of this macro items (0-based). */ Item getItem(int index) { macro_items_items(this, index, result) } + + /** + * Gets the number of items of this macro items. + */ + int getNumberOfItems() { result = count(int i | macro_items_items(this, i, _)) } + } + + private Element getImmediateChildOfMacroItems(MacroItems e, int index) { + exists(int n, int nItem | + n = 0 and + nItem = n + e.getNumberOfItems() and + ( + none() + or + result = e.getItem(index - n) + ) + ) } /** @@ -571,6 +844,11 @@ module Raw { */ Attr getAttr(int index) { match_arm_attrs(this, index, result) } + /** + * Gets the number of attrs of this match arm. + */ + int getNumberOfAttrs() { result = count(int i | match_arm_attrs(this, i, _)) } + /** * Gets the expression of this match arm, if it exists. */ @@ -587,6 +865,27 @@ module Raw { Pat getPat() { match_arm_pats(this, result) } } + private Element getImmediateChildOfMatchArm(MatchArm e, int index) { + exists(int n, int nAttr, int nExpr, int nGuard, int nPat | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + nGuard = nExpr + 1 and + nPat = nGuard + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + or + index = nExpr and result = e.getGuard() + or + index = nGuard and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A list of arms in a match expression. @@ -609,10 +908,35 @@ module Raw { */ MatchArm getArm(int index) { match_arm_list_arms(this, index, result) } + /** + * Gets the number of arms of this match arm list. + */ + int getNumberOfArms() { result = count(int i | match_arm_list_arms(this, i, _)) } + /** * Gets the `index`th attr of this match arm list (0-based). */ Attr getAttr(int index) { match_arm_list_attrs(this, index, result) } + + /** + * Gets the number of attrs of this match arm list. + */ + int getNumberOfAttrs() { result = count(int i | match_arm_list_attrs(this, i, _)) } + } + + private Element getImmediateChildOfMatchArmList(MatchArmList e, int index) { + exists(int n, int nArm, int nAttr | + n = 0 and + nArm = n + e.getNumberOfArms() and + nAttr = nArm + e.getNumberOfAttrs() and + ( + none() + or + result = e.getArm(index - n) + or + result = e.getAttr(index - nArm) + ) + ) } /** @@ -637,6 +961,18 @@ module Raw { Expr getCondition() { match_guard_conditions(this, result) } } + private Element getImmediateChildOfMatchGuard(MatchGuard e, int index) { + exists(int n, int nCondition | + n = 0 and + nCondition = n + 1 and + ( + none() + or + index = n and result = e.getCondition() + ) + ) + } + /** * INTERNAL: Do not use. * A meta item in an attribute. @@ -676,6 +1012,24 @@ module Raw { TokenTree getTokenTree() { meta_token_trees(this, result) } } + private Element getImmediateChildOfMeta(Meta e, int index) { + exists(int n, int nExpr, int nPath, int nTokenTree | + n = 0 and + nExpr = n + 1 and + nPath = nExpr + 1 and + nTokenTree = nPath + 1 and + ( + none() + or + index = n and result = e.getExpr() + or + index = nExpr and result = e.getPath() + or + index = nPath and result = e.getTokenTree() + ) + ) + } + /** * INTERNAL: Do not use. * An identifier name. @@ -695,6 +1049,8 @@ module Raw { string getText() { name_texts(this, result) } } + private Element getImmediateChildOfName(Name e, int index) { none() } + /** * INTERNAL: Do not use. * A normal parameter, `Param`, or a self parameter `SelfParam`. @@ -705,6 +1061,11 @@ module Raw { */ Attr getAttr(int index) { param_base_attrs(this, index, result) } + /** + * Gets the number of attrs of this parameter base. + */ + int getNumberOfAttrs() { result = count(int i | param_base_attrs(this, i, _)) } + /** * Gets the type representation of this parameter base, if it exists. */ @@ -729,12 +1090,32 @@ module Raw { */ Param getParam(int index) { param_list_params(this, index, result) } + /** + * Gets the number of parameters of this parameter list. + */ + int getNumberOfParams() { result = count(int i | param_list_params(this, i, _)) } + /** * Gets the self parameter of this parameter list, if it exists. */ SelfParam getSelfParam() { param_list_self_params(this, result) } } + private Element getImmediateChildOfParamList(ParamList e, int index) { + exists(int n, int nParam, int nSelfParam | + n = 0 and + nParam = n + e.getNumberOfParams() and + nSelfParam = nParam + 1 and + ( + none() + or + result = e.getParam(index - n) + or + index = nParam and result = e.getSelfParam() + ) + ) + } + /** * INTERNAL: Do not use. * A parenthesized argument list as used in function traits. @@ -757,6 +1138,25 @@ module Raw { * Gets the `index`th type argument of this parenthesized argument list (0-based). */ TypeArg getTypeArg(int index) { parenthesized_arg_list_type_args(this, index, result) } + + /** + * Gets the number of type arguments of this parenthesized argument list. + */ + int getNumberOfTypeArgs() { + result = count(int i | parenthesized_arg_list_type_args(this, i, _)) + } + } + + private Element getImmediateChildOfParenthesizedArgList(ParenthesizedArgList e, int index) { + exists(int n, int nTypeArg | + n = 0 and + nTypeArg = n + e.getNumberOfTypeArgs() and + ( + none() + or + result = e.getTypeArg(index - n) + ) + ) } /** @@ -787,6 +1187,21 @@ module Raw { PathSegment getSegment() { path_segments_(this, result) } } + private Element getImmediateChildOfPath(Path e, int index) { + exists(int n, int nQualifier, int nSegment | + n = 0 and + nQualifier = n + 1 and + nSegment = nQualifier + 1 and + ( + none() + or + index = n and result = e.getQualifier() + or + index = nQualifier and result = e.getSegment() + ) + ) + } + /** * INTERNAL: Do not use. * An AST element wrapping a path (`PathExpr`, `RecordExpr`, `PathPat`, `RecordPat`, `TupleStructPat`). @@ -849,6 +1264,39 @@ module Raw { PathTypeRepr getTraitTypeRepr() { path_segment_trait_type_reprs(this, result) } } + private Element getImmediateChildOfPathSegment(PathSegment e, int index) { + exists( + int n, int nGenericArgList, int nIdentifier, int nParenthesizedArgList, int nRetType, + int nReturnTypeSyntax, int nTypeRepr, int nTraitTypeRepr + | + n = 0 and + nGenericArgList = n + 1 and + nIdentifier = nGenericArgList + 1 and + nParenthesizedArgList = nIdentifier + 1 and + nRetType = nParenthesizedArgList + 1 and + nReturnTypeSyntax = nRetType + 1 and + nTypeRepr = nReturnTypeSyntax + 1 and + nTraitTypeRepr = nTypeRepr + 1 and + ( + none() + or + index = n and result = e.getGenericArgList() + or + index = nGenericArgList and result = e.getIdentifier() + or + index = nIdentifier and result = e.getParenthesizedArgList() + or + index = nParenthesizedArgList and result = e.getRetType() + or + index = nRetType and result = e.getReturnTypeSyntax() + or + index = nReturnTypeSyntax and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getTraitTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A rename in a use declaration. @@ -868,6 +1316,18 @@ module Raw { Name getName() { rename_names(this, result) } } + private Element getImmediateChildOfRename(Rename e, int index) { + exists(int n, int nName | + n = 0 and + nName = n + 1 and + ( + none() + or + index = n and result = e.getName() + ) + ) + } + /** * INTERNAL: Do not use. * A return type in a function signature. @@ -887,6 +1347,18 @@ module Raw { TypeRepr getTypeRepr() { ret_type_repr_type_reprs(this, result) } } + private Element getImmediateChildOfRetTypeRepr(RetTypeRepr e, int index) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A return type notation `(..)` to reference or bound the type returned by a trait method @@ -911,6 +1383,8 @@ module Raw { override string toString() { result = "ReturnTypeSyntax" } } + private Element getImmediateChildOfReturnTypeSyntax(ReturnTypeSyntax e, int index) { none() } + /** * INTERNAL: Do not use. * A source file. @@ -929,10 +1403,35 @@ module Raw { */ Attr getAttr(int index) { source_file_attrs(this, index, result) } + /** + * Gets the number of attrs of this source file. + */ + int getNumberOfAttrs() { result = count(int i | source_file_attrs(this, i, _)) } + /** * Gets the `index`th item of this source file (0-based). */ Item getItem(int index) { source_file_items(this, index, result) } + + /** + * Gets the number of items of this source file. + */ + int getNumberOfItems() { result = count(int i | source_file_items(this, i, _)) } + } + + private Element getImmediateChildOfSourceFile(SourceFile e, int index) { + exists(int n, int nAttr, int nItem | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nItem = nAttr + e.getNumberOfItems() and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getItem(index - nAttr) + ) + ) } /** @@ -964,6 +1463,11 @@ module Raw { */ Attr getAttr(int index) { stmt_list_attrs(this, index, result) } + /** + * Gets the number of attrs of this statement list. + */ + int getNumberOfAttrs() { result = count(int i | stmt_list_attrs(this, i, _)) } + /** * Gets the `index`th statement of this statement list (0-based). * @@ -972,6 +1476,11 @@ module Raw { */ Stmt getStatement(int index) { stmt_list_statements(this, index, result) } + /** + * Gets the number of statements of this statement list. + */ + int getNumberOfStatements() { result = count(int i | stmt_list_statements(this, i, _)) } + /** * Gets the tail expression of this statement list, if it exists. * @@ -981,6 +1490,24 @@ module Raw { Expr getTailExpr() { stmt_list_tail_exprs(this, result) } } + private Element getImmediateChildOfStmtList(StmtList e, int index) { + exists(int n, int nAttr, int nStatement, int nTailExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nStatement = nAttr + e.getNumberOfStatements() and + nTailExpr = nStatement + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getStatement(index - nAttr) + or + index = nStatement and result = e.getTailExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A field in a struct expression. For example `a: 1` in: @@ -996,6 +1523,11 @@ module Raw { */ Attr getAttr(int index) { struct_expr_field_attrs(this, index, result) } + /** + * Gets the number of attrs of this struct expression field. + */ + int getNumberOfAttrs() { result = count(int i | struct_expr_field_attrs(this, i, _)) } + /** * Gets the expression of this struct expression field, if it exists. */ @@ -1007,6 +1539,24 @@ module Raw { NameRef getIdentifier() { struct_expr_field_identifiers(this, result) } } + private Element getImmediateChildOfStructExprField(StructExprField e, int index) { + exists(int n, int nAttr, int nExpr, int nIdentifier | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + nIdentifier = nExpr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + or + index = nExpr and result = e.getIdentifier() + ) + ) + } + /** * INTERNAL: Do not use. * A list of fields in a struct expression. @@ -1025,17 +1575,45 @@ module Raw { */ Attr getAttr(int index) { struct_expr_field_list_attrs(this, index, result) } + /** + * Gets the number of attrs of this struct expression field list. + */ + int getNumberOfAttrs() { result = count(int i | struct_expr_field_list_attrs(this, i, _)) } + /** * Gets the `index`th field of this struct expression field list (0-based). */ StructExprField getField(int index) { struct_expr_field_list_fields(this, index, result) } + /** + * Gets the number of fields of this struct expression field list. + */ + int getNumberOfFields() { result = count(int i | struct_expr_field_list_fields(this, i, _)) } + /** * Gets the spread of this struct expression field list, if it exists. */ Expr getSpread() { struct_expr_field_list_spreads(this, result) } } + private Element getImmediateChildOfStructExprFieldList(StructExprFieldList e, int index) { + exists(int n, int nAttr, int nField, int nSpread | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nField = nAttr + e.getNumberOfFields() and + nSpread = nField + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getField(index - nAttr) + or + index = nField and result = e.getSpread() + ) + ) + } + /** * INTERNAL: Do not use. * A field in a struct declaration. @@ -1054,6 +1632,11 @@ module Raw { */ Attr getAttr(int index) { struct_field_attrs(this, index, result) } + /** + * Gets the number of attrs of this struct field. + */ + int getNumberOfAttrs() { result = count(int i | struct_field_attrs(this, i, _)) } + /** * Gets the default of this struct field, if it exists. */ @@ -1080,6 +1663,30 @@ module Raw { Visibility getVisibility() { struct_field_visibilities(this, result) } } + private Element getImmediateChildOfStructField(StructField e, int index) { + exists(int n, int nAttr, int nDefault, int nName, int nTypeRepr, int nVisibility | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nDefault = nAttr + 1 and + nName = nDefault + 1 and + nTypeRepr = nName + 1 and + nVisibility = nTypeRepr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getDefault() + or + index = nDefault and result = e.getName() + or + index = nName and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A field in a struct pattern. For example `a: 1` in: @@ -1095,6 +1702,11 @@ module Raw { */ Attr getAttr(int index) { struct_pat_field_attrs(this, index, result) } + /** + * Gets the number of attrs of this struct pattern field. + */ + int getNumberOfAttrs() { result = count(int i | struct_pat_field_attrs(this, i, _)) } + /** * Gets the identifier of this struct pattern field, if it exists. */ @@ -1106,6 +1718,24 @@ module Raw { Pat getPat() { struct_pat_field_pats(this, result) } } + private Element getImmediateChildOfStructPatField(StructPatField e, int index) { + exists(int n, int nAttr, int nIdentifier, int nPat | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nIdentifier = nAttr + 1 and + nPat = nIdentifier + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getIdentifier() + or + index = nIdentifier and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A list of fields in a struct pattern. @@ -1124,12 +1754,32 @@ module Raw { */ StructPatField getField(int index) { struct_pat_field_list_fields(this, index, result) } + /** + * Gets the number of fields of this struct pattern field list. + */ + int getNumberOfFields() { result = count(int i | struct_pat_field_list_fields(this, i, _)) } + /** * Gets the rest pattern of this struct pattern field list, if it exists. */ RestPat getRestPat() { struct_pat_field_list_rest_pats(this, result) } } + private Element getImmediateChildOfStructPatFieldList(StructPatFieldList e, int index) { + exists(int n, int nField, int nRestPat | + n = 0 and + nField = n + e.getNumberOfFields() and + nRestPat = nField + 1 and + ( + none() + or + result = e.getField(index - n) + or + index = nField and result = e.getRestPat() + ) + ) + } + /** * INTERNAL: Do not use. * The base class for all tokens. @@ -1154,6 +1804,8 @@ module Raw { override string toString() { result = "TokenTree" } } + private Element getImmediateChildOfTokenTree(TokenTree e, int index) { none() } + /** * INTERNAL: Do not use. * A field in a tuple struct or tuple enum variant. @@ -1172,6 +1824,11 @@ module Raw { */ Attr getAttr(int index) { tuple_field_attrs(this, index, result) } + /** + * Gets the number of attrs of this tuple field. + */ + int getNumberOfAttrs() { result = count(int i | tuple_field_attrs(this, i, _)) } + /** * Gets the type representation of this tuple field, if it exists. */ @@ -1183,6 +1840,24 @@ module Raw { Visibility getVisibility() { tuple_field_visibilities(this, result) } } + private Element getImmediateChildOfTupleField(TupleField e, int index) { + exists(int n, int nAttr, int nTypeRepr, int nVisibility | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nTypeRepr = nAttr + 1 and + nVisibility = nTypeRepr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A type bound in a trait or generic parameter. @@ -1229,6 +1904,27 @@ module Raw { UseBoundGenericArgs getUseBoundGenericArgs() { type_bound_use_bound_generic_args(this, result) } } + private Element getImmediateChildOfTypeBound(TypeBound e, int index) { + exists(int n, int nForBinder, int nLifetime, int nTypeRepr, int nUseBoundGenericArgs | + n = 0 and + nForBinder = n + 1 and + nLifetime = nForBinder + 1 and + nTypeRepr = nLifetime + 1 and + nUseBoundGenericArgs = nTypeRepr + 1 and + ( + none() + or + index = n and result = e.getForBinder() + or + index = nForBinder and result = e.getLifetime() + or + index = nLifetime and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getUseBoundGenericArgs() + ) + ) + } + /** * INTERNAL: Do not use. * A list of type bounds. @@ -1246,6 +1942,23 @@ module Raw { * Gets the `index`th bound of this type bound list (0-based). */ TypeBound getBound(int index) { type_bound_list_bounds(this, index, result) } + + /** + * Gets the number of bounds of this type bound list. + */ + int getNumberOfBounds() { result = count(int i | type_bound_list_bounds(this, i, _)) } + } + + private Element getImmediateChildOfTypeBoundList(TypeBoundList e, int index) { + exists(int n, int nBound | + n = 0 and + nBound = n + e.getNumberOfBounds() and + ( + none() + or + result = e.getBound(index - n) + ) + ) } /** @@ -1283,6 +1996,25 @@ module Raw { UseBoundGenericArg getUseBoundGenericArg(int index) { use_bound_generic_args_use_bound_generic_args(this, index, result) } + + /** + * Gets the number of use bound generic arguments of this use bound generic arguments. + */ + int getNumberOfUseBoundGenericArgs() { + result = count(int i | use_bound_generic_args_use_bound_generic_args(this, i, _)) + } + } + + private Element getImmediateChildOfUseBoundGenericArgs(UseBoundGenericArgs e, int index) { + exists(int n, int nUseBoundGenericArg | + n = 0 and + nUseBoundGenericArg = n + e.getNumberOfUseBoundGenericArgs() and + ( + none() + or + result = e.getUseBoundGenericArg(index - n) + ) + ) } /** @@ -1319,6 +2051,24 @@ module Raw { UseTreeList getUseTreeList() { use_tree_use_tree_lists(this, result) } } + private Element getImmediateChildOfUseTree(UseTree e, int index) { + exists(int n, int nPath, int nRename, int nUseTreeList | + n = 0 and + nPath = n + 1 and + nRename = nPath + 1 and + nUseTreeList = nRename + 1 and + ( + none() + or + index = n and result = e.getPath() + or + index = nPath and result = e.getRename() + or + index = nRename and result = e.getUseTreeList() + ) + ) + } + /** * INTERNAL: Do not use. * A list of use trees in a use declaration. @@ -1336,6 +2086,23 @@ module Raw { * Gets the `index`th use tree of this use tree list (0-based). */ UseTree getUseTree(int index) { use_tree_list_use_trees(this, index, result) } + + /** + * Gets the number of use trees of this use tree list. + */ + int getNumberOfUseTrees() { result = count(int i | use_tree_list_use_trees(this, i, _)) } + } + + private Element getImmediateChildOfUseTreeList(UseTreeList e, int index) { + exists(int n, int nUseTree | + n = 0 and + nUseTree = n + e.getNumberOfUseTrees() and + ( + none() + or + result = e.getUseTree(index - n) + ) + ) } /** @@ -1355,6 +2122,23 @@ module Raw { * Gets the `index`th variant of this variant list (0-based). */ Variant getVariant(int index) { variant_list_variants(this, index, result) } + + /** + * Gets the number of variants of this variant list. + */ + int getNumberOfVariants() { result = count(int i | variant_list_variants(this, i, _)) } + } + + private Element getImmediateChildOfVariantList(VariantList e, int index) { + exists(int n, int nVariant | + n = 0 and + nVariant = n + e.getNumberOfVariants() and + ( + none() + or + result = e.getVariant(index - n) + ) + ) } /** @@ -1376,6 +2160,18 @@ module Raw { Path getPath() { visibility_paths(this, result) } } + private Element getImmediateChildOfVisibility(Visibility e, int index) { + exists(int n, int nPath | + n = 0 and + nPath = n + 1 and + ( + none() + or + index = n and result = e.getPath() + ) + ) + } + /** * INTERNAL: Do not use. * A where clause in a generic declaration. @@ -1393,6 +2189,23 @@ module Raw { * Gets the `index`th predicate of this where clause (0-based). */ WherePred getPredicate(int index) { where_clause_predicates(this, index, result) } + + /** + * Gets the number of predicates of this where clause. + */ + int getNumberOfPredicates() { result = count(int i | where_clause_predicates(this, i, _)) } + } + + private Element getImmediateChildOfWhereClause(WhereClause e, int index) { + exists(int n, int nPredicate | + n = 0 and + nPredicate = n + e.getNumberOfPredicates() and + ( + none() + or + result = e.getPredicate(index - n) + ) + ) } /** @@ -1431,6 +2244,27 @@ module Raw { TypeBoundList getTypeBoundList() { where_pred_type_bound_lists(this, result) } } + private Element getImmediateChildOfWherePred(WherePred e, int index) { + exists(int n, int nForBinder, int nLifetime, int nTypeRepr, int nTypeBoundList | + n = 0 and + nForBinder = n + 1 and + nLifetime = nForBinder + 1 and + nTypeRepr = nLifetime + 1 and + nTypeBoundList = nTypeRepr + 1 and + ( + none() + or + index = n and result = e.getForBinder() + or + index = nForBinder and result = e.getLifetime() + or + index = nLifetime and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getTypeBoundList() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1442,17 +2276,42 @@ module Raw { */ Attr getAttr(int index) { array_expr_internal_attrs(this, index, result) } + /** + * Gets the number of attrs of this array expression internal. + */ + int getNumberOfAttrs() { result = count(int i | array_expr_internal_attrs(this, i, _)) } + /** * Gets the `index`th expression of this array expression internal (0-based). */ Expr getExpr(int index) { array_expr_internal_exprs(this, index, result) } + /** + * Gets the number of expressions of this array expression internal. + */ + int getNumberOfExprs() { result = count(int i | array_expr_internal_exprs(this, i, _)) } + /** * Holds if this array expression internal is semicolon. */ predicate isSemicolon() { array_expr_internal_is_semicolon(this) } } + private Element getImmediateChildOfArrayExprInternal(ArrayExprInternal e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + e.getNumberOfExprs() and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getExpr(index - nAttr) + ) + ) + } + /** * INTERNAL: Do not use. * An array type representation. @@ -1477,6 +2336,21 @@ module Raw { TypeRepr getElementTypeRepr() { array_type_repr_element_type_reprs(this, result) } } + private Element getImmediateChildOfArrayTypeRepr(ArrayTypeRepr e, int index) { + exists(int n, int nConstArg, int nElementTypeRepr | + n = 0 and + nConstArg = n + 1 and + nElementTypeRepr = nConstArg + 1 and + ( + none() + or + index = n and result = e.getConstArg() + or + index = nConstArg and result = e.getElementTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A clobbered ABI in an inline assembly block. @@ -1492,6 +2366,8 @@ module Raw { override string toString() { result = "AsmClobberAbi" } } + private Element getImmediateChildOfAsmClobberAbi(AsmClobberAbi e, int index) { none() } + /** * INTERNAL: Do not use. * A constant operand in an inline assembly block. @@ -1517,6 +2393,18 @@ module Raw { predicate isConst() { asm_const_is_const(this) } } + private Element getImmediateChildOfAsmConst(AsmConst e, int index) { + exists(int n, int nExpr | + n = 0 and + nExpr = n + 1 and + ( + none() + or + index = n and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A label in an inline assembly block. @@ -1540,6 +2428,18 @@ module Raw { BlockExpr getBlockExpr() { asm_label_block_exprs(this, result) } } + private Element getImmediateChildOfAsmLabel(AsmLabel e, int index) { + exists(int n, int nBlockExpr | + n = 0 and + nBlockExpr = n + 1 and + ( + none() + or + index = n and result = e.getBlockExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A named operand in an inline assembly block. @@ -1565,6 +2465,21 @@ module Raw { Name getName() { asm_operand_named_names(this, result) } } + private Element getImmediateChildOfAsmOperandNamed(AsmOperandNamed e, int index) { + exists(int n, int nAsmOperand, int nName | + n = 0 and + nAsmOperand = n + 1 and + nName = nAsmOperand + 1 and + ( + none() + or + index = n and result = e.getAsmOperand() + or + index = nAsmOperand and result = e.getName() + ) + ) + } + /** * INTERNAL: Do not use. * A list of options in an inline assembly block. @@ -1583,6 +2498,23 @@ module Raw { * Gets the `index`th asm option of this asm options list (0-based). */ AsmOption getAsmOption(int index) { asm_options_list_asm_options(this, index, result) } + + /** + * Gets the number of asm options of this asm options list. + */ + int getNumberOfAsmOptions() { result = count(int i | asm_options_list_asm_options(this, i, _)) } + } + + private Element getImmediateChildOfAsmOptionsList(AsmOptionsList e, int index) { + exists(int n, int nAsmOption | + n = 0 and + nAsmOption = n + e.getNumberOfAsmOptions() and + ( + none() + or + result = e.getAsmOption(index - n) + ) + ) } /** @@ -1615,6 +2547,24 @@ module Raw { AsmRegSpec getAsmRegSpec() { asm_reg_operand_asm_reg_specs(this, result) } } + private Element getImmediateChildOfAsmRegOperand(AsmRegOperand e, int index) { + exists(int n, int nAsmDirSpec, int nAsmOperandExpr, int nAsmRegSpec | + n = 0 and + nAsmDirSpec = n + 1 and + nAsmOperandExpr = nAsmDirSpec + 1 and + nAsmRegSpec = nAsmOperandExpr + 1 and + ( + none() + or + index = n and result = e.getAsmDirSpec() + or + index = nAsmDirSpec and result = e.getAsmOperandExpr() + or + index = nAsmOperandExpr and result = e.getAsmRegSpec() + ) + ) + } + /** * INTERNAL: Do not use. * A symbol operand in an inline assembly block. @@ -1635,6 +2585,18 @@ module Raw { Path getPath() { asm_sym_paths(this, result) } } + private Element getImmediateChildOfAsmSym(AsmSym e, int index) { + exists(int n, int nPath | + n = 0 and + nPath = n + 1 and + ( + none() + or + index = n and result = e.getPath() + ) + ) + } + /** * INTERNAL: Do not use. * An associated type argument in a path. @@ -1694,6 +2656,42 @@ module Raw { TypeBoundList getTypeBoundList() { assoc_type_arg_type_bound_lists(this, result) } } + private Element getImmediateChildOfAssocTypeArg(AssocTypeArg e, int index) { + exists( + int n, int nConstArg, int nGenericArgList, int nIdentifier, int nParamList, int nRetType, + int nReturnTypeSyntax, int nTypeRepr, int nTypeBoundList + | + n = 0 and + nConstArg = n + 1 and + nGenericArgList = nConstArg + 1 and + nIdentifier = nGenericArgList + 1 and + nParamList = nIdentifier + 1 and + nRetType = nParamList + 1 and + nReturnTypeSyntax = nRetType + 1 and + nTypeRepr = nReturnTypeSyntax + 1 and + nTypeBoundList = nTypeRepr + 1 and + ( + none() + or + index = n and result = e.getConstArg() + or + index = nConstArg and result = e.getGenericArgList() + or + index = nGenericArgList and result = e.getIdentifier() + or + index = nIdentifier and result = e.getParamList() + or + index = nParamList and result = e.getRetType() + or + index = nRetType and result = e.getReturnTypeSyntax() + or + index = nReturnTypeSyntax and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getTypeBoundList() + ) + ) + } + /** * INTERNAL: Do not use. * An `await` expression. For example: @@ -1712,12 +2710,32 @@ module Raw { */ Attr getAttr(int index) { await_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this await expression. + */ + int getNumberOfAttrs() { result = count(int i | await_expr_attrs(this, i, _)) } + /** * Gets the expression of this await expression, if it exists. */ Expr getExpr() { await_expr_exprs(this, result) } } + private Element getImmediateChildOfAwaitExpr(AwaitExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A `become` expression. For example: @@ -1739,12 +2757,32 @@ module Raw { */ Attr getAttr(int index) { become_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this become expression. + */ + int getNumberOfAttrs() { result = count(int i | become_expr_attrs(this, i, _)) } + /** * Gets the expression of this become expression, if it exists. */ Expr getExpr() { become_expr_exprs(this, result) } } + private Element getImmediateChildOfBecomeExpr(BecomeExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A binary operation expression. For example: @@ -1764,6 +2802,11 @@ module Raw { */ Attr getAttr(int index) { binary_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this binary expression. + */ + int getNumberOfAttrs() { result = count(int i | binary_expr_attrs(this, i, _)) } + /** * Gets the lhs of this binary expression, if it exists. */ @@ -1780,6 +2823,24 @@ module Raw { Expr getRhs() { binary_expr_rhs(this, result) } } + private Element getImmediateChildOfBinaryExpr(BinaryExpr e, int index) { + exists(int n, int nAttr, int nLhs, int nRhs | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nLhs = nAttr + 1 and + nRhs = nLhs + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getLhs() + or + index = nLhs and result = e.getRhs() + ) + ) + } + /** * INTERNAL: Do not use. * A box pattern. For example: @@ -1799,6 +2860,18 @@ module Raw { Pat getPat() { box_pat_pats(this, result) } } + private Element getImmediateChildOfBoxPat(BoxPat e, int index) { + exists(int n, int nPat | + n = 0 and + nPat = n + 1 and + ( + none() + or + index = n and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A break expression. For example: @@ -1833,6 +2906,11 @@ module Raw { */ Attr getAttr(int index) { break_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this break expression. + */ + int getNumberOfAttrs() { result = count(int i | break_expr_attrs(this, i, _)) } + /** * Gets the expression of this break expression, if it exists. */ @@ -1844,6 +2922,24 @@ module Raw { Lifetime getLifetime() { break_expr_lifetimes(this, result) } } + private Element getImmediateChildOfBreakExpr(BreakExpr e, int index) { + exists(int n, int nAttr, int nExpr, int nLifetime | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + nLifetime = nExpr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + or + index = nExpr and result = e.getLifetime() + ) + ) + } + /** * INTERNAL: Do not use. * A function or method call expression. See `CallExpr` and `MethodCallExpr` for further details. @@ -1858,6 +2954,11 @@ module Raw { * Gets the `index`th attr of this call expression base (0-based). */ Attr getAttr(int index) { call_expr_base_attrs(this, index, result) } + + /** + * Gets the number of attrs of this call expression base. + */ + int getNumberOfAttrs() { result = count(int i | call_expr_base_attrs(this, i, _)) } } /** @@ -1875,6 +2976,11 @@ module Raw { */ Attr getAttr(int index) { cast_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this cast expression. + */ + int getNumberOfAttrs() { result = count(int i | cast_expr_attrs(this, i, _)) } + /** * Gets the expression of this cast expression, if it exists. */ @@ -1886,6 +2992,24 @@ module Raw { TypeRepr getTypeRepr() { cast_expr_type_reprs(this, result) } } + private Element getImmediateChildOfCastExpr(CastExpr e, int index) { + exists(int n, int nAttr, int nExpr, int nTypeRepr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + nTypeRepr = nExpr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + or + index = nExpr and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A closure expression. For example: @@ -1946,6 +3070,30 @@ module Raw { RetTypeRepr getRetType() { closure_expr_ret_types(this, result) } } + private Element getImmediateChildOfClosureExpr(ClosureExpr e, int index) { + exists(int n, int nParamList, int nAttr, int nClosureBody, int nForBinder, int nRetType | + n = 0 and + nParamList = n + 1 and + nAttr = nParamList + e.getNumberOfAttrs() and + nClosureBody = nAttr + 1 and + nForBinder = nClosureBody + 1 and + nRetType = nForBinder + 1 and + ( + none() + or + index = n and result = e.getParamList() + or + result = e.getAttr(index - nParamList) + or + index = nAttr and result = e.getClosureBody() + or + index = nClosureBody and result = e.getForBinder() + or + index = nForBinder and result = e.getRetType() + ) + ) + } + /** * INTERNAL: Do not use. * A comment. For example: @@ -1968,6 +3116,8 @@ module Raw { string getText() { comments(this, _, result) } } + private Element getImmediateChildOfComment(Comment e, int index) { none() } + /** * INTERNAL: Do not use. * A constant argument in a generic argument list. @@ -1987,6 +3137,18 @@ module Raw { Expr getExpr() { const_arg_exprs(this, result) } } + private Element getImmediateChildOfConstArg(ConstArg e, int index) { + exists(int n, int nExpr | + n = 0 and + nExpr = n + 1 and + ( + none() + or + index = n and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A const block pattern. For example: @@ -2011,6 +3173,18 @@ module Raw { predicate isConst() { const_block_pat_is_const(this) } } + private Element getImmediateChildOfConstBlockPat(ConstBlockPat e, int index) { + exists(int n, int nBlockExpr | + n = 0 and + nBlockExpr = n + 1 and + ( + none() + or + index = n and result = e.getBlockExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A constant parameter in a generic parameter list. @@ -2029,6 +3203,11 @@ module Raw { */ Attr getAttr(int index) { const_param_attrs(this, index, result) } + /** + * Gets the number of attrs of this const parameter. + */ + int getNumberOfAttrs() { result = count(int i | const_param_attrs(this, i, _)) } + /** * Gets the default val of this const parameter, if it exists. */ @@ -2050,6 +3229,27 @@ module Raw { TypeRepr getTypeRepr() { const_param_type_reprs(this, result) } } + private Element getImmediateChildOfConstParam(ConstParam e, int index) { + exists(int n, int nAttr, int nDefaultVal, int nName, int nTypeRepr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nDefaultVal = nAttr + 1 and + nName = nDefaultVal + 1 and + nTypeRepr = nName + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getDefaultVal() + or + index = nDefaultVal and result = e.getName() + or + index = nName and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A continue expression. For example: @@ -2076,12 +3276,32 @@ module Raw { */ Attr getAttr(int index) { continue_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this continue expression. + */ + int getNumberOfAttrs() { result = count(int i | continue_expr_attrs(this, i, _)) } + /** * Gets the lifetime of this continue expression, if it exists. */ Lifetime getLifetime() { continue_expr_lifetimes(this, result) } } + private Element getImmediateChildOfContinueExpr(ContinueExpr e, int index) { + exists(int n, int nAttr, int nLifetime | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nLifetime = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getLifetime() + ) + ) + } + /** * INTERNAL: Do not use. * A dynamic trait object type. @@ -2101,6 +3321,18 @@ module Raw { TypeBoundList getTypeBoundList() { dyn_trait_type_repr_type_bound_lists(this, result) } } + private Element getImmediateChildOfDynTraitTypeRepr(DynTraitTypeRepr e, int index) { + exists(int n, int nTypeBoundList | + n = 0 and + nTypeBoundList = n + 1 and + ( + none() + or + index = n and result = e.getTypeBoundList() + ) + ) + } + /** * INTERNAL: Do not use. * An expression statement. For example: @@ -2119,6 +3351,18 @@ module Raw { Expr getExpr() { expr_stmt_exprs(this, result) } } + private Element getImmediateChildOfExprStmt(ExprStmt e, int index) { + exists(int n, int nExpr | + n = 0 and + nExpr = n + 1 and + ( + none() + or + index = n and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A field access expression. For example: @@ -2134,6 +3378,11 @@ module Raw { */ Attr getAttr(int index) { field_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this field expression. + */ + int getNumberOfAttrs() { result = count(int i | field_expr_attrs(this, i, _)) } + /** * Gets the container of this field expression, if it exists. */ @@ -2145,6 +3394,24 @@ module Raw { NameRef getIdentifier() { field_expr_identifiers(this, result) } } + private Element getImmediateChildOfFieldExpr(FieldExpr e, int index) { + exists(int n, int nAttr, int nContainer, int nIdentifier | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nContainer = nAttr + 1 and + nIdentifier = nContainer + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getContainer() + or + index = nContainer and result = e.getIdentifier() + ) + ) + } + /** * INTERNAL: Do not use. * A function pointer type. @@ -2189,6 +3456,24 @@ module Raw { RetTypeRepr getRetType() { fn_ptr_type_repr_ret_types(this, result) } } + private Element getImmediateChildOfFnPtrTypeRepr(FnPtrTypeRepr e, int index) { + exists(int n, int nAbi, int nParamList, int nRetType | + n = 0 and + nAbi = n + 1 and + nParamList = nAbi + 1 and + nRetType = nParamList + 1 and + ( + none() + or + index = n and result = e.getAbi() + or + index = nAbi and result = e.getParamList() + or + index = nParamList and result = e.getRetType() + ) + ) + } + /** * INTERNAL: Do not use. * A function pointer type with a `for` modifier. @@ -2213,6 +3498,21 @@ module Raw { TypeRepr getTypeRepr() { for_type_repr_type_reprs(this, result) } } + private Element getImmediateChildOfForTypeRepr(ForTypeRepr e, int index) { + exists(int n, int nForBinder, int nTypeRepr | + n = 0 and + nForBinder = n + 1 and + nTypeRepr = nForBinder + 1 and + ( + none() + or + index = n and result = e.getForBinder() + or + index = nForBinder and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A FormatArgsExpr. For example: @@ -2232,17 +3532,46 @@ module Raw { */ FormatArgsArg getArg(int index) { format_args_expr_args(this, index, result) } + /** + * Gets the number of arguments of this format arguments expression. + */ + int getNumberOfArgs() { result = count(int i | format_args_expr_args(this, i, _)) } + /** * Gets the `index`th attr of this format arguments expression (0-based). */ Attr getAttr(int index) { format_args_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this format arguments expression. + */ + int getNumberOfAttrs() { result = count(int i | format_args_expr_attrs(this, i, _)) } + /** * Gets the template of this format arguments expression, if it exists. */ Expr getTemplate() { format_args_expr_templates(this, result) } } + private Element getImmediateChildOfFormatArgsExpr(FormatArgsExpr e, int index) { + exists(int n, int nArg, int nAttr, int nTemplate, int nFormat | + n = 0 and + nArg = n + e.getNumberOfArgs() and + nAttr = nArg + e.getNumberOfAttrs() and + nTemplate = nAttr + 1 and + nFormat = nTemplate and + ( + none() + or + result = e.getArg(index - n) + or + result = e.getAttr(index - nArg) + or + index = nAttr and result = e.getTemplate() + ) + ) + } + /** * INTERNAL: Do not use. * A binding pattern. For example: @@ -2267,6 +3596,11 @@ module Raw { */ Attr getAttr(int index) { ident_pat_attrs(this, index, result) } + /** + * Gets the number of attrs of this ident pattern. + */ + int getNumberOfAttrs() { result = count(int i | ident_pat_attrs(this, i, _)) } + /** * Holds if this ident pattern is mut. */ @@ -2288,6 +3622,24 @@ module Raw { Pat getPat() { ident_pat_pats(this, result) } } + private Element getImmediateChildOfIdentPat(IdentPat e, int index) { + exists(int n, int nAttr, int nName, int nPat | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nName = nAttr + 1 and + nPat = nName + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getName() + or + index = nName and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * An `if` expression. For example: @@ -2312,6 +3664,11 @@ module Raw { */ Attr getAttr(int index) { if_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this if expression. + */ + int getNumberOfAttrs() { result = count(int i | if_expr_attrs(this, i, _)) } + /** * Gets the condition of this if expression, if it exists. */ @@ -2328,6 +3685,27 @@ module Raw { BlockExpr getThen() { if_expr_thens(this, result) } } + private Element getImmediateChildOfIfExpr(IfExpr e, int index) { + exists(int n, int nAttr, int nCondition, int nElse, int nThen | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nCondition = nAttr + 1 and + nElse = nCondition + 1 and + nThen = nElse + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getCondition() + or + index = nCondition and result = e.getElse() + or + index = nElse and result = e.getThen() + ) + ) + } + /** * INTERNAL: Do not use. * An `impl Trait` type. @@ -2347,6 +3725,18 @@ module Raw { TypeBoundList getTypeBoundList() { impl_trait_type_repr_type_bound_lists(this, result) } } + private Element getImmediateChildOfImplTraitTypeRepr(ImplTraitTypeRepr e, int index) { + exists(int n, int nTypeBoundList | + n = 0 and + nTypeBoundList = n + 1 and + ( + none() + or + index = n and result = e.getTypeBoundList() + ) + ) + } + /** * INTERNAL: Do not use. * An index expression. For example: @@ -2363,6 +3753,11 @@ module Raw { */ Attr getAttr(int index) { index_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this index expression. + */ + int getNumberOfAttrs() { result = count(int i | index_expr_attrs(this, i, _)) } + /** * Gets the base of this index expression, if it exists. */ @@ -2374,6 +3769,24 @@ module Raw { Expr getIndex() { index_expr_indices(this, result) } } + private Element getImmediateChildOfIndexExpr(IndexExpr e, int index) { + exists(int n, int nAttr, int nBase, int nIndex | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nBase = nAttr + 1 and + nIndex = nBase + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getBase() + or + index = nBase and result = e.getIndex() + ) + ) + } + /** * INTERNAL: Do not use. * An inferred type (`_`). @@ -2388,6 +3801,8 @@ module Raw { override string toString() { result = "InferTypeRepr" } } + private Element getImmediateChildOfInferTypeRepr(InferTypeRepr e, int index) { none() } + /** * INTERNAL: Do not use. * An item such as a function, struct, enum, etc. @@ -2434,6 +3849,11 @@ module Raw { */ Attr getAttr(int index) { let_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this let expression. + */ + int getNumberOfAttrs() { result = count(int i | let_expr_attrs(this, i, _)) } + /** * Gets the scrutinee of this let expression, if it exists. */ @@ -2445,6 +3865,24 @@ module Raw { Pat getPat() { let_expr_pats(this, result) } } + private Element getImmediateChildOfLetExpr(LetExpr e, int index) { + exists(int n, int nAttr, int nScrutinee, int nPat | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nScrutinee = nAttr + 1 and + nPat = nScrutinee + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getScrutinee() + or + index = nScrutinee and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A let statement. For example: @@ -2467,6 +3905,11 @@ module Raw { */ Attr getAttr(int index) { let_stmt_attrs(this, index, result) } + /** + * Gets the number of attrs of this let statement. + */ + int getNumberOfAttrs() { result = count(int i | let_stmt_attrs(this, i, _)) } + /** * Gets the initializer of this let statement, if it exists. */ @@ -2488,6 +3931,30 @@ module Raw { TypeRepr getTypeRepr() { let_stmt_type_reprs(this, result) } } + private Element getImmediateChildOfLetStmt(LetStmt e, int index) { + exists(int n, int nAttr, int nInitializer, int nLetElse, int nPat, int nTypeRepr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nInitializer = nAttr + 1 and + nLetElse = nInitializer + 1 and + nPat = nLetElse + 1 and + nTypeRepr = nPat + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getInitializer() + or + index = nInitializer and result = e.getLetElse() + or + index = nLetElse and result = e.getPat() + or + index = nPat and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A lifetime annotation. @@ -2507,6 +3974,8 @@ module Raw { string getText() { lifetime_texts(this, result) } } + private Element getImmediateChildOfLifetime(Lifetime e, int index) { none() } + /** * INTERNAL: Do not use. * A lifetime argument in a generic argument list. @@ -2526,6 +3995,18 @@ module Raw { Lifetime getLifetime() { lifetime_arg_lifetimes(this, result) } } + private Element getImmediateChildOfLifetimeArg(LifetimeArg e, int index) { + exists(int n, int nLifetime | + n = 0 and + nLifetime = n + 1 and + ( + none() + or + index = n and result = e.getLifetime() + ) + ) + } + /** * INTERNAL: Do not use. * A lifetime parameter in a generic parameter list. @@ -2544,6 +4025,11 @@ module Raw { */ Attr getAttr(int index) { lifetime_param_attrs(this, index, result) } + /** + * Gets the number of attrs of this lifetime parameter. + */ + int getNumberOfAttrs() { result = count(int i | lifetime_param_attrs(this, i, _)) } + /** * Gets the lifetime of this lifetime parameter, if it exists. */ @@ -2555,6 +4041,24 @@ module Raw { TypeBoundList getTypeBoundList() { lifetime_param_type_bound_lists(this, result) } } + private Element getImmediateChildOfLifetimeParam(LifetimeParam e, int index) { + exists(int n, int nAttr, int nLifetime, int nTypeBoundList | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nLifetime = nAttr + 1 and + nTypeBoundList = nLifetime + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getLifetime() + or + index = nLifetime and result = e.getTypeBoundList() + ) + ) + } + /** * INTERNAL: Do not use. * A literal expression. For example: @@ -2577,12 +4081,29 @@ module Raw { */ Attr getAttr(int index) { literal_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this literal expression. + */ + int getNumberOfAttrs() { result = count(int i | literal_expr_attrs(this, i, _)) } + /** * Gets the text value of this literal expression, if it exists. */ string getTextValue() { literal_expr_text_values(this, result) } } + private Element getImmediateChildOfLiteralExpr(LiteralExpr e, int index) { + exists(int n, int nAttr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + ( + none() + or + result = e.getAttr(index - n) + ) + ) + } + /** * INTERNAL: Do not use. * A literal pattern. For example: @@ -2602,6 +4123,18 @@ module Raw { LiteralExpr getLiteral() { literal_pat_literals(this, result) } } + private Element getImmediateChildOfLiteralPat(LiteralPat e, int index) { + exists(int n, int nLiteral | + n = 0 and + nLiteral = n + 1 and + ( + none() + or + index = n and result = e.getLiteral() + ) + ) + } + /** * INTERNAL: Do not use. * A sequence of statements generated by a `MacroCall`. For example: @@ -2625,12 +4158,32 @@ module Raw { */ Stmt getStatement(int index) { macro_block_expr_statements(this, index, result) } + /** + * Gets the number of statements of this macro block expression. + */ + int getNumberOfStatements() { result = count(int i | macro_block_expr_statements(this, i, _)) } + /** * Gets the tail expression of this macro block expression, if it exists. */ Expr getTailExpr() { macro_block_expr_tail_exprs(this, result) } } + private Element getImmediateChildOfMacroBlockExpr(MacroBlockExpr e, int index) { + exists(int n, int nStatement, int nTailExpr | + n = 0 and + nStatement = n + e.getNumberOfStatements() and + nTailExpr = nStatement + 1 and + ( + none() + or + result = e.getStatement(index - n) + or + index = nStatement and result = e.getTailExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A macro expression, representing the invocation of a macro that produces an expression. @@ -2649,6 +4202,18 @@ module Raw { MacroCall getMacroCall() { macro_expr_macro_calls(this, result) } } + private Element getImmediateChildOfMacroExpr(MacroExpr e, int index) { + exists(int n, int nMacroCall | + n = 0 and + nMacroCall = n + 1 and + ( + none() + or + index = n and result = e.getMacroCall() + ) + ) + } + /** * INTERNAL: Do not use. * A macro pattern, representing the invocation of a macro that produces a pattern. @@ -2676,6 +4241,18 @@ module Raw { MacroCall getMacroCall() { macro_pat_macro_calls(this, result) } } + private Element getImmediateChildOfMacroPat(MacroPat e, int index) { + exists(int n, int nMacroCall | + n = 0 and + nMacroCall = n + 1 and + ( + none() + or + index = n and result = e.getMacroCall() + ) + ) + } + /** * INTERNAL: Do not use. * A type produced by a macro. @@ -2698,6 +4275,18 @@ module Raw { MacroCall getMacroCall() { macro_type_repr_macro_calls(this, result) } } + private Element getImmediateChildOfMacroTypeRepr(MacroTypeRepr e, int index) { + exists(int n, int nMacroCall | + n = 0 and + nMacroCall = n + 1 and + ( + none() + or + index = n and result = e.getMacroCall() + ) + ) + } + /** * INTERNAL: Do not use. * A match expression. For example: @@ -2722,6 +4311,11 @@ module Raw { */ Attr getAttr(int index) { match_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this match expression. + */ + int getNumberOfAttrs() { result = count(int i | match_expr_attrs(this, i, _)) } + /** * Gets the scrutinee (the expression being matched) of this match expression, if it exists. */ @@ -2733,6 +4327,24 @@ module Raw { MatchArmList getMatchArmList() { match_expr_match_arm_lists(this, result) } } + private Element getImmediateChildOfMatchExpr(MatchExpr e, int index) { + exists(int n, int nAttr, int nScrutinee, int nMatchArmList | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nScrutinee = nAttr + 1 and + nMatchArmList = nScrutinee + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getScrutinee() + or + index = nScrutinee and result = e.getMatchArmList() + ) + ) + } + /** * INTERNAL: Do not use. * A reference to a name. @@ -2752,6 +4364,8 @@ module Raw { string getText() { name_ref_texts(this, result) } } + private Element getImmediateChildOfNameRef(NameRef e, int index) { none() } + /** * INTERNAL: Do not use. * The never type `!`. @@ -2766,6 +4380,8 @@ module Raw { override string toString() { result = "NeverTypeRepr" } } + private Element getImmediateChildOfNeverTypeRepr(NeverTypeRepr e, int index) { none() } + /** * INTERNAL: Do not use. * An `offset_of` expression. For example: @@ -2781,17 +4397,45 @@ module Raw { */ Attr getAttr(int index) { offset_of_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this offset of expression. + */ + int getNumberOfAttrs() { result = count(int i | offset_of_expr_attrs(this, i, _)) } + /** * Gets the `index`th field of this offset of expression (0-based). */ NameRef getField(int index) { offset_of_expr_fields(this, index, result) } + /** + * Gets the number of fields of this offset of expression. + */ + int getNumberOfFields() { result = count(int i | offset_of_expr_fields(this, i, _)) } + /** * Gets the type representation of this offset of expression, if it exists. */ TypeRepr getTypeRepr() { offset_of_expr_type_reprs(this, result) } } + private Element getImmediateChildOfOffsetOfExpr(OffsetOfExpr e, int index) { + exists(int n, int nAttr, int nField, int nTypeRepr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nField = nAttr + e.getNumberOfFields() and + nTypeRepr = nField + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getField(index - nAttr) + or + index = nField and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * An or pattern. For example: @@ -2807,7 +4451,24 @@ module Raw { /** * Gets the `index`th pattern of this or pattern (0-based). */ - Pat getPat(int index) { or_pat_pats(this, index, result) } + Pat getPat(int index) { or_pat_pats(this, index, result) } + + /** + * Gets the number of patterns of this or pattern. + */ + int getNumberOfPats() { result = count(int i | or_pat_pats(this, i, _)) } + } + + private Element getImmediateChildOfOrPat(OrPat e, int index) { + exists(int n, int nPat | + n = 0 and + nPat = n + e.getNumberOfPats() and + ( + none() + or + result = e.getPat(index - n) + ) + ) } /** @@ -2828,6 +4489,24 @@ module Raw { Pat getPat() { param_pats(this, result) } } + private Element getImmediateChildOfParam(Param e, int index) { + exists(int n, int nAttr, int nTypeRepr, int nPat | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nTypeRepr = nAttr + 1 and + nPat = nTypeRepr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A parenthesized expression. @@ -2845,12 +4524,32 @@ module Raw { */ Attr getAttr(int index) { paren_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this paren expression. + */ + int getNumberOfAttrs() { result = count(int i | paren_expr_attrs(this, i, _)) } + /** * Gets the expression of this paren expression, if it exists. */ Expr getExpr() { paren_expr_exprs(this, result) } } + private Element getImmediateChildOfParenExpr(ParenExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A parenthesized pattern. @@ -2870,6 +4569,18 @@ module Raw { Pat getPat() { paren_pat_pats(this, result) } } + private Element getImmediateChildOfParenPat(ParenPat e, int index) { + exists(int n, int nPat | + n = 0 and + nPat = n + 1 and + ( + none() + or + index = n and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A parenthesized type. @@ -2889,6 +4600,18 @@ module Raw { TypeRepr getTypeRepr() { paren_type_repr_type_reprs(this, result) } } + private Element getImmediateChildOfParenTypeRepr(ParenTypeRepr e, int index) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A path expression or a variable access in a formatting template. See `PathExpr` and `FormatTemplateVariableAccess` for further details. @@ -2909,6 +4632,18 @@ module Raw { override string toString() { result = "PathPat" } } + private Element getImmediateChildOfPathPat(PathPat e, int index) { + exists(int n, int nPath | + n = 0 and + nPath = n + 1 and + ( + none() + or + index = n and result = e.getPath() + ) + ) + } + /** * INTERNAL: Do not use. * A path referring to a type. For example: @@ -2926,6 +4661,18 @@ module Raw { Path getPath() { path_type_repr_paths(this, result) } } + private Element getImmediateChildOfPathTypeRepr(PathTypeRepr e, int index) { + exists(int n, int nPath | + n = 0 and + nPath = n + 1 and + ( + none() + or + index = n and result = e.getPath() + ) + ) + } + /** * INTERNAL: Do not use. * A unary operation expression. For example: @@ -2943,6 +4690,11 @@ module Raw { */ Attr getAttr(int index) { prefix_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this prefix expression. + */ + int getNumberOfAttrs() { result = count(int i | prefix_expr_attrs(this, i, _)) } + /** * Gets the expression of this prefix expression, if it exists. */ @@ -2954,6 +4706,21 @@ module Raw { string getOperatorName() { prefix_expr_operator_names(this, result) } } + private Element getImmediateChildOfPrefixExpr(PrefixExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A pointer type. @@ -2984,6 +4751,18 @@ module Raw { TypeRepr getTypeRepr() { ptr_type_repr_type_reprs(this, result) } } + private Element getImmediateChildOfPtrTypeRepr(PtrTypeRepr e, int index) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A range expression. For example: @@ -3004,6 +4783,11 @@ module Raw { */ Attr getAttr(int index) { range_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this range expression. + */ + int getNumberOfAttrs() { result = count(int i | range_expr_attrs(this, i, _)) } + /** * Gets the end of this range expression, if it exists. */ @@ -3020,6 +4804,24 @@ module Raw { Expr getStart() { range_expr_starts(this, result) } } + private Element getImmediateChildOfRangeExpr(RangeExpr e, int index) { + exists(int n, int nAttr, int nEnd, int nStart | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nEnd = nAttr + 1 and + nStart = nEnd + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getEnd() + or + index = nEnd and result = e.getStart() + ) + ) + } + /** * INTERNAL: Do not use. * A range pattern. For example: @@ -3050,6 +4852,21 @@ module Raw { Pat getStart() { range_pat_starts(this, result) } } + private Element getImmediateChildOfRangePat(RangePat e, int index) { + exists(int n, int nEnd, int nStart | + n = 0 and + nEnd = n + 1 and + nStart = nEnd + 1 and + ( + none() + or + index = n and result = e.getEnd() + or + index = nEnd and result = e.getStart() + ) + ) + } + /** * INTERNAL: Do not use. * A reference expression. For example: @@ -3068,6 +4885,11 @@ module Raw { */ Attr getAttr(int index) { ref_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this reference expression. + */ + int getNumberOfAttrs() { result = count(int i | ref_expr_attrs(this, i, _)) } + /** * Gets the expression of this reference expression, if it exists. */ @@ -3089,6 +4911,21 @@ module Raw { predicate isRaw() { ref_expr_is_raw(this) } } + private Element getImmediateChildOfRefExpr(RefExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A reference pattern. For example: @@ -3113,6 +4950,18 @@ module Raw { Pat getPat() { ref_pat_pats(this, result) } } + private Element getImmediateChildOfRefPat(RefPat e, int index) { + exists(int n, int nPat | + n = 0 and + nPat = n + 1 and + ( + none() + or + index = n and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A reference type. @@ -3143,6 +4992,21 @@ module Raw { TypeRepr getTypeRepr() { ref_type_repr_type_reprs(this, result) } } + private Element getImmediateChildOfRefTypeRepr(RefTypeRepr e, int index) { + exists(int n, int nLifetime, int nTypeRepr | + n = 0 and + nLifetime = n + 1 and + nTypeRepr = nLifetime + 1 and + ( + none() + or + index = n and result = e.getLifetime() + or + index = nLifetime and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A rest pattern (`..`) in a tuple, slice, or struct pattern. @@ -3160,6 +5024,23 @@ module Raw { * Gets the `index`th attr of this rest pattern (0-based). */ Attr getAttr(int index) { rest_pat_attrs(this, index, result) } + + /** + * Gets the number of attrs of this rest pattern. + */ + int getNumberOfAttrs() { result = count(int i | rest_pat_attrs(this, i, _)) } + } + + private Element getImmediateChildOfRestPat(RestPat e, int index) { + exists(int n, int nAttr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + ( + none() + or + result = e.getAttr(index - n) + ) + ) } /** @@ -3184,12 +5065,32 @@ module Raw { */ Attr getAttr(int index) { return_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this return expression. + */ + int getNumberOfAttrs() { result = count(int i | return_expr_attrs(this, i, _)) } + /** * Gets the expression of this return expression, if it exists. */ Expr getExpr() { return_expr_exprs(this, result) } } + private Element getImmediateChildOfReturnExpr(ReturnExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A `self` parameter. For example `self` in: @@ -3228,6 +5129,27 @@ module Raw { Name getName() { self_param_names(this, result) } } + private Element getImmediateChildOfSelfParam(SelfParam e, int index) { + exists(int n, int nAttr, int nTypeRepr, int nLifetime, int nName | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nTypeRepr = nAttr + 1 and + nLifetime = nTypeRepr + 1 and + nName = nLifetime + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getLifetime() + or + index = nLifetime and result = e.getName() + ) + ) + } + /** * INTERNAL: Do not use. * A slice pattern. For example: @@ -3246,6 +5168,23 @@ module Raw { * Gets the `index`th pattern of this slice pattern (0-based). */ Pat getPat(int index) { slice_pat_pats(this, index, result) } + + /** + * Gets the number of patterns of this slice pattern. + */ + int getNumberOfPats() { result = count(int i | slice_pat_pats(this, i, _)) } + } + + private Element getImmediateChildOfSlicePat(SlicePat e, int index) { + exists(int n, int nPat | + n = 0 and + nPat = n + e.getNumberOfPats() and + ( + none() + or + result = e.getPat(index - n) + ) + ) } /** @@ -3267,6 +5206,18 @@ module Raw { TypeRepr getTypeRepr() { slice_type_repr_type_reprs(this, result) } } + private Element getImmediateChildOfSliceTypeRepr(SliceTypeRepr e, int index) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A struct expression. For example: @@ -3288,6 +5239,21 @@ module Raw { } } + private Element getImmediateChildOfStructExpr(StructExpr e, int index) { + exists(int n, int nPath, int nStructExprFieldList | + n = 0 and + nPath = n + 1 and + nStructExprFieldList = nPath + 1 and + ( + none() + or + index = n and result = e.getPath() + or + index = nPath and result = e.getStructExprFieldList() + ) + ) + } + /** * INTERNAL: Do not use. * A list of fields in a struct declaration. @@ -3305,6 +5271,23 @@ module Raw { * Gets the `index`th field of this struct field list (0-based). */ StructField getField(int index) { struct_field_list_fields(this, index, result) } + + /** + * Gets the number of fields of this struct field list. + */ + int getNumberOfFields() { result = count(int i | struct_field_list_fields(this, i, _)) } + } + + private Element getImmediateChildOfStructFieldList(StructFieldList e, int index) { + exists(int n, int nField | + n = 0 and + nField = n + e.getNumberOfFields() and + ( + none() + or + result = e.getField(index - n) + ) + ) } /** @@ -3326,6 +5309,21 @@ module Raw { StructPatFieldList getStructPatFieldList() { struct_pat_struct_pat_field_lists(this, result) } } + private Element getImmediateChildOfStructPat(StructPat e, int index) { + exists(int n, int nPath, int nStructPatFieldList | + n = 0 and + nPath = n + 1 and + nStructPatFieldList = nPath + 1 and + ( + none() + or + index = n and result = e.getPath() + or + index = nPath and result = e.getStructPatFieldList() + ) + ) + } + /** * INTERNAL: Do not use. * A try expression using the `?` operator. @@ -3344,12 +5342,32 @@ module Raw { */ Attr getAttr(int index) { try_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this try expression. + */ + int getNumberOfAttrs() { result = count(int i | try_expr_attrs(this, i, _)) } + /** * Gets the expression of this try expression, if it exists. */ Expr getExpr() { try_expr_exprs(this, result) } } + private Element getImmediateChildOfTryExpr(TryExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A tuple expression. For example: @@ -3367,10 +5385,35 @@ module Raw { */ Attr getAttr(int index) { tuple_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this tuple expression. + */ + int getNumberOfAttrs() { result = count(int i | tuple_expr_attrs(this, i, _)) } + /** * Gets the `index`th field of this tuple expression (0-based). */ Expr getField(int index) { tuple_expr_fields(this, index, result) } + + /** + * Gets the number of fields of this tuple expression. + */ + int getNumberOfFields() { result = count(int i | tuple_expr_fields(this, i, _)) } + } + + private Element getImmediateChildOfTupleExpr(TupleExpr e, int index) { + exists(int n, int nAttr, int nField | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nField = nAttr + e.getNumberOfFields() and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getField(index - nAttr) + ) + ) } /** @@ -3390,6 +5433,23 @@ module Raw { * Gets the `index`th field of this tuple field list (0-based). */ TupleField getField(int index) { tuple_field_list_fields(this, index, result) } + + /** + * Gets the number of fields of this tuple field list. + */ + int getNumberOfFields() { result = count(int i | tuple_field_list_fields(this, i, _)) } + } + + private Element getImmediateChildOfTupleFieldList(TupleFieldList e, int index) { + exists(int n, int nField | + n = 0 and + nField = n + e.getNumberOfFields() and + ( + none() + or + result = e.getField(index - n) + ) + ) } /** @@ -3407,6 +5467,23 @@ module Raw { * Gets the `index`th field of this tuple pattern (0-based). */ Pat getField(int index) { tuple_pat_fields(this, index, result) } + + /** + * Gets the number of fields of this tuple pattern. + */ + int getNumberOfFields() { result = count(int i | tuple_pat_fields(this, i, _)) } + } + + private Element getImmediateChildOfTuplePat(TuplePat e, int index) { + exists(int n, int nField | + n = 0 and + nField = n + e.getNumberOfFields() and + ( + none() + or + result = e.getField(index - n) + ) + ) } /** @@ -3427,6 +5504,26 @@ module Raw { * Gets the `index`th field of this tuple struct pattern (0-based). */ Pat getField(int index) { tuple_struct_pat_fields(this, index, result) } + + /** + * Gets the number of fields of this tuple struct pattern. + */ + int getNumberOfFields() { result = count(int i | tuple_struct_pat_fields(this, i, _)) } + } + + private Element getImmediateChildOfTupleStructPat(TupleStructPat e, int index) { + exists(int n, int nPath, int nField | + n = 0 and + nPath = n + 1 and + nField = nPath + e.getNumberOfFields() and + ( + none() + or + index = n and result = e.getPath() + or + result = e.getField(index - nPath) + ) + ) } /** @@ -3446,6 +5543,23 @@ module Raw { * Gets the `index`th field of this tuple type representation (0-based). */ TypeRepr getField(int index) { tuple_type_repr_fields(this, index, result) } + + /** + * Gets the number of fields of this tuple type representation. + */ + int getNumberOfFields() { result = count(int i | tuple_type_repr_fields(this, i, _)) } + } + + private Element getImmediateChildOfTupleTypeRepr(TupleTypeRepr e, int index) { + exists(int n, int nField | + n = 0 and + nField = n + e.getNumberOfFields() and + ( + none() + or + result = e.getField(index - n) + ) + ) } /** @@ -3467,6 +5581,18 @@ module Raw { TypeRepr getTypeRepr() { type_arg_type_reprs(this, result) } } + private Element getImmediateChildOfTypeArg(TypeArg e, int index) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A type parameter in a generic parameter list. @@ -3485,6 +5611,11 @@ module Raw { */ Attr getAttr(int index) { type_param_attrs(this, index, result) } + /** + * Gets the number of attrs of this type parameter. + */ + int getNumberOfAttrs() { result = count(int i | type_param_attrs(this, i, _)) } + /** * Gets the default type of this type parameter, if it exists. */ @@ -3501,6 +5632,27 @@ module Raw { TypeBoundList getTypeBoundList() { type_param_type_bound_lists(this, result) } } + private Element getImmediateChildOfTypeParam(TypeParam e, int index) { + exists(int n, int nAttr, int nDefaultType, int nName, int nTypeBoundList | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nDefaultType = nAttr + 1 and + nName = nDefaultType + 1 and + nTypeBoundList = nName + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getDefaultType() + or + index = nDefaultType and result = e.getName() + or + index = nName and result = e.getTypeBoundList() + ) + ) + } + /** * INTERNAL: Do not use. * An underscore expression. For example: @@ -3515,6 +5667,23 @@ module Raw { * Gets the `index`th attr of this underscore expression (0-based). */ Attr getAttr(int index) { underscore_expr_attrs(this, index, result) } + + /** + * Gets the number of attrs of this underscore expression. + */ + int getNumberOfAttrs() { result = count(int i | underscore_expr_attrs(this, i, _)) } + } + + private Element getImmediateChildOfUnderscoreExpr(UnderscoreExpr e, int index) { + exists(int n, int nAttr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + ( + none() + or + result = e.getAttr(index - n) + ) + ) } /** @@ -3535,6 +5704,11 @@ module Raw { */ Attr getAttr(int index) { variant_attrs(this, index, result) } + /** + * Gets the number of attrs of this variant. + */ + int getNumberOfAttrs() { result = count(int i | variant_attrs(this, i, _)) } + /** * Gets the discriminant of this variant, if it exists. */ @@ -3556,6 +5730,30 @@ module Raw { Visibility getVisibility() { variant_visibilities(this, result) } } + private Element getImmediateChildOfVariant(Variant e, int index) { + exists(int n, int nAttr, int nDiscriminant, int nFieldList, int nName, int nVisibility | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nDiscriminant = nAttr + 1 and + nFieldList = nDiscriminant + 1 and + nName = nFieldList + 1 and + nVisibility = nName + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getDiscriminant() + or + index = nDiscriminant and result = e.getFieldList() + or + index = nFieldList and result = e.getName() + or + index = nName and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A wildcard pattern. For example: @@ -3567,6 +5765,8 @@ module Raw { override string toString() { result = "WildcardPat" } } + private Element getImmediateChildOfWildcardPat(WildcardPat e, int index) { none() } + /** * INTERNAL: Do not use. * A `yeet` expression. For example: @@ -3584,12 +5784,32 @@ module Raw { */ Attr getAttr(int index) { yeet_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this yeet expression. + */ + int getNumberOfAttrs() { result = count(int i | yeet_expr_attrs(this, i, _)) } + /** * Gets the expression of this yeet expression, if it exists. */ Expr getExpr() { yeet_expr_exprs(this, result) } } + private Element getImmediateChildOfYeetExpr(YeetExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A `yield` expression. For example: @@ -3608,12 +5828,32 @@ module Raw { */ Attr getAttr(int index) { yield_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this yield expression. + */ + int getNumberOfAttrs() { result = count(int i | yield_expr_attrs(this, i, _)) } + /** * Gets the expression of this yield expression, if it exists. */ Expr getExpr() { yield_expr_exprs(this, result) } } + private Element getImmediateChildOfYieldExpr(YieldExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * An ADT (Abstract Data Type) definition, such as `Struct`, `Enum`, or `Union`. @@ -3625,6 +5865,13 @@ module Raw { MacroItems getDeriveMacroExpansion(int index) { adt_derive_macro_expansions(this, index, result) } + + /** + * Gets the number of derive macro expansions of this adt. + */ + int getNumberOfDeriveMacroExpansions() { + result = count(int i | adt_derive_macro_expansions(this, i, _)) + } } /** @@ -3645,15 +5892,51 @@ module Raw { */ AsmPiece getAsmPiece(int index) { asm_expr_asm_pieces(this, index, result) } + /** + * Gets the number of asm pieces of this asm expression. + */ + int getNumberOfAsmPieces() { result = count(int i | asm_expr_asm_pieces(this, i, _)) } + /** * Gets the `index`th attr of this asm expression (0-based). */ Attr getAttr(int index) { asm_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this asm expression. + */ + int getNumberOfAttrs() { result = count(int i | asm_expr_attrs(this, i, _)) } + /** * Gets the `index`th template of this asm expression (0-based). */ Expr getTemplate(int index) { asm_expr_templates(this, index, result) } + + /** + * Gets the number of templates of this asm expression. + */ + int getNumberOfTemplates() { result = count(int i | asm_expr_templates(this, i, _)) } + } + + private Element getImmediateChildOfAsmExpr(AsmExpr e, int index) { + exists(int n, int nAttributeMacroExpansion, int nAsmPiece, int nAttr, int nTemplate | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAsmPiece = nAttributeMacroExpansion + e.getNumberOfAsmPieces() and + nAttr = nAsmPiece + e.getNumberOfAttrs() and + nTemplate = nAttr + e.getNumberOfTemplates() and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAsmPiece(index - nAttributeMacroExpansion) + or + result = e.getAttr(index - nAsmPiece) + or + result = e.getTemplate(index - nAttr) + ) + ) } /** @@ -3691,6 +5974,11 @@ module Raw { */ Attr getAttr(int index) { block_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this block expression. + */ + int getNumberOfAttrs() { result = count(int i | block_expr_attrs(this, i, _)) } + /** * Holds if this block expression is async. */ @@ -3727,6 +6015,24 @@ module Raw { StmtList getStmtList() { block_expr_stmt_lists(this, result) } } + private Element getImmediateChildOfBlockExpr(BlockExpr e, int index) { + exists(int n, int nLabel, int nAttr, int nStmtList | + n = 0 and + nLabel = n + 1 and + nAttr = nLabel + e.getNumberOfAttrs() and + nStmtList = nAttr + 1 and + ( + none() + or + index = n and result = e.getLabel() + or + result = e.getAttr(index - nLabel) + or + index = nAttr and result = e.getStmtList() + ) + ) + } + /** * INTERNAL: Do not use. * A function call expression. For example: @@ -3746,6 +6052,24 @@ module Raw { Expr getFunction() { call_expr_functions(this, result) } } + private Element getImmediateChildOfCallExpr(CallExpr e, int index) { + exists(int n, int nArgList, int nAttr, int nFunction | + n = 0 and + nArgList = n + 1 and + nAttr = nArgList + e.getNumberOfAttrs() and + nFunction = nAttr + 1 and + ( + none() + or + index = n and result = e.getArgList() + or + result = e.getAttr(index - nArgList) + or + index = nAttr and result = e.getFunction() + ) + ) + } + /** * INTERNAL: Do not use. * An extern block containing foreign function declarations. @@ -3770,6 +6094,11 @@ module Raw { */ Attr getAttr(int index) { extern_block_attrs(this, index, result) } + /** + * Gets the number of attrs of this extern block. + */ + int getNumberOfAttrs() { result = count(int i | extern_block_attrs(this, i, _)) } + /** * Gets the extern item list of this extern block, if it exists. */ @@ -3781,6 +6110,27 @@ module Raw { predicate isUnsafe() { extern_block_is_unsafe(this) } } + private Element getImmediateChildOfExternBlock(ExternBlock e, int index) { + exists(int n, int nAttributeMacroExpansion, int nAbi, int nAttr, int nExternItemList | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAbi = nAttributeMacroExpansion + 1 and + nAttr = nAbi + e.getNumberOfAttrs() and + nExternItemList = nAttr + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + index = nAttributeMacroExpansion and result = e.getAbi() + or + result = e.getAttr(index - nAbi) + or + index = nAttr and result = e.getExternItemList() + ) + ) + } + /** * INTERNAL: Do not use. * An extern crate declaration. @@ -3798,6 +6148,11 @@ module Raw { */ Attr getAttr(int index) { extern_crate_attrs(this, index, result) } + /** + * Gets the number of attrs of this extern crate. + */ + int getNumberOfAttrs() { result = count(int i | extern_crate_attrs(this, i, _)) } + /** * Gets the identifier of this extern crate, if it exists. */ @@ -3814,6 +6169,32 @@ module Raw { Visibility getVisibility() { extern_crate_visibilities(this, result) } } + private Element getImmediateChildOfExternCrate(ExternCrate e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nIdentifier, int nRename, int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nIdentifier = nAttr + 1 and + nRename = nIdentifier + 1 and + nVisibility = nRename + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getIdentifier() + or + index = nIdentifier and result = e.getRename() + or + index = nRename and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * An item inside an extern block. @@ -3852,6 +6233,11 @@ module Raw { */ Attr getAttr(int index) { impl_attrs(this, index, result) } + /** + * Gets the number of attrs of this impl. + */ + int getNumberOfAttrs() { result = count(int i | impl_attrs(this, i, _)) } + /** * Gets the generic parameter list of this impl, if it exists. */ @@ -3893,6 +6279,42 @@ module Raw { WhereClause getWhereClause() { impl_where_clauses(this, result) } } + private Element getImmediateChildOfImpl(Impl e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAssocItemList, int nAttr, int nGenericParamList, + int nSelfTy, int nTrait, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAssocItemList = nAttributeMacroExpansion + 1 and + nAttr = nAssocItemList + e.getNumberOfAttrs() and + nGenericParamList = nAttr + 1 and + nSelfTy = nGenericParamList + 1 and + nTrait = nSelfTy + 1 and + nVisibility = nTrait + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + index = nAttributeMacroExpansion and result = e.getAssocItemList() + or + result = e.getAttr(index - nAssocItemList) + or + index = nAttr and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getSelfTy() + or + index = nSelfTy and result = e.getTrait() + or + index = nTrait and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * The base class for expressions that loop (`LoopExpr`, `ForExpr` or `WhileExpr`). @@ -3928,6 +6350,11 @@ module Raw { */ Attr getAttr(int index) { macro_def_attrs(this, index, result) } + /** + * Gets the number of attrs of this macro def. + */ + int getNumberOfAttrs() { result = count(int i | macro_def_attrs(this, i, _)) } + /** * Gets the body of this macro def, if it exists. */ @@ -3944,6 +6371,36 @@ module Raw { Visibility getVisibility() { macro_def_visibilities(this, result) } } + private Element getImmediateChildOfMacroDef(MacroDef e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nArgs, int nAttr, int nBody, int nName, + int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nArgs = nAttributeMacroExpansion + 1 and + nAttr = nArgs + e.getNumberOfAttrs() and + nBody = nAttr + 1 and + nName = nBody + 1 and + nVisibility = nName + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + index = nAttributeMacroExpansion and result = e.getArgs() + or + result = e.getAttr(index - nArgs) + or + index = nAttr and result = e.getBody() + or + index = nBody and result = e.getName() + or + index = nName and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A macro definition using the `macro_rules!` syntax. @@ -3963,6 +6420,11 @@ module Raw { */ Attr getAttr(int index) { macro_rules_attrs(this, index, result) } + /** + * Gets the number of attrs of this macro rules. + */ + int getNumberOfAttrs() { result = count(int i | macro_rules_attrs(this, i, _)) } + /** * Gets the name of this macro rules, if it exists. */ @@ -3979,6 +6441,32 @@ module Raw { Visibility getVisibility() { macro_rules_visibilities(this, result) } } + private Element getImmediateChildOfMacroRules(MacroRules e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nName, int nTokenTree, int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nName = nAttr + 1 and + nTokenTree = nName + 1 and + nVisibility = nTokenTree + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getName() + or + index = nName and result = e.getTokenTree() + or + index = nTokenTree and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A method call expression. For example: @@ -4006,6 +6494,30 @@ module Raw { Expr getReceiver() { method_call_expr_receivers(this, result) } } + private Element getImmediateChildOfMethodCallExpr(MethodCallExpr e, int index) { + exists(int n, int nArgList, int nAttr, int nGenericArgList, int nIdentifier, int nReceiver | + n = 0 and + nArgList = n + 1 and + nAttr = nArgList + e.getNumberOfAttrs() and + nGenericArgList = nAttr + 1 and + nIdentifier = nGenericArgList + 1 and + nReceiver = nIdentifier + 1 and + ( + none() + or + index = n and result = e.getArgList() + or + result = e.getAttr(index - nArgList) + or + index = nAttr and result = e.getGenericArgList() + or + index = nGenericArgList and result = e.getIdentifier() + or + index = nIdentifier and result = e.getReceiver() + ) + ) + } + /** * INTERNAL: Do not use. * A module declaration. For example: @@ -4026,6 +6538,11 @@ module Raw { */ Attr getAttr(int index) { module_attrs(this, index, result) } + /** + * Gets the number of attrs of this module. + */ + int getNumberOfAttrs() { result = count(int i | module_attrs(this, i, _)) } + /** * Gets the item list of this module, if it exists. */ @@ -4042,6 +6559,32 @@ module Raw { Visibility getVisibility() { module_visibilities(this, result) } } + private Element getImmediateChildOfModule(Module e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nItemList, int nName, int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nItemList = nAttr + 1 and + nName = nItemList + 1 and + nVisibility = nName + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getItemList() + or + index = nItemList and result = e.getName() + or + index = nName and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A path expression. For example: @@ -4059,6 +6602,26 @@ module Raw { * Gets the `index`th attr of this path expression (0-based). */ Attr getAttr(int index) { path_expr_attrs(this, index, result) } + + /** + * Gets the number of attrs of this path expression. + */ + int getNumberOfAttrs() { result = count(int i | path_expr_attrs(this, i, _)) } + } + + private Element getImmediateChildOfPathExpr(PathExpr e, int index) { + exists(int n, int nPath, int nAttr | + n = 0 and + nPath = n + 1 and + nAttr = nPath + e.getNumberOfAttrs() and + ( + none() + or + index = n and result = e.getPath() + or + result = e.getAttr(index - nPath) + ) + ) } /** @@ -4087,6 +6650,11 @@ module Raw { */ Attr getAttr(int index) { trait_attrs(this, index, result) } + /** + * Gets the number of attrs of this trait. + */ + int getNumberOfAttrs() { result = count(int i | trait_attrs(this, i, _)) } + /** * Gets the generic parameter list of this trait, if it exists. */ @@ -4123,6 +6691,42 @@ module Raw { WhereClause getWhereClause() { trait_where_clauses(this, result) } } + private Element getImmediateChildOfTrait(Trait e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAssocItemList, int nAttr, int nGenericParamList, + int nName, int nTypeBoundList, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAssocItemList = nAttributeMacroExpansion + 1 and + nAttr = nAssocItemList + e.getNumberOfAttrs() and + nGenericParamList = nAttr + 1 and + nName = nGenericParamList + 1 and + nTypeBoundList = nName + 1 and + nVisibility = nTypeBoundList + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + index = nAttributeMacroExpansion and result = e.getAssocItemList() + or + result = e.getAttr(index - nAssocItemList) + or + index = nAttr and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getTypeBoundList() + or + index = nTypeBoundList and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * A trait alias. @@ -4140,6 +6744,11 @@ module Raw { */ Attr getAttr(int index) { trait_alias_attrs(this, index, result) } + /** + * Gets the number of attrs of this trait alias. + */ + int getNumberOfAttrs() { result = count(int i | trait_alias_attrs(this, i, _)) } + /** * Gets the generic parameter list of this trait alias, if it exists. */ @@ -4166,6 +6775,39 @@ module Raw { WhereClause getWhereClause() { trait_alias_where_clauses(this, result) } } + private Element getImmediateChildOfTraitAlias(TraitAlias e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nGenericParamList, int nName, + int nTypeBoundList, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nGenericParamList = nAttr + 1 and + nName = nGenericParamList + 1 and + nTypeBoundList = nName + 1 and + nVisibility = nTypeBoundList + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getTypeBoundList() + or + index = nTypeBoundList and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * A `use` statement. For example: @@ -4181,6 +6823,11 @@ module Raw { */ Attr getAttr(int index) { use_attrs(this, index, result) } + /** + * Gets the number of attrs of this use. + */ + int getNumberOfAttrs() { result = count(int i | use_attrs(this, i, _)) } + /** * Gets the use tree of this use, if it exists. */ @@ -4192,6 +6839,27 @@ module Raw { Visibility getVisibility() { use_visibilities(this, result) } } + private Element getImmediateChildOfUse(Use e, int index) { + exists(int n, int nAttributeMacroExpansion, int nAttr, int nUseTree, int nVisibility | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nUseTree = nAttr + 1 and + nVisibility = nUseTree + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getUseTree() + or + index = nUseTree and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A constant item declaration. @@ -4209,6 +6877,11 @@ module Raw { */ Attr getAttr(int index) { const_attrs(this, index, result) } + /** + * Gets the number of attrs of this const. + */ + int getNumberOfAttrs() { result = count(int i | const_attrs(this, i, _)) } + /** * Gets the body of this const, if it exists. */ @@ -4258,6 +6931,42 @@ module Raw { predicate hasImplementation() { const_has_implementation(this) } } + private Element getImmediateChildOfConst(Const e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nBody, int nGenericParamList, int nName, + int nTypeRepr, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nBody = nAttr + 1 and + nGenericParamList = nBody + 1 and + nName = nGenericParamList + 1 and + nTypeRepr = nName + 1 and + nVisibility = nTypeRepr + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getBody() + or + index = nBody and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * An enum declaration. @@ -4275,6 +6984,11 @@ module Raw { */ Attr getAttr(int index) { enum_attrs(this, index, result) } + /** + * Gets the number of attrs of this enum. + */ + int getNumberOfAttrs() { result = count(int i | enum_attrs(this, i, _)) } + /** * Gets the generic parameter list of this enum, if it exists. */ @@ -4301,6 +7015,42 @@ module Raw { WhereClause getWhereClause() { enum_where_clauses(this, result) } } + private Element getImmediateChildOfEnum(Enum e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nDeriveMacroExpansion, int nAttr, + int nGenericParamList, int nName, int nVariantList, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nDeriveMacroExpansion = nAttributeMacroExpansion + e.getNumberOfDeriveMacroExpansions() and + nAttr = nDeriveMacroExpansion + e.getNumberOfAttrs() and + nGenericParamList = nAttr + 1 and + nName = nGenericParamList + 1 and + nVariantList = nName + 1 and + nVisibility = nVariantList + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getDeriveMacroExpansion(index - nAttributeMacroExpansion) + or + result = e.getAttr(index - nDeriveMacroExpansion) + or + index = nAttr and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getVariantList() + or + index = nVariantList and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * A for loop expression. @@ -4320,6 +7070,11 @@ module Raw { */ Attr getAttr(int index) { for_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this for expression. + */ + int getNumberOfAttrs() { result = count(int i | for_expr_attrs(this, i, _)) } + /** * Gets the iterable of this for expression, if it exists. */ @@ -4331,6 +7086,30 @@ module Raw { Pat getPat() { for_expr_pats(this, result) } } + private Element getImmediateChildOfForExpr(ForExpr e, int index) { + exists(int n, int nLabel, int nLoopBody, int nAttr, int nIterable, int nPat | + n = 0 and + nLabel = n + 1 and + nLoopBody = nLabel + 1 and + nAttr = nLoopBody + e.getNumberOfAttrs() and + nIterable = nAttr + 1 and + nPat = nIterable + 1 and + ( + none() + or + index = n and result = e.getLabel() + or + index = nLabel and result = e.getLoopBody() + or + result = e.getAttr(index - nLoopBody) + or + index = nAttr and result = e.getIterable() + or + index = nIterable and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A function declaration. For example @@ -4416,6 +7195,48 @@ module Raw { predicate hasImplementation() { function_has_implementation(this) } } + private Element getImmediateChildOfFunction(Function e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nParamList, int nAttr, int nAbi, int nFunctionBody, + int nGenericParamList, int nName, int nRetType, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nParamList = nAttributeMacroExpansion + 1 and + nAttr = nParamList + e.getNumberOfAttrs() and + nAbi = nAttr + 1 and + nFunctionBody = nAbi + 1 and + nGenericParamList = nFunctionBody + 1 and + nName = nGenericParamList + 1 and + nRetType = nName + 1 and + nVisibility = nRetType + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + index = nAttributeMacroExpansion and result = e.getParamList() + or + result = e.getAttr(index - nParamList) + or + index = nAttr and result = e.getAbi() + or + index = nAbi and result = e.getFunctionBody() + or + index = nFunctionBody and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getRetType() + or + index = nRetType and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * A loop expression. For example: @@ -4448,6 +7269,29 @@ module Raw { * Gets the `index`th attr of this loop expression (0-based). */ Attr getAttr(int index) { loop_expr_attrs(this, index, result) } + + /** + * Gets the number of attrs of this loop expression. + */ + int getNumberOfAttrs() { result = count(int i | loop_expr_attrs(this, i, _)) } + } + + private Element getImmediateChildOfLoopExpr(LoopExpr e, int index) { + exists(int n, int nLabel, int nLoopBody, int nAttr | + n = 0 and + nLabel = n + 1 and + nLoopBody = nLabel + 1 and + nAttr = nLoopBody + e.getNumberOfAttrs() and + ( + none() + or + index = n and result = e.getLabel() + or + index = nLabel and result = e.getLoopBody() + or + result = e.getAttr(index - nLoopBody) + ) + ) } /** @@ -4467,6 +7311,11 @@ module Raw { */ Attr getAttr(int index) { macro_call_attrs(this, index, result) } + /** + * Gets the number of attrs of this macro call. + */ + int getNumberOfAttrs() { result = count(int i | macro_call_attrs(this, i, _)) } + /** * Gets the path of this macro call, if it exists. */ @@ -4483,6 +7332,33 @@ module Raw { AstNode getMacroCallExpansion() { macro_call_macro_call_expansions(this, result) } } + private Element getImmediateChildOfMacroCall(MacroCall e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nPath, int nTokenTree, + int nMacroCallExpansion + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nPath = nAttr + 1 and + nTokenTree = nPath + 1 and + nMacroCallExpansion = nTokenTree + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getPath() + or + index = nPath and result = e.getTokenTree() + or + index = nTokenTree and result = e.getMacroCallExpansion() + ) + ) + } + /** * INTERNAL: Do not use. * A static item declaration. @@ -4500,6 +7376,11 @@ module Raw { */ Attr getAttr(int index) { static_attrs(this, index, result) } + /** + * Gets the number of attrs of this static. + */ + int getNumberOfAttrs() { result = count(int i | static_attrs(this, i, _)) } + /** * Gets the body of this static, if it exists. */ @@ -4536,6 +7417,36 @@ module Raw { Visibility getVisibility() { static_visibilities(this, result) } } + private Element getImmediateChildOfStatic(Static e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nBody, int nName, int nTypeRepr, + int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nBody = nAttr + 1 and + nName = nBody + 1 and + nTypeRepr = nName + 1 and + nVisibility = nTypeRepr + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getBody() + or + index = nBody and result = e.getName() + or + index = nName and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A Struct. For example: @@ -4554,6 +7465,11 @@ module Raw { */ Attr getAttr(int index) { struct_attrs(this, index, result) } + /** + * Gets the number of attrs of this struct. + */ + int getNumberOfAttrs() { result = count(int i | struct_attrs(this, i, _)) } + /** * Gets the field list of this struct, if it exists. */ @@ -4580,6 +7496,42 @@ module Raw { WhereClause getWhereClause() { struct_where_clauses(this, result) } } + private Element getImmediateChildOfStruct(Struct e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nDeriveMacroExpansion, int nAttr, int nFieldList, + int nGenericParamList, int nName, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nDeriveMacroExpansion = nAttributeMacroExpansion + e.getNumberOfDeriveMacroExpansions() and + nAttr = nDeriveMacroExpansion + e.getNumberOfAttrs() and + nFieldList = nAttr + 1 and + nGenericParamList = nFieldList + 1 and + nName = nGenericParamList + 1 and + nVisibility = nName + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getDeriveMacroExpansion(index - nAttributeMacroExpansion) + or + result = e.getAttr(index - nDeriveMacroExpansion) + or + index = nAttr and result = e.getFieldList() + or + index = nFieldList and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * A type alias. For example: @@ -4600,6 +7552,11 @@ module Raw { */ Attr getAttr(int index) { type_alias_attrs(this, index, result) } + /** + * Gets the number of attrs of this type alias. + */ + int getNumberOfAttrs() { result = count(int i | type_alias_attrs(this, i, _)) } + /** * Gets the generic parameter list of this type alias, if it exists. */ @@ -4636,6 +7593,42 @@ module Raw { WhereClause getWhereClause() { type_alias_where_clauses(this, result) } } + private Element getImmediateChildOfTypeAlias(TypeAlias e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nGenericParamList, int nName, + int nTypeRepr, int nTypeBoundList, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nGenericParamList = nAttr + 1 and + nName = nGenericParamList + 1 and + nTypeRepr = nName + 1 and + nTypeBoundList = nTypeRepr + 1 and + nVisibility = nTypeBoundList + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getTypeBoundList() + or + index = nTypeBoundList and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * A union declaration. @@ -4653,6 +7646,11 @@ module Raw { */ Attr getAttr(int index) { union_attrs(this, index, result) } + /** + * Gets the number of attrs of this union. + */ + int getNumberOfAttrs() { result = count(int i | union_attrs(this, i, _)) } + /** * Gets the generic parameter list of this union, if it exists. */ @@ -4679,6 +7677,42 @@ module Raw { WhereClause getWhereClause() { union_where_clauses(this, result) } } + private Element getImmediateChildOfUnion(Union e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nDeriveMacroExpansion, int nAttr, + int nGenericParamList, int nName, int nStructFieldList, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nDeriveMacroExpansion = nAttributeMacroExpansion + e.getNumberOfDeriveMacroExpansions() and + nAttr = nDeriveMacroExpansion + e.getNumberOfAttrs() and + nGenericParamList = nAttr + 1 and + nName = nGenericParamList + 1 and + nStructFieldList = nName + 1 and + nVisibility = nStructFieldList + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getDeriveMacroExpansion(index - nAttributeMacroExpansion) + or + result = e.getAttr(index - nDeriveMacroExpansion) + or + index = nAttr and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getStructFieldList() + or + index = nStructFieldList and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * A while loop expression. @@ -4698,9 +7732,365 @@ module Raw { */ Attr getAttr(int index) { while_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this while expression. + */ + int getNumberOfAttrs() { result = count(int i | while_expr_attrs(this, i, _)) } + /** * Gets the condition of this while expression, if it exists. */ Expr getCondition() { while_expr_conditions(this, result) } } + + private Element getImmediateChildOfWhileExpr(WhileExpr e, int index) { + exists(int n, int nLabel, int nLoopBody, int nAttr, int nCondition | + n = 0 and + nLabel = n + 1 and + nLoopBody = nLabel + 1 and + nAttr = nLoopBody + e.getNumberOfAttrs() and + nCondition = nAttr + 1 and + ( + none() + or + index = n and result = e.getLabel() + or + index = nLabel and result = e.getLoopBody() + or + result = e.getAttr(index - nLoopBody) + or + index = nAttr and result = e.getCondition() + ) + ) + } + + /** + * Gets the immediate child indexed at `index`. Indexes are not guaranteed to be contiguous, but are guaranteed to be distinct. + */ + pragma[nomagic] + Element getImmediateChild(Element e, int index) { + // why does this look more complicated than it should? + // * none() simplifies generation, as we can append `or ...` without a special case for the first item + none() + or + result = getImmediateChildOfExtractorStep(e, index) + or + result = getImmediateChildOfNamedCrate(e, index) + or + result = getImmediateChildOfCrate(e, index) + or + result = getImmediateChildOfMissing(e, index) + or + result = getImmediateChildOfUnimplemented(e, index) + or + result = getImmediateChildOfAbi(e, index) + or + result = getImmediateChildOfArgList(e, index) + or + result = getImmediateChildOfAsmDirSpec(e, index) + or + result = getImmediateChildOfAsmOperandExpr(e, index) + or + result = getImmediateChildOfAsmOption(e, index) + or + result = getImmediateChildOfAsmRegSpec(e, index) + or + result = getImmediateChildOfAssocItemList(e, index) + or + result = getImmediateChildOfAttr(e, index) + or + result = getImmediateChildOfExternItemList(e, index) + or + result = getImmediateChildOfForBinder(e, index) + or + result = getImmediateChildOfFormatArgsArg(e, index) + or + result = getImmediateChildOfGenericArgList(e, index) + or + result = getImmediateChildOfGenericParamList(e, index) + or + result = getImmediateChildOfItemList(e, index) + or + result = getImmediateChildOfLabel(e, index) + or + result = getImmediateChildOfLetElse(e, index) + or + result = getImmediateChildOfMacroItems(e, index) + or + result = getImmediateChildOfMatchArm(e, index) + or + result = getImmediateChildOfMatchArmList(e, index) + or + result = getImmediateChildOfMatchGuard(e, index) + or + result = getImmediateChildOfMeta(e, index) + or + result = getImmediateChildOfName(e, index) + or + result = getImmediateChildOfParamList(e, index) + or + result = getImmediateChildOfParenthesizedArgList(e, index) + or + result = getImmediateChildOfPath(e, index) + or + result = getImmediateChildOfPathSegment(e, index) + or + result = getImmediateChildOfRename(e, index) + or + result = getImmediateChildOfRetTypeRepr(e, index) + or + result = getImmediateChildOfReturnTypeSyntax(e, index) + or + result = getImmediateChildOfSourceFile(e, index) + or + result = getImmediateChildOfStmtList(e, index) + or + result = getImmediateChildOfStructExprField(e, index) + or + result = getImmediateChildOfStructExprFieldList(e, index) + or + result = getImmediateChildOfStructField(e, index) + or + result = getImmediateChildOfStructPatField(e, index) + or + result = getImmediateChildOfStructPatFieldList(e, index) + or + result = getImmediateChildOfTokenTree(e, index) + or + result = getImmediateChildOfTupleField(e, index) + or + result = getImmediateChildOfTypeBound(e, index) + or + result = getImmediateChildOfTypeBoundList(e, index) + or + result = getImmediateChildOfUseBoundGenericArgs(e, index) + or + result = getImmediateChildOfUseTree(e, index) + or + result = getImmediateChildOfUseTreeList(e, index) + or + result = getImmediateChildOfVariantList(e, index) + or + result = getImmediateChildOfVisibility(e, index) + or + result = getImmediateChildOfWhereClause(e, index) + or + result = getImmediateChildOfWherePred(e, index) + or + result = getImmediateChildOfArrayExprInternal(e, index) + or + result = getImmediateChildOfArrayTypeRepr(e, index) + or + result = getImmediateChildOfAsmClobberAbi(e, index) + or + result = getImmediateChildOfAsmConst(e, index) + or + result = getImmediateChildOfAsmLabel(e, index) + or + result = getImmediateChildOfAsmOperandNamed(e, index) + or + result = getImmediateChildOfAsmOptionsList(e, index) + or + result = getImmediateChildOfAsmRegOperand(e, index) + or + result = getImmediateChildOfAsmSym(e, index) + or + result = getImmediateChildOfAssocTypeArg(e, index) + or + result = getImmediateChildOfAwaitExpr(e, index) + or + result = getImmediateChildOfBecomeExpr(e, index) + or + result = getImmediateChildOfBinaryExpr(e, index) + or + result = getImmediateChildOfBoxPat(e, index) + or + result = getImmediateChildOfBreakExpr(e, index) + or + result = getImmediateChildOfCastExpr(e, index) + or + result = getImmediateChildOfClosureExpr(e, index) + or + result = getImmediateChildOfComment(e, index) + or + result = getImmediateChildOfConstArg(e, index) + or + result = getImmediateChildOfConstBlockPat(e, index) + or + result = getImmediateChildOfConstParam(e, index) + or + result = getImmediateChildOfContinueExpr(e, index) + or + result = getImmediateChildOfDynTraitTypeRepr(e, index) + or + result = getImmediateChildOfExprStmt(e, index) + or + result = getImmediateChildOfFieldExpr(e, index) + or + result = getImmediateChildOfFnPtrTypeRepr(e, index) + or + result = getImmediateChildOfForTypeRepr(e, index) + or + result = getImmediateChildOfFormatArgsExpr(e, index) + or + result = getImmediateChildOfIdentPat(e, index) + or + result = getImmediateChildOfIfExpr(e, index) + or + result = getImmediateChildOfImplTraitTypeRepr(e, index) + or + result = getImmediateChildOfIndexExpr(e, index) + or + result = getImmediateChildOfInferTypeRepr(e, index) + or + result = getImmediateChildOfLetExpr(e, index) + or + result = getImmediateChildOfLetStmt(e, index) + or + result = getImmediateChildOfLifetime(e, index) + or + result = getImmediateChildOfLifetimeArg(e, index) + or + result = getImmediateChildOfLifetimeParam(e, index) + or + result = getImmediateChildOfLiteralExpr(e, index) + or + result = getImmediateChildOfLiteralPat(e, index) + or + result = getImmediateChildOfMacroBlockExpr(e, index) + or + result = getImmediateChildOfMacroExpr(e, index) + or + result = getImmediateChildOfMacroPat(e, index) + or + result = getImmediateChildOfMacroTypeRepr(e, index) + or + result = getImmediateChildOfMatchExpr(e, index) + or + result = getImmediateChildOfNameRef(e, index) + or + result = getImmediateChildOfNeverTypeRepr(e, index) + or + result = getImmediateChildOfOffsetOfExpr(e, index) + or + result = getImmediateChildOfOrPat(e, index) + or + result = getImmediateChildOfParam(e, index) + or + result = getImmediateChildOfParenExpr(e, index) + or + result = getImmediateChildOfParenPat(e, index) + or + result = getImmediateChildOfParenTypeRepr(e, index) + or + result = getImmediateChildOfPathPat(e, index) + or + result = getImmediateChildOfPathTypeRepr(e, index) + or + result = getImmediateChildOfPrefixExpr(e, index) + or + result = getImmediateChildOfPtrTypeRepr(e, index) + or + result = getImmediateChildOfRangeExpr(e, index) + or + result = getImmediateChildOfRangePat(e, index) + or + result = getImmediateChildOfRefExpr(e, index) + or + result = getImmediateChildOfRefPat(e, index) + or + result = getImmediateChildOfRefTypeRepr(e, index) + or + result = getImmediateChildOfRestPat(e, index) + or + result = getImmediateChildOfReturnExpr(e, index) + or + result = getImmediateChildOfSelfParam(e, index) + or + result = getImmediateChildOfSlicePat(e, index) + or + result = getImmediateChildOfSliceTypeRepr(e, index) + or + result = getImmediateChildOfStructExpr(e, index) + or + result = getImmediateChildOfStructFieldList(e, index) + or + result = getImmediateChildOfStructPat(e, index) + or + result = getImmediateChildOfTryExpr(e, index) + or + result = getImmediateChildOfTupleExpr(e, index) + or + result = getImmediateChildOfTupleFieldList(e, index) + or + result = getImmediateChildOfTuplePat(e, index) + or + result = getImmediateChildOfTupleStructPat(e, index) + or + result = getImmediateChildOfTupleTypeRepr(e, index) + or + result = getImmediateChildOfTypeArg(e, index) + or + result = getImmediateChildOfTypeParam(e, index) + or + result = getImmediateChildOfUnderscoreExpr(e, index) + or + result = getImmediateChildOfVariant(e, index) + or + result = getImmediateChildOfWildcardPat(e, index) + or + result = getImmediateChildOfYeetExpr(e, index) + or + result = getImmediateChildOfYieldExpr(e, index) + or + result = getImmediateChildOfAsmExpr(e, index) + or + result = getImmediateChildOfBlockExpr(e, index) + or + result = getImmediateChildOfCallExpr(e, index) + or + result = getImmediateChildOfExternBlock(e, index) + or + result = getImmediateChildOfExternCrate(e, index) + or + result = getImmediateChildOfImpl(e, index) + or + result = getImmediateChildOfMacroDef(e, index) + or + result = getImmediateChildOfMacroRules(e, index) + or + result = getImmediateChildOfMethodCallExpr(e, index) + or + result = getImmediateChildOfModule(e, index) + or + result = getImmediateChildOfPathExpr(e, index) + or + result = getImmediateChildOfTrait(e, index) + or + result = getImmediateChildOfTraitAlias(e, index) + or + result = getImmediateChildOfUse(e, index) + or + result = getImmediateChildOfConst(e, index) + or + result = getImmediateChildOfEnum(e, index) + or + result = getImmediateChildOfForExpr(e, index) + or + result = getImmediateChildOfFunction(e, index) + or + result = getImmediateChildOfLoopExpr(e, index) + or + result = getImmediateChildOfMacroCall(e, index) + or + result = getImmediateChildOfStatic(e, index) + or + result = getImmediateChildOfStruct(e, index) + or + result = getImmediateChildOfTypeAlias(e, index) + or + result = getImmediateChildOfUnion(e, index) + or + result = getImmediateChildOfWhileExpr(e, index) + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll index 9ed7961f63ce..74b4a14460a0 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll @@ -845,18 +845,36 @@ module Synth { /** * INTERNAL: Do not use. + * + * Gets the parent of synthetic element `e`. + */ + Raw::Element getSynthParent(TElement e) { + none() + or + e = TFormat(result, _, _, _) + or + e = TFormatArgument(result, _, _, _, _, _) + or + e = TFormatTemplateVariableAccess(result, _, _) + } + + /** + * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAbi`, if possible. */ TAbi convertAbiFromRaw(Raw::Element e) { result = TAbi(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArgList`, if possible. */ TArgList convertArgListFromRaw(Raw::Element e) { result = TArgList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArrayExprInternal`, if possible. */ TArrayExprInternal convertArrayExprInternalFromRaw(Raw::Element e) { @@ -865,306 +883,357 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArrayListExpr`, if possible. */ TArrayListExpr convertArrayListExprFromRaw(Raw::Element e) { result = TArrayListExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArrayRepeatExpr`, if possible. */ TArrayRepeatExpr convertArrayRepeatExprFromRaw(Raw::Element e) { result = TArrayRepeatExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArrayTypeRepr`, if possible. */ TArrayTypeRepr convertArrayTypeReprFromRaw(Raw::Element e) { result = TArrayTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmClobberAbi`, if possible. */ TAsmClobberAbi convertAsmClobberAbiFromRaw(Raw::Element e) { result = TAsmClobberAbi(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmConst`, if possible. */ TAsmConst convertAsmConstFromRaw(Raw::Element e) { result = TAsmConst(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmDirSpec`, if possible. */ TAsmDirSpec convertAsmDirSpecFromRaw(Raw::Element e) { result = TAsmDirSpec(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmExpr`, if possible. */ TAsmExpr convertAsmExprFromRaw(Raw::Element e) { result = TAsmExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmLabel`, if possible. */ TAsmLabel convertAsmLabelFromRaw(Raw::Element e) { result = TAsmLabel(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmOperandExpr`, if possible. */ TAsmOperandExpr convertAsmOperandExprFromRaw(Raw::Element e) { result = TAsmOperandExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmOperandNamed`, if possible. */ TAsmOperandNamed convertAsmOperandNamedFromRaw(Raw::Element e) { result = TAsmOperandNamed(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmOption`, if possible. */ TAsmOption convertAsmOptionFromRaw(Raw::Element e) { result = TAsmOption(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmOptionsList`, if possible. */ TAsmOptionsList convertAsmOptionsListFromRaw(Raw::Element e) { result = TAsmOptionsList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmRegOperand`, if possible. */ TAsmRegOperand convertAsmRegOperandFromRaw(Raw::Element e) { result = TAsmRegOperand(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmRegSpec`, if possible. */ TAsmRegSpec convertAsmRegSpecFromRaw(Raw::Element e) { result = TAsmRegSpec(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmSym`, if possible. */ TAsmSym convertAsmSymFromRaw(Raw::Element e) { result = TAsmSym(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAssocItemList`, if possible. */ TAssocItemList convertAssocItemListFromRaw(Raw::Element e) { result = TAssocItemList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAssocTypeArg`, if possible. */ TAssocTypeArg convertAssocTypeArgFromRaw(Raw::Element e) { result = TAssocTypeArg(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAttr`, if possible. */ TAttr convertAttrFromRaw(Raw::Element e) { result = TAttr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAwaitExpr`, if possible. */ TAwaitExpr convertAwaitExprFromRaw(Raw::Element e) { result = TAwaitExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBecomeExpr`, if possible. */ TBecomeExpr convertBecomeExprFromRaw(Raw::Element e) { result = TBecomeExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBinaryExpr`, if possible. */ TBinaryExpr convertBinaryExprFromRaw(Raw::Element e) { result = TBinaryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBlockExpr`, if possible. */ TBlockExpr convertBlockExprFromRaw(Raw::Element e) { result = TBlockExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBoxPat`, if possible. */ TBoxPat convertBoxPatFromRaw(Raw::Element e) { result = TBoxPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBreakExpr`, if possible. */ TBreakExpr convertBreakExprFromRaw(Raw::Element e) { result = TBreakExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCallExpr`, if possible. */ TCallExpr convertCallExprFromRaw(Raw::Element e) { result = TCallExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCastExpr`, if possible. */ TCastExpr convertCastExprFromRaw(Raw::Element e) { result = TCastExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TClosureExpr`, if possible. */ TClosureExpr convertClosureExprFromRaw(Raw::Element e) { result = TClosureExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TComment`, if possible. */ TComment convertCommentFromRaw(Raw::Element e) { result = TComment(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConst`, if possible. */ TConst convertConstFromRaw(Raw::Element e) { result = TConst(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConstArg`, if possible. */ TConstArg convertConstArgFromRaw(Raw::Element e) { result = TConstArg(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConstBlockPat`, if possible. */ TConstBlockPat convertConstBlockPatFromRaw(Raw::Element e) { result = TConstBlockPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConstParam`, if possible. */ TConstParam convertConstParamFromRaw(Raw::Element e) { result = TConstParam(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TContinueExpr`, if possible. */ TContinueExpr convertContinueExprFromRaw(Raw::Element e) { result = TContinueExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCrate`, if possible. */ TCrate convertCrateFromRaw(Raw::Element e) { result = TCrate(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDynTraitTypeRepr`, if possible. */ TDynTraitTypeRepr convertDynTraitTypeReprFromRaw(Raw::Element e) { result = TDynTraitTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TEnum`, if possible. */ TEnum convertEnumFromRaw(Raw::Element e) { result = TEnum(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExprStmt`, if possible. */ TExprStmt convertExprStmtFromRaw(Raw::Element e) { result = TExprStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExternBlock`, if possible. */ TExternBlock convertExternBlockFromRaw(Raw::Element e) { result = TExternBlock(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExternCrate`, if possible. */ TExternCrate convertExternCrateFromRaw(Raw::Element e) { result = TExternCrate(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExternItemList`, if possible. */ TExternItemList convertExternItemListFromRaw(Raw::Element e) { result = TExternItemList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExtractorStep`, if possible. */ TExtractorStep convertExtractorStepFromRaw(Raw::Element e) { result = TExtractorStep(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFieldExpr`, if possible. */ TFieldExpr convertFieldExprFromRaw(Raw::Element e) { result = TFieldExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFnPtrTypeRepr`, if possible. */ TFnPtrTypeRepr convertFnPtrTypeReprFromRaw(Raw::Element e) { result = TFnPtrTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForBinder`, if possible. */ TForBinder convertForBinderFromRaw(Raw::Element e) { result = TForBinder(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForExpr`, if possible. */ TForExpr convertForExprFromRaw(Raw::Element e) { result = TForExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForTypeRepr`, if possible. */ TForTypeRepr convertForTypeReprFromRaw(Raw::Element e) { result = TForTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFormat`, if possible. */ TFormat convertFormatFromRaw(Raw::Element e) { none() } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFormatArgsArg`, if possible. */ TFormatArgsArg convertFormatArgsArgFromRaw(Raw::Element e) { result = TFormatArgsArg(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFormatArgsExpr`, if possible. */ TFormatArgsExpr convertFormatArgsExprFromRaw(Raw::Element e) { result = TFormatArgsExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFormatArgument`, if possible. */ TFormatArgument convertFormatArgumentFromRaw(Raw::Element e) { none() } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFormatTemplateVariableAccess`, if possible. */ TFormatTemplateVariableAccess convertFormatTemplateVariableAccessFromRaw(Raw::Element e) { @@ -1173,42 +1242,49 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFunction`, if possible. */ TFunction convertFunctionFromRaw(Raw::Element e) { result = TFunction(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TGenericArgList`, if possible. */ TGenericArgList convertGenericArgListFromRaw(Raw::Element e) { result = TGenericArgList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TGenericParamList`, if possible. */ TGenericParamList convertGenericParamListFromRaw(Raw::Element e) { result = TGenericParamList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIdentPat`, if possible. */ TIdentPat convertIdentPatFromRaw(Raw::Element e) { result = TIdentPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIfExpr`, if possible. */ TIfExpr convertIfExprFromRaw(Raw::Element e) { result = TIfExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TImpl`, if possible. */ TImpl convertImplFromRaw(Raw::Element e) { result = TImpl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TImplTraitTypeRepr`, if possible. */ TImplTraitTypeRepr convertImplTraitTypeReprFromRaw(Raw::Element e) { @@ -1217,246 +1293,287 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIndexExpr`, if possible. */ TIndexExpr convertIndexExprFromRaw(Raw::Element e) { result = TIndexExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInferTypeRepr`, if possible. */ TInferTypeRepr convertInferTypeReprFromRaw(Raw::Element e) { result = TInferTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TItemList`, if possible. */ TItemList convertItemListFromRaw(Raw::Element e) { result = TItemList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLabel`, if possible. */ TLabel convertLabelFromRaw(Raw::Element e) { result = TLabel(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLetElse`, if possible. */ TLetElse convertLetElseFromRaw(Raw::Element e) { result = TLetElse(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLetExpr`, if possible. */ TLetExpr convertLetExprFromRaw(Raw::Element e) { result = TLetExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLetStmt`, if possible. */ TLetStmt convertLetStmtFromRaw(Raw::Element e) { result = TLetStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLifetime`, if possible. */ TLifetime convertLifetimeFromRaw(Raw::Element e) { result = TLifetime(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLifetimeArg`, if possible. */ TLifetimeArg convertLifetimeArgFromRaw(Raw::Element e) { result = TLifetimeArg(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLifetimeParam`, if possible. */ TLifetimeParam convertLifetimeParamFromRaw(Raw::Element e) { result = TLifetimeParam(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLiteralExpr`, if possible. */ TLiteralExpr convertLiteralExprFromRaw(Raw::Element e) { result = TLiteralExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLiteralPat`, if possible. */ TLiteralPat convertLiteralPatFromRaw(Raw::Element e) { result = TLiteralPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLoopExpr`, if possible. */ TLoopExpr convertLoopExprFromRaw(Raw::Element e) { result = TLoopExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroBlockExpr`, if possible. */ TMacroBlockExpr convertMacroBlockExprFromRaw(Raw::Element e) { result = TMacroBlockExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroCall`, if possible. */ TMacroCall convertMacroCallFromRaw(Raw::Element e) { result = TMacroCall(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroDef`, if possible. */ TMacroDef convertMacroDefFromRaw(Raw::Element e) { result = TMacroDef(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroExpr`, if possible. */ TMacroExpr convertMacroExprFromRaw(Raw::Element e) { result = TMacroExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroItems`, if possible. */ TMacroItems convertMacroItemsFromRaw(Raw::Element e) { result = TMacroItems(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroPat`, if possible. */ TMacroPat convertMacroPatFromRaw(Raw::Element e) { result = TMacroPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroRules`, if possible. */ TMacroRules convertMacroRulesFromRaw(Raw::Element e) { result = TMacroRules(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroTypeRepr`, if possible. */ TMacroTypeRepr convertMacroTypeReprFromRaw(Raw::Element e) { result = TMacroTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMatchArm`, if possible. */ TMatchArm convertMatchArmFromRaw(Raw::Element e) { result = TMatchArm(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMatchArmList`, if possible. */ TMatchArmList convertMatchArmListFromRaw(Raw::Element e) { result = TMatchArmList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMatchExpr`, if possible. */ TMatchExpr convertMatchExprFromRaw(Raw::Element e) { result = TMatchExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMatchGuard`, if possible. */ TMatchGuard convertMatchGuardFromRaw(Raw::Element e) { result = TMatchGuard(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMeta`, if possible. */ TMeta convertMetaFromRaw(Raw::Element e) { result = TMeta(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMethodCallExpr`, if possible. */ TMethodCallExpr convertMethodCallExprFromRaw(Raw::Element e) { result = TMethodCallExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMissing`, if possible. */ TMissing convertMissingFromRaw(Raw::Element e) { result = TMissing(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TModule`, if possible. */ TModule convertModuleFromRaw(Raw::Element e) { result = TModule(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TName`, if possible. */ TName convertNameFromRaw(Raw::Element e) { result = TName(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TNameRef`, if possible. */ TNameRef convertNameRefFromRaw(Raw::Element e) { result = TNameRef(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TNamedCrate`, if possible. */ TNamedCrate convertNamedCrateFromRaw(Raw::Element e) { result = TNamedCrate(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TNeverTypeRepr`, if possible. */ TNeverTypeRepr convertNeverTypeReprFromRaw(Raw::Element e) { result = TNeverTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOffsetOfExpr`, if possible. */ TOffsetOfExpr convertOffsetOfExprFromRaw(Raw::Element e) { result = TOffsetOfExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOrPat`, if possible. */ TOrPat convertOrPatFromRaw(Raw::Element e) { result = TOrPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParam`, if possible. */ TParam convertParamFromRaw(Raw::Element e) { result = TParam(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParamList`, if possible. */ TParamList convertParamListFromRaw(Raw::Element e) { result = TParamList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParenExpr`, if possible. */ TParenExpr convertParenExprFromRaw(Raw::Element e) { result = TParenExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParenPat`, if possible. */ TParenPat convertParenPatFromRaw(Raw::Element e) { result = TParenPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParenTypeRepr`, if possible. */ TParenTypeRepr convertParenTypeReprFromRaw(Raw::Element e) { result = TParenTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParenthesizedArgList`, if possible. */ TParenthesizedArgList convertParenthesizedArgListFromRaw(Raw::Element e) { @@ -1465,162 +1582,189 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPath`, if possible. */ TPath convertPathFromRaw(Raw::Element e) { result = TPath(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPathExpr`, if possible. */ TPathExpr convertPathExprFromRaw(Raw::Element e) { result = TPathExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPathPat`, if possible. */ TPathPat convertPathPatFromRaw(Raw::Element e) { result = TPathPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPathSegment`, if possible. */ TPathSegment convertPathSegmentFromRaw(Raw::Element e) { result = TPathSegment(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPathTypeRepr`, if possible. */ TPathTypeRepr convertPathTypeReprFromRaw(Raw::Element e) { result = TPathTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPrefixExpr`, if possible. */ TPrefixExpr convertPrefixExprFromRaw(Raw::Element e) { result = TPrefixExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPtrTypeRepr`, if possible. */ TPtrTypeRepr convertPtrTypeReprFromRaw(Raw::Element e) { result = TPtrTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRangeExpr`, if possible. */ TRangeExpr convertRangeExprFromRaw(Raw::Element e) { result = TRangeExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRangePat`, if possible. */ TRangePat convertRangePatFromRaw(Raw::Element e) { result = TRangePat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRefExpr`, if possible. */ TRefExpr convertRefExprFromRaw(Raw::Element e) { result = TRefExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRefPat`, if possible. */ TRefPat convertRefPatFromRaw(Raw::Element e) { result = TRefPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRefTypeRepr`, if possible. */ TRefTypeRepr convertRefTypeReprFromRaw(Raw::Element e) { result = TRefTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRename`, if possible. */ TRename convertRenameFromRaw(Raw::Element e) { result = TRename(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRestPat`, if possible. */ TRestPat convertRestPatFromRaw(Raw::Element e) { result = TRestPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRetTypeRepr`, if possible. */ TRetTypeRepr convertRetTypeReprFromRaw(Raw::Element e) { result = TRetTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TReturnExpr`, if possible. */ TReturnExpr convertReturnExprFromRaw(Raw::Element e) { result = TReturnExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TReturnTypeSyntax`, if possible. */ TReturnTypeSyntax convertReturnTypeSyntaxFromRaw(Raw::Element e) { result = TReturnTypeSyntax(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSelfParam`, if possible. */ TSelfParam convertSelfParamFromRaw(Raw::Element e) { result = TSelfParam(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSlicePat`, if possible. */ TSlicePat convertSlicePatFromRaw(Raw::Element e) { result = TSlicePat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSliceTypeRepr`, if possible. */ TSliceTypeRepr convertSliceTypeReprFromRaw(Raw::Element e) { result = TSliceTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSourceFile`, if possible. */ TSourceFile convertSourceFileFromRaw(Raw::Element e) { result = TSourceFile(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStatic`, if possible. */ TStatic convertStaticFromRaw(Raw::Element e) { result = TStatic(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStmtList`, if possible. */ TStmtList convertStmtListFromRaw(Raw::Element e) { result = TStmtList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStruct`, if possible. */ TStruct convertStructFromRaw(Raw::Element e) { result = TStruct(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructExpr`, if possible. */ TStructExpr convertStructExprFromRaw(Raw::Element e) { result = TStructExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructExprField`, if possible. */ TStructExprField convertStructExprFieldFromRaw(Raw::Element e) { result = TStructExprField(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructExprFieldList`, if possible. */ TStructExprFieldList convertStructExprFieldListFromRaw(Raw::Element e) { @@ -1629,30 +1773,35 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructField`, if possible. */ TStructField convertStructFieldFromRaw(Raw::Element e) { result = TStructField(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructFieldList`, if possible. */ TStructFieldList convertStructFieldListFromRaw(Raw::Element e) { result = TStructFieldList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructPat`, if possible. */ TStructPat convertStructPatFromRaw(Raw::Element e) { result = TStructPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructPatField`, if possible. */ TStructPatField convertStructPatFieldFromRaw(Raw::Element e) { result = TStructPatField(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructPatFieldList`, if possible. */ TStructPatFieldList convertStructPatFieldListFromRaw(Raw::Element e) { @@ -1661,120 +1810,140 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTokenTree`, if possible. */ TTokenTree convertTokenTreeFromRaw(Raw::Element e) { result = TTokenTree(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTrait`, if possible. */ TTrait convertTraitFromRaw(Raw::Element e) { result = TTrait(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTraitAlias`, if possible. */ TTraitAlias convertTraitAliasFromRaw(Raw::Element e) { result = TTraitAlias(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTryExpr`, if possible. */ TTryExpr convertTryExprFromRaw(Raw::Element e) { result = TTryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleExpr`, if possible. */ TTupleExpr convertTupleExprFromRaw(Raw::Element e) { result = TTupleExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleField`, if possible. */ TTupleField convertTupleFieldFromRaw(Raw::Element e) { result = TTupleField(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleFieldList`, if possible. */ TTupleFieldList convertTupleFieldListFromRaw(Raw::Element e) { result = TTupleFieldList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTuplePat`, if possible. */ TTuplePat convertTuplePatFromRaw(Raw::Element e) { result = TTuplePat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleStructPat`, if possible. */ TTupleStructPat convertTupleStructPatFromRaw(Raw::Element e) { result = TTupleStructPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleTypeRepr`, if possible. */ TTupleTypeRepr convertTupleTypeReprFromRaw(Raw::Element e) { result = TTupleTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeAlias`, if possible. */ TTypeAlias convertTypeAliasFromRaw(Raw::Element e) { result = TTypeAlias(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeArg`, if possible. */ TTypeArg convertTypeArgFromRaw(Raw::Element e) { result = TTypeArg(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeBound`, if possible. */ TTypeBound convertTypeBoundFromRaw(Raw::Element e) { result = TTypeBound(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeBoundList`, if possible. */ TTypeBoundList convertTypeBoundListFromRaw(Raw::Element e) { result = TTypeBoundList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeParam`, if possible. */ TTypeParam convertTypeParamFromRaw(Raw::Element e) { result = TTypeParam(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnderscoreExpr`, if possible. */ TUnderscoreExpr convertUnderscoreExprFromRaw(Raw::Element e) { result = TUnderscoreExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnimplemented`, if possible. */ TUnimplemented convertUnimplementedFromRaw(Raw::Element e) { result = TUnimplemented(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnion`, if possible. */ TUnion convertUnionFromRaw(Raw::Element e) { result = TUnion(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUse`, if possible. */ TUse convertUseFromRaw(Raw::Element e) { result = TUse(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUseBoundGenericArgs`, if possible. */ TUseBoundGenericArgs convertUseBoundGenericArgsFromRaw(Raw::Element e) { @@ -1783,66 +1952,77 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUseTree`, if possible. */ TUseTree convertUseTreeFromRaw(Raw::Element e) { result = TUseTree(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUseTreeList`, if possible. */ TUseTreeList convertUseTreeListFromRaw(Raw::Element e) { result = TUseTreeList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TVariant`, if possible. */ TVariant convertVariantFromRaw(Raw::Element e) { result = TVariant(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TVariantList`, if possible. */ TVariantList convertVariantListFromRaw(Raw::Element e) { result = TVariantList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TVisibility`, if possible. */ TVisibility convertVisibilityFromRaw(Raw::Element e) { result = TVisibility(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TWhereClause`, if possible. */ TWhereClause convertWhereClauseFromRaw(Raw::Element e) { result = TWhereClause(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TWherePred`, if possible. */ TWherePred convertWherePredFromRaw(Raw::Element e) { result = TWherePred(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TWhileExpr`, if possible. */ TWhileExpr convertWhileExprFromRaw(Raw::Element e) { result = TWhileExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TWildcardPat`, if possible. */ TWildcardPat convertWildcardPatFromRaw(Raw::Element e) { result = TWildcardPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TYeetExpr`, if possible. */ TYeetExpr convertYeetExprFromRaw(Raw::Element e) { result = TYeetExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TYieldExpr`, if possible. */ TYieldExpr convertYieldExprFromRaw(Raw::Element e) { result = TYieldExpr(e) } diff --git a/rust/ql/lib/codeql/rust/frameworks/Poem.qll b/rust/ql/lib/codeql/rust/frameworks/Poem.qll index 2554d8452939..ad57ba1dc943 100644 --- a/rust/ql/lib/codeql/rust/frameworks/Poem.qll +++ b/rust/ql/lib/codeql/rust/frameworks/Poem.qll @@ -11,7 +11,7 @@ private import codeql.rust.Concepts private class PoemHandlerParam extends RemoteSource::Range { PoemHandlerParam() { exists(TupleStructPat param | - this.asPat().getPat() = param.getAField() and + this.asPat() = param.getAField() and param.getStruct().getCanonicalPath() = ["poem::web::query::Query", "poem::web::path::Path"] ) } diff --git a/rust/ql/lib/codeql/rust/frameworks/actix-web.model.yml b/rust/ql/lib/codeql/rust/frameworks/actix-web.model.yml index 4031b9bbe866..17b76e137d82 100644 --- a/rust/ql/lib/codeql/rust/frameworks/actix-web.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/actix-web.model.yml @@ -6,6 +6,11 @@ extensions: - ["::to", "Argument[0].Parameter[0..7]", "remote", "manual"] # Actix attributes such as `get` expand to this `to` call on the handler. - ["::to", "Argument[0].Parameter[0..7]", "remote", "manual"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::new", "Argument[0]", "html-injection", "manual"] - addsTo: pack: codeql/rust-all extensible: summaryModel diff --git a/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml b/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml deleted file mode 100644 index 706170d44b89..000000000000 --- a/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml +++ /dev/null @@ -1,12 +0,0 @@ -extensions: - - addsTo: - pack: codeql/rust-all - extensible: sourceModel - data: - - ["::connect", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["<_ as async_std::io::read::ReadExt>::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["<_ as async_std::io::read::ReadExt>::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] \ No newline at end of file diff --git a/rust/ql/lib/codeql/rust/frameworks/asyncstd/io.model.yml b/rust/ql/lib/codeql/rust/frameworks/asyncstd/io.model.yml new file mode 100644 index 000000000000..99e14d0f0bc6 --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/asyncstd/io.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["<_ as async_std::io::read::ReadExt>::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] + - ["<_ as async_std::io::read::ReadExt>::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml b/rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml new file mode 100644 index 000000000000..9e65ba1b1964 --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["::connect", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml b/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml new file mode 100644 index 000000000000..1da63eb7961a --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml @@ -0,0 +1,9 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/poem.model.yml b/rust/ql/lib/codeql/rust/frameworks/poem.model.yml new file mode 100644 index 000000000000..a64be8ada828 --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/poem.model.yml @@ -0,0 +1,22 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::add", "Argument[0]", "cookie-use", "manual"] + - ["::add", "Argument[0]", "cookie-use", "manual"] + - ["::add", "Argument[0]", "cookie-use", "manual"] + - ["::new", "Argument[0]", "cookie-use", "manual"] + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::set_secure", "Argument[self].OptionalBarrier[cookie-secure-arg0]", "Argument[self]", "taint", "manual"] + - ["::secure", "Argument[self].OptionalBarrier[cookie-secure-arg0]", "ReturnValue", "taint", "manual"] + - ["::partitioned", "Argument[self].OptionalBarrier[cookie-partitioned-arg0]", "ReturnValue", "taint", "manual"] + - ["::name", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::path", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::domain", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::http_only", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::same_site", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::max_age", "Argument[self]", "ReturnValue", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml b/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml index 5457460919f2..e9bc66b4be75 100644 --- a/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml @@ -11,6 +11,10 @@ extensions: data: - ["::request", "Argument[1]", "request-url", "manual"] - ["::request", "Argument[1]", "request-url", "manual"] + - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] - addsTo: pack: codeql/rust-all extensible: summaryModel diff --git a/rust/ql/lib/codeql/rust/frameworks/rustcrypto/RustCrypto.qll b/rust/ql/lib/codeql/rust/frameworks/rustcrypto/RustCrypto.qll index b34b3abf7cb8..b6accba0734d 100644 --- a/rust/ql/lib/codeql/rust/frameworks/rustcrypto/RustCrypto.qll +++ b/rust/ql/lib/codeql/rust/frameworks/rustcrypto/RustCrypto.qll @@ -25,7 +25,7 @@ class StreamCipherInit extends Cryptography::CryptographicOperation::Range { // a call to `cipher::KeyInit::new`, `cipher::KeyInit::new_from_slice`, // `cipher::KeyIvInit::new`, `cipher::KeyIvInit::new_from_slices`, `rc2::Rc2::new_with_eff_key_len` or similar. exists(CallExprBase ce, string rawAlgorithmName | - ce = this.asExpr().getExpr() and + ce = this.asExpr() and ce.getStaticTarget().(Function).getName().getText() = ["new", "new_from_slice", "new_with_eff_key_len", "new_from_slices"] and // extract the algorithm name from the type of `ce` or its receiver. diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll index 0c4999bba5e7..038bbeaece4a 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll @@ -31,6 +31,27 @@ class BuiltinType extends Struct { string getName() { result = super.getName().getText() } } +/** + * A numerical type, such as `i64`, `usize`, `f32` or `f64`. + */ +abstract private class NumericTypeImpl extends BuiltinType { } + +final class NumericType = NumericTypeImpl; + +/** + * An integral numerical type, such as `i64` or `usize`. + */ +abstract private class IntegralTypeImpl extends NumericTypeImpl { } + +final class IntegralType = IntegralTypeImpl; + +/** + * A floating-point numerical type, such as `f32` or `f64`. + */ +abstract private class FloatingPointTypeImpl extends NumericTypeImpl { } + +final class FloatingPointType = FloatingPointTypeImpl; + /** The builtin `bool` type. */ class Bool extends BuiltinType { Bool() { this.getName() = "bool" } @@ -47,71 +68,104 @@ class Str extends BuiltinType { } /** The builtin `i8` type. */ -class I8 extends BuiltinType { +class I8 extends IntegralTypeImpl { I8() { this.getName() = "i8" } } /** The builtin `i16` type. */ -class I16 extends BuiltinType { +class I16 extends IntegralTypeImpl { I16() { this.getName() = "i16" } } /** The builtin `i32` type. */ -class I32 extends BuiltinType { +class I32 extends IntegralTypeImpl { I32() { this.getName() = "i32" } } /** The builtin `i64` type. */ -class I64 extends BuiltinType { +class I64 extends IntegralTypeImpl { I64() { this.getName() = "i64" } } /** The builtin `i128` type. */ -class I128 extends BuiltinType { +class I128 extends IntegralTypeImpl { I128() { this.getName() = "i128" } } /** The builtin `u8` type. */ -class U8 extends BuiltinType { +class U8 extends IntegralTypeImpl { U8() { this.getName() = "u8" } } /** The builtin `u16` type. */ -class U16 extends BuiltinType { +class U16 extends IntegralTypeImpl { U16() { this.getName() = "u16" } } /** The builtin `u32` type. */ -class U32 extends BuiltinType { +class U32 extends IntegralTypeImpl { U32() { this.getName() = "u32" } } /** The builtin `u64` type. */ -class U64 extends BuiltinType { +class U64 extends IntegralTypeImpl { U64() { this.getName() = "u64" } } /** The builtin `u128` type. */ -class U128 extends BuiltinType { +class U128 extends IntegralTypeImpl { U128() { this.getName() = "u128" } } /** The builtin `usize` type. */ -class Usize extends BuiltinType { +class Usize extends IntegralTypeImpl { Usize() { this.getName() = "usize" } } /** The builtin `isize` type. */ -class Isize extends BuiltinType { +class Isize extends IntegralTypeImpl { Isize() { this.getName() = "isize" } } /** The builtin `f32` type. */ -class F32 extends BuiltinType { +class F32 extends FloatingPointTypeImpl { F32() { this.getName() = "f32" } } /** The builtin `f64` type. */ -class F64 extends BuiltinType { +class F64 extends FloatingPointTypeImpl { F64() { this.getName() = "f64" } } + +/** The builtin slice type `[T]`. */ +class SliceType extends BuiltinType { + SliceType() { this.getName() = "Slice" } +} + +/** The builtin array type `[T; N]`. */ +class ArrayType extends BuiltinType { + ArrayType() { this.getName() = "Array" } +} + +/** The builtin reference type `&T` or `&mut T`. */ +class RefType extends BuiltinType { + RefType() { this.getName() = "Ref" } +} + +/** The builtin pointer type `*const T` or `*mut T`. */ +class PtrType extends BuiltinType { + PtrType() { this.getName() = "Ptr" } +} + +/** A builtin tuple type `(T1, T2, ...)`. */ +class TupleType extends BuiltinType { + TupleType() { this.getName().matches("Tuple%") } + + /** Gets the arity of this tuple type. */ + int getArity() { + not this.hasGenericParamList() and + result = 0 + or + result = this.getGenericParamList().getNumberOfGenericParams() + } +} diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll index 773aa77f80f7..d078f08c1680 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll @@ -4,20 +4,16 @@ private import rust private import codeql.rust.Concepts -private import codeql.rust.controlflow.ControlFlowGraph as Cfg -private import codeql.rust.controlflow.CfgNodes as CfgNodes private import codeql.rust.dataflow.DataFlow private import codeql.rust.internal.PathResolution /** * A call to the `starts_with` method on a `Path`. */ -private class StartswithCall extends Path::SafeAccessCheck::Range, CfgNodes::MethodCallExprCfgNode { - StartswithCall() { - this.getMethodCallExpr().getStaticTarget().getCanonicalPath() = "::starts_with" - } +private class StartswithCall extends Path::SafeAccessCheck::Range, MethodCallExpr { + StartswithCall() { this.getStaticTarget().getCanonicalPath() = "::starts_with" } - override predicate checks(Cfg::CfgNode e, boolean branch) { + override predicate checks(Expr e, boolean branch) { e = this.getReceiver() and branch = true } diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml index 56131c704620..5199a0e8117b 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml @@ -29,16 +29,25 @@ extensions: - ["::into_pin", "Argument[0]", "ReturnValue", "value", "manual"] # Fmt - ["alloc::fmt::format", "Argument[0]", "ReturnValue", "taint", "manual"] + # Layout + - ["::from_size_align", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::from_size_align_unchecked", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["::array", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::repeat", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["::repeat", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["::repeat_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::repeat_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::extend", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["::extend", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["::extend_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::extend_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::align_to", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::align_to", "Argument[self].Element", "ReturnValue.Field[0,1,2].Reference.Element", "taint", "manual"] + - ["::pad_to_align", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::size", "Argument[self]", "ReturnValue", "taint", "manual"] # String - - ["::as_str", "Argument[self]", "ReturnValue", "value", "manual"] - - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] - ["::as_str", "Argument[self]", "ReturnValue", "value", "manual"] - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] - ["<_ as alloc::string::ToString>::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] - - ["<_ as core::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["<_ as core::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["<_ as core::ops::arith::Add>::add", "Argument[0].Reference", "ReturnValue", "taint", "manual"] # Vec - ["alloc::vec::from_elem", "Argument[0]", "ReturnValue.Element", "value", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml index 9a29741bd37e..7d1761dd8885 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml @@ -3,10 +3,13 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: + # Arithmetic + - ["<_ as core::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["<_ as core::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["<_ as core::ops::arith::Add>::add", "Argument[0].Reference", "ReturnValue", "taint", "manual"] # Clone - ["<_ as core::clone::Clone>::clone", "Argument[self].Reference", "ReturnValue", "value", "manual"] # Conversions - - ["::align_to", "Argument[self].Element", "ReturnValue.Field[0,1,2].Reference.Element", "taint", "manual"] - ["<_ as core::convert::Into>::into", "Argument[self].Element", "ReturnValue.Element", "taint", "manual"] - ["<_ as core::convert::Into>::into", "Argument[self].Reference.Element", "ReturnValue.Element", "taint", "manual"] # From @@ -23,21 +26,9 @@ extensions: - ["<_ as core::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - # Layout - - ["::from_size_align", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::from_size_align_unchecked", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["::array", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::repeat", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["::repeat", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["::repeat_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::repeat_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::extend", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["::extend", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["::extend_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::extend_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::align_to", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::pad_to_align", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["::size", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::chain", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::chain", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::take", "Argument[self]", "ReturnValue", "taint", "manual"] # Pin - ["core::pin::Pin", "Argument[0]", "ReturnValue", "value", "manual"] - ["::new", "Argument[0]", "ReturnValue", "value", "manual"] @@ -53,13 +44,11 @@ extensions: - ["core::ptr::write_unaligned", "Argument[1]", "Argument[0].Reference", "value", "manual"] - ["core::ptr::write_volatile", "Argument[1]", "Argument[0].Reference", "value", "manual"] # Str - - ["::as_str", "Argument[self]", "ReturnValue", "taint", "value"] - - ["::as_str", "Argument[self]", "ReturnValue", "taint", "value"] - - ["::as_bytes", "Argument[self]", "ReturnValue", "taint", "value"] - - ["::as_bytes", "Argument[self]", "ReturnValue", "taint", "value"] - - ["::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::as_str", "Argument[self]", "ReturnValue", "value", "manual"] + - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] - ["::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] + - ["::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] - addsTo: pack: codeql/rust-all extensible: sourceModel @@ -71,6 +60,7 @@ extensions: - ["core::ptr::dangling", "ReturnValue", "pointer-invalidate", "manual"] - ["core::ptr::dangling_mut", "ReturnValue", "pointer-invalidate", "manual"] - ["core::ptr::null", "ReturnValue", "pointer-invalidate", "manual"] + - ["core::ptr::null_mut", "ReturnValue", "pointer-invalidate", "manual"] - ["v8::primitives::null", "ReturnValue", "pointer-invalidate", "manual"] - addsTo: pack: codeql/rust-all diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml index 79b0b16f41e2..076cea745fb7 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml @@ -3,14 +3,27 @@ extensions: pack: codeql/rust-all extensible: sourceModel data: + - ["std::fs::exists", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["std::fs::read", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["std::fs::read_dir", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["std::fs::read_to_string", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["std::fs::read_link", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["std::fs::metadata", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["std::fs::symlink_metadata", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["::path", "ReturnValue", "file", "manual"] - ["::file_name", "ReturnValue", "file", "manual"] - ["::open", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["::open_buffered", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["::open", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["::exists", "ReturnValue", "file", "manual"] + - ["::try_exists", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["::is_file", "ReturnValue", "file", "manual"] + - ["::is_dir", "ReturnValue", "file", "manual"] + - ["::is_symlink", "ReturnValue", "file", "manual"] + - ["::metadata", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["::symlink_metadata", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["::read_dir", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["::read_link", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - addsTo: pack: codeql/rust-all extensible: sinkModel @@ -68,3 +81,12 @@ extensions: - ["::with_extension", "Argument[Self].Reference", "ReturnValue", "taint", "manual"] - ["::with_file_name", "Argument[Self].Reference", "ReturnValue", "taint", "manual"] - ["::with_file_name", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["::accessed", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::created", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::file_type", "Argument[self].Reference", "ReturnValue", "taint", "manual"] + - ["::is_file", "Argument[self].Reference", "ReturnValue", "taint", "manual"] + - ["::is_dir", "Argument[self].Reference", "ReturnValue", "taint", "manual"] + - ["::is_symlink", "Argument[self].Reference", "ReturnValue", "taint", "manual"] + - ["::len", "Argument[self].Reference", "ReturnValue", "taint", "manual"] + - ["::modified", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::permissions", "Argument[self].Reference", "ReturnValue", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml b/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml index ae58b2a077aa..17b0451793d8 100644 --- a/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml @@ -46,6 +46,3 @@ extensions: - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>:::read_f32_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f64", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f64_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::chain", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::chain", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::take", "Argument[self]", "ReturnValue", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/tokio-postgres.model.yml b/rust/ql/lib/codeql/rust/frameworks/tokio/postgres.model.yml similarity index 100% rename from rust/ql/lib/codeql/rust/frameworks/tokio-postgres.model.yml rename to rust/ql/lib/codeql/rust/frameworks/tokio/postgres.model.yml diff --git a/rust/ql/lib/codeql/rust/frameworks/warp.model.yml b/rust/ql/lib/codeql/rust/frameworks/warp.model.yml index 5071b4dea868..18757da57109 100644 --- a/rust/ql/lib/codeql/rust/frameworks/warp.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/warp.model.yml @@ -5,4 +5,9 @@ extensions: data: - ["<_ as warp::filter::Filter>::then", "Argument[0].Parameter[0..7]", "remote", "manual"] - ["<_ as warp::filter::Filter>::map", "Argument[0].Parameter[0..7]", "remote", "manual"] - - ["<_ as warp::filter::Filter>::and_then", "Argument[0].Parameter[0..7]", "remote", "manual"] \ No newline at end of file + - ["<_ as warp::filter::Filter>::and_then", "Argument[0].Parameter[0..7]", "remote", "manual"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["warp::reply::html", "Argument[0]", "html-injection", "manual"] \ No newline at end of file diff --git a/rust/ql/lib/codeql/rust/internal/CachedStages.qll b/rust/ql/lib/codeql/rust/internal/CachedStages.qll index 132b9ec8f7e8..dc80fc09dad9 100644 --- a/rust/ql/lib/codeql/rust/internal/CachedStages.qll +++ b/rust/ql/lib/codeql/rust/internal/CachedStages.qll @@ -115,13 +115,11 @@ module Stages { predicate backref() { 1 = 1 or - exists(resolvePath(_)) + exists(resolvePathIgnoreVariableShadowing(_)) or exists(any(ItemNode i).getASuccessor(_, _, _)) or exists(any(ImplOrTraitItemNode i).getASelfPath()) - or - any(TypeParamItemNode i).hasTraitBound() } } diff --git a/rust/ql/lib/codeql/rust/internal/Definitions.qll b/rust/ql/lib/codeql/rust/internal/Definitions.qll index b1b3e475c468..60520a77cbf5 100644 --- a/rust/ql/lib/codeql/rust/internal/Definitions.qll +++ b/rust/ql/lib/codeql/rust/internal/Definitions.qll @@ -37,6 +37,9 @@ private module Cached { TFormatArgsArgIndex(Expr e) { e = any(FormatArgsArg a).getExpr() } or TItemNode(ItemNode i) + pragma[nomagic] + private predicate isMacroCallLocation(Location loc) { loc = any(MacroCall m).getLocation() } + /** * Gets an element, of kind `kind`, that element `use` uses, if any. */ @@ -44,7 +47,7 @@ private module Cached { Definition definitionOf(Use use, string kind) { result = use.getDefinition() and kind = use.getUseType() and - not result.getLocation() = any(MacroCall m).getLocation() + not isMacroCallLocation(result.getLocation()) } } diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index fc49b7ca5e82..767d8c3674ec 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -1,9 +1,49 @@ /** * Provides functionality for resolving paths, using the predicate `resolvePath`. + * + * Path resolution needs to happen before variable resolution, because otherwise + * we cannot know whether an identifier pattern binds a new variable or whether it + * refers to a constructor or constant: + * + * ```rust + * let x = ...; // `x` is only a variable if it does not resolve to a constructor/constant + * ``` + * + * Even though variable names typically start with a lowercase letter and constructors + * with an uppercase letter, this is not enforced by the Rust language. + * + * Variables may shadow declarations, so variable resolution also needs to affect + * path resolution: + * + * ```rust + * fn foo() {} // (1) + * + * fn bar() { + * let f = foo; // `foo` here refers to (1) via path resolution + * let foo = f(); // (2) + * foo // `foo` here refers to (2) via variable resolution + * } + * ``` + * + * So it may seem that path resolution and variable resolution must happen in mutual + * recursion, but we would like to keep the inherently global path resolution logic + * separate from the inherently local variable resolution logic. We achieve this by + * + * - First computing global path resolution, where variable shadowing is ignored, + * exposed as the internal predicate `resolvePathIgnoreVariableShadowing`. + * - `resolvePathIgnoreVariableShadowing` is sufficient to determine whether an + * identifier pattern resolves to a constructor/constant, since if it does, it cannot + * be shadowed by a variable. We expose this as the predicate `identPatIsResolvable`. + * - Variable resolution can then be computed as a local property, using only the + * global information from `identPatIsResolvable`. + * - Finally, path resolution can be computed by restricting + * `resolvePathIgnoreVariableShadowing` to paths that are not resolvable via + * variable resolution. */ private import rust private import codeql.rust.elements.internal.generated.ParentChild +private import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl private import codeql.rust.elements.internal.CallExprImpl::Impl as CallExprImpl private import codeql.rust.internal.CachedStages private import codeql.rust.frameworks.stdlib.Builtins as Builtins @@ -90,24 +130,6 @@ private module UseOption = Option; private class UseOption = UseOption::Option; -/** - * Holds if `n` is superseded by an attribute macro expansion. That is, `n` is - * an item or a transitive child of an item with an attribute macro expansion. - */ -predicate supersededByAttributeMacroExpansion(AstNode n) { - n.(Item).hasAttributeMacroExpansion() - or - exists(AstNode parent | - n.getParentNode() = parent and - supersededByAttributeMacroExpansion(parent) and - // Don't exclude expansions themselves as they supercede other nodes. - not n = parent.(Item).getAttributeMacroExpansion() and - // Don't consider attributes themselves to be superseded. E.g., in `#[a] fn - // f() {}` the macro expansion supercedes `fn f() {}` but not `#[a]`. - not n instanceof Attr - ) -} - /** * An item that may be referred to by a path, and which is a node in * the _item graph_. @@ -186,10 +208,7 @@ predicate supersededByAttributeMacroExpansion(AstNode n) { * - https://doc.rust-lang.org/reference/names/namespaces.html */ abstract class ItemNode extends Locatable { - ItemNode() { - // Exclude items that are superseded by the expansion of an attribute macro. - not supersededByAttributeMacroExpansion(this) - } + ItemNode() { not this.(Item).hasAttributeMacroExpansion() } /** Gets the (original) name of this item. */ abstract string getName(); @@ -205,7 +224,7 @@ abstract class ItemNode extends Locatable { pragma[nomagic] final Attr getAttr(string name) { result = this.getAnAttr() and - result.getMeta().getPath().(RelevantPath).isUnqualified(name) + result.getMeta().getPath().(PathExt).isUnqualified(name) } final predicate hasAttr(string name) { exists(this.getAttr(name)) } @@ -280,8 +299,7 @@ abstract class ItemNode extends Locatable { kind.isInternal() and useOpt.isNone() or - externCrateEdge(this, name, result) and - kind.isInternal() and + externCrateEdge(this, name, kind, result) and useOpt.isNone() or macroExportEdge(this, name, result) and @@ -297,7 +315,7 @@ abstract class ItemNode extends Locatable { result = use_.getASuccessor(name, kind, _) ) or - exists(ExternCrateItemNode ec | result = ec.(ItemNode).getASuccessor(name, kind, useOpt) | + exists(ExternCrateItemNode ec | result = ec.getASuccessor(name, kind, useOpt) | ec = this.getASuccessor(_, _, _) or // if the extern crate appears in the crate root, then the crate name is also added @@ -548,7 +566,7 @@ class ExternCrateItemNode extends ItemNode instanceof ExternCrate { override Namespace getNamespace() { none() } - override Visibility getVisibility() { none() } + override Visibility getVisibility() { result = ExternCrate.super.getVisibility() } override Attr getAnAttr() { result = ExternCrate.super.getAnAttr() } @@ -641,7 +659,7 @@ private class VariantItemNode extends ParameterizableItemNode instanceof Variant override string getName() { result = Variant.super.getName().getText() } override Namespace getNamespace() { - if super.getFieldList() instanceof StructFieldList then result.isType() else result.isValue() + if super.isStruct() then result.isType() else result.isValue() } override TypeParam getTypeParam(int i) { @@ -734,12 +752,34 @@ abstract class ImplOrTraitItemNode extends ItemNode { predicate hasAssocItem(string name) { name = this.getAnAssocItem().getName() } } +private TypeItemNode resolveBuiltin(TypeRepr tr) { + tr instanceof SliceTypeRepr and + result instanceof Builtins::SliceType + or + tr instanceof ArrayTypeRepr and + result instanceof Builtins::ArrayType + or + tr instanceof RefTypeRepr and + result instanceof Builtins::RefType + or + tr instanceof PtrTypeRepr and + result instanceof Builtins::PtrType + or + result.(Builtins::TupleType).getArity() = tr.(TupleTypeRepr).getNumberOfFields() +} + final class ImplItemNode extends ImplOrTraitItemNode instanceof Impl { Path getSelfPath() { result = super.getSelfTy().(PathTypeRepr).getPath() } Path getTraitPath() { result = super.getTrait().(PathTypeRepr).getPath() } - TypeItemNode resolveSelfTy() { result = resolvePath(this.getSelfPath()) } + TypeItemNode resolveSelfTyBuiltin() { result = resolveBuiltin(this.(Impl).getSelfTy()) } + + TypeItemNode resolveSelfTy() { + result = resolvePath(this.getSelfPath()) + or + result = this.resolveSelfTyBuiltin() + } TraitItemNode resolveTraitTy() { result = resolvePath(this.getTraitPath()) } @@ -914,7 +954,11 @@ private class ModuleItemNode extends ModuleLikeNode instanceof Module { } private class ImplItemNodeImpl extends ImplItemNode { - TypeItemNode resolveSelfTyCand() { result = resolvePathCand(this.getSelfPath()) } + TypeItemNode resolveSelfTyCand() { + result = resolvePathCand(this.getSelfPath()) + or + result = this.resolveSelfTyBuiltin() + } TraitItemNode resolveTraitTyCand() { result = resolvePathCand(this.getTraitPath()) } } @@ -925,7 +969,7 @@ private class StructItemNode extends TypeItemNode, ParameterizableItemNode insta override Namespace getNamespace() { result.isType() // the struct itself or - not super.getFieldList() instanceof StructFieldList and + not super.isStruct() and result.isValue() // the constructor } @@ -1155,34 +1199,6 @@ final class TypeParamItemNode extends TypeItemNode instanceof TypeParam { ItemNode resolveABound() { result = resolvePath(this.getABoundPath()) } - /** - * Holds if this type parameter has a trait bound. Examples: - * - * ```rust - * impl Foo { ... } // has no trait bound - * - * impl Foo { ... } // has trait bound - * - * impl Foo where T: Trait { ... } // has trait bound - * ``` - */ - cached - predicate hasTraitBound() { Stages::PathResolutionStage::ref() and exists(this.getABoundPath()) } - - /** - * Holds if this type parameter has no trait bound. Examples: - * - * ```rust - * impl Foo { ... } // has no trait bound - * - * impl Foo { ... } // has trait bound - * - * impl Foo where T: Trait { ... } // has trait bound - * ``` - */ - pragma[nomagic] - predicate hasNoTraitBound() { not this.hasTraitBound() } - override string getName() { result = TypeParam.super.getName().getText() } override Namespace getNamespace() { result.isType() } @@ -1457,6 +1473,24 @@ private predicate crateDependencyEdge(SourceFileItemNode file, string name, Crat not hasDeclOrDep(file, name) } +/** + * Gets a `UseTree` that is nested under `tree`, and which needs to be resolved + * relative to the path of `tree`. + * + * `tree` is restricted to either having a path or being a direct child of some + * `use` statement without a path. + */ +private UseTree getAUseTreeUseTree(UseTree tree) { + result = tree.getUseTreeList().getAUseTree() and + (if tree.hasPath() then any() else tree = any(Use u).getUseTree()) + or + exists(UseTree mid | + mid = getAUseTreeUseTree(tree) and + not mid.hasPath() and + result = mid.getUseTreeList().getAUseTree() + ) +} + private predicate useTreeDeclares(UseTree tree, string name) { not tree.isGlob() and not exists(tree.getUseTreeList()) and @@ -1470,7 +1504,7 @@ private predicate useTreeDeclares(UseTree tree, string name) { or exists(UseTree mid | useTreeDeclares(mid, name) and - mid = tree.getUseTreeList().getAUseTree() + mid = getAUseTreeUseTree(tree) ) } @@ -1503,17 +1537,22 @@ private predicate declares(ItemNode item, Namespace ns, string name) { ) } -/** A path that does not access a local variable. */ -class RelevantPath extends Path { - RelevantPath() { not this = any(VariableAccess va).(PathExpr).getPath() } +/** + * A `Path` or an `IdentPat`. + * + * `IdentPat`s are included in order to resolve unqualified references to + * constructors in patterns. + */ +abstract class PathExt extends AstNode { + abstract string getText(); /** Holds if this is an unqualified path with the textual value `name`. */ pragma[nomagic] - predicate isUnqualified(string name) { - not exists(this.getQualifier()) and - not this = any(UseTreeList list).getAUseTree().getPath().getQualifier*() and - name = this.getText() - } + abstract predicate isUnqualified(string name); + + abstract Path getQualifier(); + + abstract string toStringDebug(); /** * Holds if this is an unqualified path with the textual value `name` and @@ -1535,6 +1574,33 @@ class RelevantPath extends Path { predicate isDollarCrate() { this.isUnqualified("$crate", _) } } +private class PathExtPath extends PathExt instanceof Path { + override string getText() { result = Path.super.getText() } + + override predicate isUnqualified(string name) { + not exists(Path.super.getQualifier()) and + not exists(UseTree tree | + tree.hasPath() and + this = getAUseTreeUseTree(tree).getPath().getQualifier*() + ) and + name = Path.super.getText() + } + + override Path getQualifier() { result = Path.super.getQualifier() } + + override string toStringDebug() { result = Path.super.toStringDebug() } +} + +private class PathExtIdentPat extends PathExt, IdentPat { + override string getText() { result = this.getName().getText() } + + override predicate isUnqualified(string name) { name = this.getText() } + + override Path getQualifier() { none() } + + override string toStringDebug() { result = this.getText() } +} + private predicate isModule(ItemNode m) { m instanceof Module } /** Holds if source file `source` contains the module `m`. */ @@ -1558,7 +1624,7 @@ private ItemNode getOuterScope(ItemNode i) { pragma[nomagic] private predicate unqualifiedPathLookup(ItemNode ancestor, string name, Namespace ns, ItemNode encl) { // lookup in the immediately enclosing item - exists(RelevantPath path | + exists(PathExt path | path.isUnqualified(name, encl) and ancestor = encl and not name = ["crate", "$crate", "super", "self"] @@ -1594,7 +1660,7 @@ private ItemNode getASuccessor( private predicate isSourceFile(ItemNode source) { source instanceof SourceFileItemNode } -private predicate hasCratePath(ItemNode i) { any(RelevantPath path).isCratePath(_, i) } +private predicate hasCratePath(ItemNode i) { any(PathExt path).isCratePath(_, i) } private predicate hasChild(ItemNode parent, ItemNode child) { child.getImmediateParent() = parent } @@ -1606,7 +1672,7 @@ private predicate sourceFileHasCratePathTc(ItemNode i1, ItemNode i2) = * `name` may be looked up inside `ancestor`. */ pragma[nomagic] -private predicate keywordLookup(ItemNode ancestor, string name, RelevantPath p) { +private predicate keywordLookup(ItemNode ancestor, string name, PathExt p) { // For `crate`, jump directly to the root module exists(ItemNode i | p.isCratePath(name, i) | ancestor instanceof SourceFile and @@ -1620,7 +1686,7 @@ private predicate keywordLookup(ItemNode ancestor, string name, RelevantPath p) } pragma[nomagic] -private ItemNode unqualifiedPathLookup(RelevantPath p, Namespace ns, SuccessorKind kind) { +private ItemNode unqualifiedPathLookup(PathExt p, Namespace ns, SuccessorKind kind) { exists(ItemNode ancestor, string name | result = getASuccessor(ancestor, pragma[only_bind_into](name), ns, kind, _) and kind.isInternalOrBoth() @@ -1635,7 +1701,7 @@ private ItemNode unqualifiedPathLookup(RelevantPath p, Namespace ns, SuccessorKi } pragma[nomagic] -private predicate isUnqualifiedSelfPath(RelevantPath path) { path.isUnqualified("Self") } +private predicate isUnqualifiedSelfPath(PathExt path) { path.isUnqualified("Self") } /** Provides the input to `TraitIsVisible`. */ signature predicate relevantTraitVisibleSig(Element element, Trait trait); @@ -1718,14 +1784,14 @@ private module DollarCrateResolution { isDollarCrateSupportedMacroExpansion(_, expansion) } - private predicate isDollarCratePath(RelevantPath p) { p.isDollarCrate() } + private predicate isDollarCratePath(PathExt p) { p.isDollarCrate() } - private predicate isInDollarCrateMacroExpansion(RelevantPath p, AstNode expansion) = + private predicate isInDollarCrateMacroExpansion(PathExt p, AstNode expansion) = doublyBoundedFastTC(hasParent/2, isDollarCratePath/1, isDollarCrateSupportedMacroExpansion/1)(p, expansion) pragma[nomagic] - private predicate isInDollarCrateMacroExpansionFromFile(File macroDefFile, RelevantPath p) { + private predicate isInDollarCrateMacroExpansionFromFile(File macroDefFile, PathExt p) { exists(Path macroDefPath, AstNode expansion | isDollarCrateSupportedMacroExpansion(macroDefPath, expansion) and isInDollarCrateMacroExpansion(p, expansion) and @@ -1740,17 +1806,17 @@ private module DollarCrateResolution { * calls. */ pragma[nomagic] - predicate resolveDollarCrate(RelevantPath p, CrateItemNode crate) { + predicate resolveDollarCrate(PathExt p, CrateItemNode crate) { isInDollarCrateMacroExpansionFromFile(crate.getASourceFile().getFile(), p) } } pragma[nomagic] -private ItemNode resolvePathCand0(RelevantPath path, Namespace ns) { +private ItemNode resolvePathCand0(PathExt path, Namespace ns) { exists(ItemNode res | res = unqualifiedPathLookup(path, ns, _) and if - not any(RelevantPath parent).getQualifier() = path and + not any(PathExt parent).getQualifier() = path and isUnqualifiedSelfPath(path) and res instanceof ImplItemNode then result = res.(ImplItemNodeImpl).resolveSelfTyCand() @@ -1764,10 +1830,17 @@ private ItemNode resolvePathCand0(RelevantPath path, Namespace ns) { or result = resolveUseTreeListItem(_, _, path, _) and ns = result.getNamespace() + or + exists(PathSegment seg | + seg = path.(Path).getSegment() and + result = resolveBuiltin(seg.getTypeRepr()) and + not seg.hasTraitTypeRepr() and + ns.isType() + ) } pragma[nomagic] -private ItemNode resolvePathCandQualifier(RelevantPath qualifier, RelevantPath path, string name) { +private ItemNode resolvePathCandQualifier(PathExt qualifier, PathExt path, string name) { qualifier = path.getQualifier() and result = resolvePathCand(qualifier) and name = path.getText() @@ -1815,9 +1888,7 @@ private predicate checkQualifiedVisibility( * qualifier of `path` and `qualifier` resolves to `q`, if any. */ pragma[nomagic] -private ItemNode resolvePathCandQualified( - RelevantPath qualifier, ItemNode q, RelevantPath path, Namespace ns -) { +private ItemNode resolvePathCandQualified(PathExt qualifier, ItemNode q, PathExt path, Namespace ns) { exists(string name, SuccessorKind kind, UseOption useOpt | q = resolvePathCandQualifier(qualifier, path, name) and result = getASuccessor(q, name, ns, kind, useOpt) and @@ -1826,12 +1897,14 @@ private ItemNode resolvePathCandQualified( } /** Holds if path `p` must be looked up in namespace `n`. */ -private predicate pathUsesNamespace(Path p, Namespace n) { +private predicate pathUsesNamespace(PathExt p, Namespace n) { n.isValue() and ( p = any(PathExpr pe).getPath() or p = any(TupleStructPat tsp).getPath() + or + p instanceof PathExtIdentPat ) or n.isType() and @@ -1907,7 +1980,7 @@ private predicate macroUseEdge( * result in non-monotonic recursion. */ pragma[nomagic] -private ItemNode resolvePathCand(RelevantPath path) { +private ItemNode resolvePathCand(PathExt path) { exists(Namespace ns | result = resolvePathCand0(path, ns) and if path = any(ImplItemNode i).getSelfPath() @@ -1920,7 +1993,13 @@ private ItemNode resolvePathCand(RelevantPath path) { else if path = any(PathTypeRepr p).getPath() then result instanceof TypeItemNode - else any() + else + if path instanceof IdentPat + then + result instanceof VariantItemNode or + result instanceof StructItemNode or + result instanceof ConstItemNode + else any() | pathUsesNamespace(path, ns) or @@ -1937,7 +2016,7 @@ private ItemNode resolvePathCand(RelevantPath path) { } /** Get a trait that should be visible when `path` resolves to `node`, if any. */ -private Trait getResolvePathTraitUsed(RelevantPath path, AssocItemNode node) { +private Trait getResolvePathTraitUsed(PathExt path, AssocItemNode node) { exists(TypeItemNode type, ImplItemNodeImpl impl | node = resolvePathCandQualified(_, type, path, _) and typeImplEdge(type, impl, _, _, node, _) and @@ -1949,9 +2028,9 @@ private predicate pathTraitUsed(Element path, Trait trait) { trait = getResolvePathTraitUsed(path, _) } -/** Gets the item that `path` resolves to, if any. */ +/** INTERNAL: Do not use; use `resolvePath` instead. */ cached -ItemNode resolvePath(RelevantPath path) { +ItemNode resolvePathIgnoreVariableShadowing(PathExt path) { result = resolvePathCand(path) and not path = any(Path parent | exists(resolvePathCand(parent))).getQualifier() and ( @@ -1964,33 +2043,47 @@ ItemNode resolvePath(RelevantPath path) { or // if `path` is the qualifier of a resolvable `parent`, then we should // resolve `path` to something consistent with what `parent` resolves to - exists(RelevantPath parent | - resolvePathCandQualified(path, result, parent, _) = resolvePath(parent) + exists(PathExt parent | + resolvePathCandQualified(path, result, parent, _) = resolvePathIgnoreVariableShadowing(parent) ) } -private predicate isUseTreeSubPath(UseTree tree, RelevantPath path) { +/** + * Holds if `ip` resolves to some constructor or constant. + */ +// use `forceLocal` once we implement overlay support +pragma[nomagic] +predicate identPatIsResolvable(IdentPat ip) { exists(resolvePathIgnoreVariableShadowing(ip)) } + +/** Gets the item that `path` resolves to, if any. */ +pragma[nomagic] +ItemNode resolvePath(PathExt path) { + result = resolvePathIgnoreVariableShadowing(path) and + not path = any(VariableAccess va).(PathExpr).getPath() +} + +private predicate isUseTreeSubPath(UseTree tree, PathExt path) { path = tree.getPath() or - exists(RelevantPath mid | + exists(PathExt mid | isUseTreeSubPath(tree, mid) and path = mid.getQualifier() ) } pragma[nomagic] -private predicate isUseTreeSubPathUnqualified(UseTree tree, RelevantPath path, string name) { +private predicate isUseTreeSubPathUnqualified(UseTree tree, PathExt path, string name) { isUseTreeSubPath(tree, path) and not exists(path.getQualifier()) and name = path.getText() } pragma[nomagic] -private ItemNode resolveUseTreeListItem(Use use, UseTree tree, RelevantPath path, SuccessorKind kind) { +private ItemNode resolveUseTreeListItem(Use use, UseTree tree, PathExt path, SuccessorKind kind) { exists(UseOption useOpt | checkQualifiedVisibility(use, result, kind, useOpt) | exists(UseTree midTree, ItemNode mid, string name | mid = resolveUseTreeListItem(use, midTree) and - tree = midTree.getUseTreeList().getAUseTree() and + tree = getAUseTreeUseTree(midTree) and isUseTreeSubPathUnqualified(tree, path, pragma[only_bind_into](name)) and result = mid.getASuccessor(pragma[only_bind_into](name), kind, useOpt) ) @@ -2003,21 +2096,33 @@ private ItemNode resolveUseTreeListItem(Use use, UseTree tree, RelevantPath path } pragma[nomagic] -private ItemNode resolveUseTreeListItemQualifier( - Use use, UseTree tree, RelevantPath path, string name -) { +private ItemNode resolveUseTreeListItemQualifier(Use use, UseTree tree, PathExt path, string name) { result = resolveUseTreeListItem(use, tree, path.getQualifier(), _) and name = path.getText() } +private UseTree getAUseUseTree(Use use) { + exists(UseTree root | root = use.getUseTree() | + if root.hasPath() then result = root else result = getAUseTreeUseTree(root) + ) +} + pragma[nomagic] private ItemNode resolveUseTreeListItem(Use use, UseTree tree) { exists(Path path | path = tree.getPath() | - tree = use.getUseTree() and + tree = getAUseUseTree(use) and result = resolvePathCand(path) or result = resolveUseTreeListItem(use, tree, path, _) ) + or + exists(UseTree midTree | + // `use foo::{bar, *}`; midTree = `foo` and tree = `*` + result = resolveUseTreeListItem(use, midTree) and + tree = getAUseTreeUseTree(midTree) and + tree.isGlob() and + not tree.hasPath() + ) } /** Holds if `use` imports `item` as `name`. */ @@ -2063,8 +2168,11 @@ private predicate useImportEdge(Use use, string name, ItemNode item, SuccessorKi /** Holds if `ec` imports `crate` as `name`. */ pragma[nomagic] -private predicate externCrateEdge(ExternCrateItemNode ec, string name, CrateItemNode crate) { +private predicate externCrateEdge( + ExternCrateItemNode ec, string name, SuccessorKind kind, CrateItemNode crate +) { name = ec.getName() and + (if ec.isPublic() then kind.isBoth() else kind.isInternal()) and exists(SourceFile f, string s | ec.getFile() = f.getFile() and s = ec.(ExternCrate).getIdentifier().getText() @@ -2127,7 +2235,8 @@ pragma[nomagic] private predicate builtin(string name, ItemNode i) { exists(BuiltinSourceFile builtins | builtins.getFile().getBaseName() = "types.rs" and - i = builtins.getASuccessor(name) + i = builtins.getASuccessor(name) and + i.isPublic() ) } @@ -2142,7 +2251,7 @@ private module Debug { } predicate debugUnqualifiedPathLookup( - RelevantPath p, string name, Namespace ns, ItemNode ancestor, string path + PathExt p, string name, Namespace ns, ItemNode ancestor, string path ) { p = getRelevantLocatable() and exists(ItemNode encl | @@ -2152,13 +2261,28 @@ private module Debug { path = p.toStringDebug() } + ItemNode debugUnqualifiedPathLookup(PathExt p, Namespace ns, SuccessorKind kind) { + p = getRelevantLocatable() and + result = unqualifiedPathLookup(p, ns, kind) + } + predicate debugItemNode(ItemNode item) { item = getRelevantLocatable() } - ItemNode debugResolvePath(RelevantPath path) { + ItemNode debugResolvePath(PathExt path) { path = getRelevantLocatable() and result = resolvePath(path) } + ItemNode debugResolveUseTreeListItem(Use use, UseTree tree, PathExt path, SuccessorKind kind) { + use = getRelevantLocatable() and + result = resolveUseTreeListItem(use, tree, path, kind) + } + + ItemNode debugResolveUseTreeListItem(Use use, UseTree tree) { + use = getRelevantLocatable() and + result = resolveUseTreeListItem(use, tree) + } + predicate debugUseImportEdge(Use use, string name, ItemNode item, SuccessorKind kind) { use = getRelevantLocatable() and useImportEdge(use, name, item, kind) diff --git a/rust/ql/lib/codeql/rust/internal/Type.qll b/rust/ql/lib/codeql/rust/internal/Type.qll index 4ce224ec6100..9cfa173c1a97 100644 --- a/rust/ql/lib/codeql/rust/internal/Type.qll +++ b/rust/ql/lib/codeql/rust/internal/Type.qll @@ -7,6 +7,7 @@ private import codeql.rust.internal.CachedStages private import codeql.rust.elements.internal.generated.Raw private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.frameworks.stdlib.Stdlib +private import codeql.rust.frameworks.stdlib.Builtins as Builtins /** * Holds if a dyn trait type should have a type parameter associated with `n`. A @@ -31,38 +32,21 @@ private predicate dynTraitTypeParameter(Trait trait, AstNode n) { cached newtype TType = - TTuple(int arity) { - arity = - [ - any(TupleTypeRepr t).getNumberOfFields(), - any(TupleExpr e).getNumberOfFields(), - any(TuplePat p).getNumberOfFields() - ] and - Stages::TypeInferenceStage::ref() - } or - TStruct(Struct s) or + TStruct(Struct s) { Stages::TypeInferenceStage::ref() } or TEnum(Enum e) or TTrait(Trait t) or TUnion(Union u) or - TArrayType() or // todo: add size? - TRefType() or // todo: add mut? TImplTraitType(ImplTraitTypeRepr impl) or TDynTraitType(Trait t) { t = any(DynTraitTypeRepr dt).getTrait() } or - TSliceType() or TNeverType() or - TPtrType() or - TTupleTypeParameter(int arity, int i) { exists(TTuple(arity)) and i in [0 .. arity - 1] } or + TUnknownType() or TTypeParamTypeParameter(TypeParam t) or TAssociatedTypeTypeParameter(TypeAlias t) { any(TraitItemNode trait).getAnAssocItem() = t } or - TArrayTypeParameter() or TDynTraitTypeParameter(AstNode n) { dynTraitTypeParameter(_, n) } or TImplTraitTypeParameter(ImplTraitTypeRepr implTrait, TypeParam tp) { implTraitTypeParam(implTrait, _, tp) } or - TRefTypeParameter() or - TSelfTypeParameter(Trait t) or - TSliceTypeParameter() or - TPtrTypeParameter() + TSelfTypeParameter(Trait t) private predicate implTraitTypeParam(ImplTraitTypeRepr implTrait, int i, TypeParam tp) { implTrait.isInReturnPos() and @@ -105,26 +89,25 @@ abstract class Type extends TType { } /** A tuple type `(T, ...)`. */ -class TupleType extends Type, TTuple { +class TupleType extends StructType { private int arity; - TupleType() { this = TTuple(arity) } - - override TypeParameter getPositionalTypeParameter(int i) { - result = TTupleTypeParameter(arity, i) - } + TupleType() { arity = this.getStruct().(Builtins::TupleType).getArity() } /** Gets the arity of this tuple type. */ int getArity() { result = arity } override string toString() { result = "(T_" + arity + ")" } +} - override Location getLocation() { result instanceof EmptyLocation } +pragma[nomagic] +TypeParamTypeParameter getTupleTypeParameter(int arity, int i) { + result = any(TupleType t | t.getArity() = arity).getPositionalTypeParameter(i) } /** The unit type `()`. */ class UnitType extends TupleType { - UnitType() { this = TTuple(0) } + UnitType() { this.getArity() = 0 } override string toString() { result = "()" } } @@ -157,6 +140,9 @@ class EnumType extends Type, TEnum { EnumType() { this = TEnum(enum) } + /** Gets the enum that this enum type represents. */ + Enum getEnum() { result = enum } + override TypeParameter getPositionalTypeParameter(int i) { result = TTypeParamTypeParameter(enum.getGenericParamList().getTypeParam(i)) } @@ -225,20 +211,17 @@ class UnionType extends Type, TUnion { /** * An array type. * - * Array types like `[i64; 5]` are modeled as normal generic types - * with a single type argument. + * Array types like `[i64; 5]` are modeled as normal generic types. */ -class ArrayType extends Type, TArrayType { - ArrayType() { this = TArrayType() } +class ArrayType extends StructType { + ArrayType() { this.getStruct() instanceof Builtins::ArrayType } - override TypeParameter getPositionalTypeParameter(int i) { - result = TArrayTypeParameter() and - i = 0 - } - - override string toString() { result = "[]" } + override string toString() { result = "[;]" } +} - override Location getLocation() { result instanceof EmptyLocation } +pragma[nomagic] +TypeParamTypeParameter getArrayTypeParameter() { + result = any(ArrayType t).getPositionalTypeParameter(0) } /** @@ -247,17 +230,15 @@ class ArrayType extends Type, TArrayType { * Reference types like `& i64` are modeled as normal generic types * with a single type argument. */ -class RefType extends Type, TRefType { - RefType() { this = TRefType() } - - override TypeParameter getPositionalTypeParameter(int i) { - result = TRefTypeParameter() and - i = 0 - } +class RefType extends StructType { + RefType() { this.getStruct() instanceof Builtins::RefType } override string toString() { result = "&" } +} - override Location getLocation() { result instanceof EmptyLocation } +pragma[nomagic] +TypeParamTypeParameter getRefTypeParameter() { + result = any(RefType t).getPositionalTypeParameter(0) } /** @@ -339,17 +320,15 @@ class ImplTraitReturnType extends ImplTraitType { * Slice types like `[i64]` are modeled as normal generic types * with a single type argument. */ -class SliceType extends Type, TSliceType { - SliceType() { this = TSliceType() } - - override TypeParameter getPositionalTypeParameter(int i) { - result = TSliceTypeParameter() and - i = 0 - } +class SliceType extends StructType { + SliceType() { this.getStruct() instanceof Builtins::SliceType } override string toString() { result = "[]" } +} - override Location getLocation() { result instanceof EmptyLocation } +pragma[nomagic] +TypeParamTypeParameter getSliceTypeParameter() { + result = any(SliceType t).getPositionalTypeParameter(0) } class NeverType extends Type, TNeverType { @@ -360,17 +339,49 @@ class NeverType extends Type, TNeverType { override Location getLocation() { result instanceof EmptyLocation } } -class PtrType extends Type, TPtrType { - override TypeParameter getPositionalTypeParameter(int i) { - i = 0 and - result = TPtrTypeParameter() - } +class PtrType extends StructType { + PtrType() { this.getStruct() instanceof Builtins::PtrType } override string toString() { result = "*" } override Location getLocation() { result instanceof EmptyLocation } } +/** + * A special pseudo type used to indicate that the actual type may have to be + * inferred by propagating type information back into call arguments. + * + * For example, in + * + * ```rust + * let x = Default::default(); + * foo(x); + * ``` + * + * `Default::default()` is assigned this type, which allows us to infer the actual + * type from the type of `foo`'s first parameter. + * + * Unknown types are not restricted to root types, for example in a call like + * `Vec::new()` we assign this type at the type path corresponding to the type + * parameter of `Vec`. + * + * Unknown types are used to restrict when type information is allowed to flow + * into call arguments (including method call receivers), in order to avoid + * combinatorial explosions. + */ +class UnknownType extends Type, TUnknownType { + override TypeParameter getPositionalTypeParameter(int i) { none() } + + override string toString() { result = "(context typed)" } + + override Location getLocation() { result instanceof EmptyLocation } +} + +pragma[nomagic] +TypeParamTypeParameter getPtrTypeParameter() { + result = any(PtrType t).getPositionalTypeParameter(0) +} + /** A type parameter. */ abstract class TypeParameter extends Type { override TypeParameter getPositionalTypeParameter(int i) { none() } @@ -430,37 +441,6 @@ class AssociatedTypeTypeParameter extends TypeParameter, TAssociatedTypeTypePara override Location getLocation() { result = typeAlias.getLocation() } } -/** - * A tuple type parameter. For instance the `T` in `(T, U)`. - * - * Since tuples are structural their type parameters can be represented as their - * positional index. The type inference library requires that type parameters - * belong to a single type, so we also include the arity of the tuple type. - */ -class TupleTypeParameter extends TypeParameter, TTupleTypeParameter { - private int arity; - private int index; - - TupleTypeParameter() { this = TTupleTypeParameter(arity, index) } - - override string toString() { result = index.toString() + "(" + arity + ")" } - - override Location getLocation() { result instanceof EmptyLocation } - - /** Gets the index of this tuple type parameter. */ - int getIndex() { result = index } - - /** Gets the tuple type that corresponds to this tuple type parameter. */ - TupleType getTupleType() { result = TTuple(arity) } -} - -/** An implicit array type parameter. */ -class ArrayTypeParameter extends TypeParameter, TArrayTypeParameter { - override string toString() { result = "[T;...]" } - - override Location getLocation() { result instanceof EmptyLocation } -} - class DynTraitTypeParameter extends TypeParameter, TDynTraitTypeParameter { private AstNode n; @@ -508,26 +488,6 @@ class ImplTraitTypeParameter extends TypeParameter, TImplTraitTypeParameter { override Location getLocation() { result = typeParam.getLocation() } } -/** An implicit reference type parameter. */ -class RefTypeParameter extends TypeParameter, TRefTypeParameter { - override string toString() { result = "&T" } - - override Location getLocation() { result instanceof EmptyLocation } -} - -/** An implicit slice type parameter. */ -class SliceTypeParameter extends TypeParameter, TSliceTypeParameter { - override string toString() { result = "[T]" } - - override Location getLocation() { result instanceof EmptyLocation } -} - -class PtrTypeParameter extends TypeParameter, TPtrTypeParameter { - override string toString() { result = "*T" } - - override Location getLocation() { result instanceof EmptyLocation } -} - /** * The implicit `Self` type parameter of a trait, that refers to the * implementing type of the trait. diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 905175803a24..e58ae8b1a5b2 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -9,6 +9,7 @@ private import TypeMention private import typeinference.FunctionType private import typeinference.FunctionOverloading as FunctionOverloading private import typeinference.BlanketImplementation as BlanketImplementation +private import codeql.rust.internal.CachedStages private import codeql.typeinference.internal.TypeInference private import codeql.rust.frameworks.stdlib.Stdlib private import codeql.rust.frameworks.stdlib.Builtins as Builtins @@ -87,26 +88,6 @@ private module Input1 implements InputSig1 { int getTypeParameterId(TypeParameter tp) { tp = rank[result](TypeParameter tp0, int kind, int id1, int id2 | - tp0 instanceof ArrayTypeParameter and - kind = 0 and - id1 = 0 and - id2 = 0 - or - tp0 instanceof RefTypeParameter and - kind = 0 and - id1 = 0 and - id2 = 1 - or - tp0 instanceof SliceTypeParameter and - kind = 0 and - id1 = 0 and - id2 = 2 - or - tp0 instanceof PtrTypeParameter and - kind = 0 and - id1 = 0 and - id2 = 3 - or kind = 1 and id1 = 0 and id2 = @@ -127,10 +108,6 @@ private module Input1 implements InputSig1 { node = tp0.(SelfTypeParameter).getTrait() or node = tp0.(ImplTraitTypeTypeParameter).getImplTraitTypeRepr() ) - or - kind = 4 and - id1 = tp0.(TupleTypeParameter).getTupleType().getArity() and - id2 = tp0.(TupleTypeParameter).getIndex() | tp0 order by kind, id1, id2 ) @@ -179,48 +156,52 @@ private module Input2 implements InputSig2 { * inference module for more information. */ predicate conditionSatisfiesConstraint( - TypeAbstraction abs, TypeMention condition, TypeMention constraint + TypeAbstraction abs, TypeMention condition, TypeMention constraint, boolean transitive ) { // `impl` blocks implementing traits + transitive = false and exists(Impl impl | abs = impl and condition = impl.getSelfTy() and constraint = impl.getTrait() ) or - // supertraits - exists(Trait trait | - abs = trait and - condition = trait and - constraint = trait.getATypeBound().getTypeRepr() - ) - or - // trait bounds on type parameters - exists(TypeParam param | - abs = param.getATypeBound() and - condition = param and - constraint = abs.(TypeBound).getTypeRepr() - ) - or - // the implicit `Self` type parameter satisfies the trait - exists(SelfTypeParameterMention self | - abs = self and - condition = self and - constraint = self.getTrait() - ) - or - exists(ImplTraitTypeRepr impl | - abs = impl and - condition = impl and - constraint = impl.getTypeBoundList().getABound().getTypeRepr() - ) - or - // a `dyn Trait` type implements `Trait`. See the comment on - // `DynTypeBoundListMention` for further details. - exists(DynTraitTypeRepr object | - abs = object and - condition = object.getTypeBoundList() and - constraint = object.getTrait() + transitive = true and + ( + // supertraits + exists(Trait trait | + abs = trait and + condition = trait and + constraint = trait.getATypeBound().getTypeRepr() + ) + or + // trait bounds on type parameters + exists(TypeParam param | + abs = param.getATypeBound() and + condition = param and + constraint = abs.(TypeBound).getTypeRepr() + ) + or + // the implicit `Self` type parameter satisfies the trait + exists(SelfTypeParameterMention self | + abs = self and + condition = self and + constraint = self.getTrait() + ) + or + exists(ImplTraitTypeRepr impl | + abs = impl and + condition = impl and + constraint = impl.getTypeBoundList().getABound().getTypeRepr() + ) + or + // a `dyn Trait` type implements `Trait`. See the comment on + // `DynTypeBoundListMention` for further details. + exists(DynTraitTypeRepr object | + abs = object and + condition = object.getTypeBoundList() and + constraint = object.getTrait() + ) ) } } @@ -260,11 +241,22 @@ private class NonMethodFunction extends Function { } pragma[nomagic] -private TypeMention getCallExprTypeArgument(CallExpr ce, TypeArgumentPosition apos) { - exists(Path p, int i | +private TypeMention getCallExprTypeMentionArgument(CallExpr ce, TypeArgumentPosition apos) { + exists(Path p, int i | p = CallExprImpl::getFunctionPath(ce) | + apos.asTypeParam() = resolvePath(p).getTypeParam(pragma[only_bind_into](i)) and + result = getPathTypeArgument(p, pragma[only_bind_into](i)) + ) +} + +pragma[nomagic] +private Type getCallExprTypeArgument(CallExpr ce, TypeArgumentPosition apos, TypePath path) { + result = getCallExprTypeMentionArgument(ce, apos).resolveTypeAt(path) + or + // Handle constructions that use `Self(...)` syntax + exists(Path p, TypePath path0 | p = CallExprImpl::getFunctionPath(ce) and - result = p.getSegment().getGenericArgList().getTypeArg(pragma[only_bind_into](i)) and - apos.asTypeParam() = resolvePath(p).getTypeParam(pragma[only_bind_into](i)) + result = p.(TypeMention).resolveTypeAt(path0) and + path0.isCons(TTypeParamTypeParameter(apos.asTypeParam()), path) ) } @@ -356,8 +348,7 @@ module CertainTypeInference { // For type parameters of the function we must resolve their // instantiation from the path. For instance, for `fn bar(a: A) -> A` // and the path `bar`, we must resolve `A` to `i64`. - result = - getCallExprTypeArgument(ce, TTypeParamTypeArgumentPosition(tp)).resolveTypeAt(suffix) + result = getCallExprTypeArgument(ce, TTypeParamTypeArgumentPosition(tp), suffix) ) or not ty instanceof TypeParameter and @@ -407,7 +398,9 @@ module CertainTypeInference { any(IdentPat ip | n2 = ip.getName() and prefix1.isEmpty() and - if ip.isRef() then prefix2 = TypePath::singleton(TRefTypeParameter()) else prefix2.isEmpty() + if ip.isRef() + then prefix2 = TypePath::singleton(getRefTypeParameter()) + else prefix2.isEmpty() ) } @@ -427,9 +420,10 @@ module CertainTypeInference { * Holds if `n` has complete and certain type information and if `n` has the * resulting type at `path`. */ - pragma[nomagic] + cached Type inferCertainType(AstNode n, TypePath path) { - result = inferAnnotatedType(n, path) + result = inferAnnotatedType(n, path) and + Stages::TypeInferenceStage::ref() or result = inferCertainCallExprType(n, path) or @@ -617,11 +611,11 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat n1 = n2.(RefPat).getPat() ) and prefix1.isEmpty() and - prefix2 = TypePath::singleton(TRefTypeParameter()) + prefix2 = TypePath::singleton(getRefTypeParameter()) or exists(int i, int arity | prefix1.isEmpty() and - prefix2 = TypePath::singleton(TTupleTypeParameter(arity, i)) + prefix2 = TypePath::singleton(getTupleTypeParameter(arity, i)) | arity = n2.(TupleExpr).getNumberOfFields() and n1 = n2.(TupleExpr).getField(i) @@ -635,7 +629,7 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat n2 = be.getStmtList().getTailExpr() and if be.isAsync() then - prefix1 = TypePath::singleton(getFutureOutputTypeParameter()) and + prefix1 = TypePath::singleton(getDynFutureOutputTypeParameter()) and prefix2.isEmpty() else ( prefix1.isEmpty() and @@ -649,12 +643,12 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat ale.getAnExpr() = n2 and ale.getNumberOfExprs() = 1 ) and - prefix1 = TypePath::singleton(TArrayTypeParameter()) and + prefix1 = TypePath::singleton(getArrayTypeParameter()) and prefix2.isEmpty() or // an array repeat expression (`[1; 3]`) has the type of the repeat operand n1.(ArrayRepeatExpr).getRepeatOperand() = n2 and - prefix1 = TypePath::singleton(TArrayTypeParameter()) and + prefix1 = TypePath::singleton(getArrayTypeParameter()) and prefix2.isEmpty() or exists(Struct s | @@ -703,7 +697,7 @@ private predicate lubCoercion(AstNode parent, AstNode child, TypePath prefix) { child = ale.getAnExpr() and ale.getNumberOfExprs() > 1 ) and - prefix = TypePath::singleton(TArrayTypeParameter()) + prefix = TypePath::singleton(getArrayTypeParameter()) or bodyReturns(parent, child) and strictcount(Expr e | bodyReturns(parent, e)) > 1 and @@ -748,6 +742,8 @@ private Type inferTypeEquality(AstNode n, TypePath path) { /** * A matching configuration for resolving types of struct expressions * like `Foo { bar = baz }`. + * + * This also includes nullary struct expressions like `None`. */ private module StructExprMatchingInput implements MatchingInputSig { private newtype TPos = @@ -791,7 +787,7 @@ private module StructExprMatchingInput implements MatchingInputSig { } private class StructDecl extends Declaration, Struct { - StructDecl() { this.isStruct() } + StructDecl() { this.isStruct() or this.isUnit() } override TypeParam getATypeParam() { result = this.getGenericParamList().getATypeParam() } @@ -808,7 +804,7 @@ private module StructExprMatchingInput implements MatchingInputSig { } private class StructVariantDecl extends Declaration, Variant { - StructVariantDecl() { this.isStruct() } + StructVariantDecl() { this.isStruct() or this.isUnit() } Enum getEnum() { result.getVariantList().getAVariant() = this } @@ -830,26 +826,86 @@ private module StructExprMatchingInput implements MatchingInputSig { class AccessPosition = DeclarationPosition; - class Access extends StructExpr { + abstract class Access extends AstNode { + pragma[nomagic] + abstract AstNode getNodeAt(AccessPosition apos); + + pragma[nomagic] + Type getInferredType(AccessPosition apos, TypePath path) { + result = inferType(this.getNodeAt(apos), path) + } + + pragma[nomagic] + abstract Path getStructPath(); + + pragma[nomagic] + Declaration getTarget() { result = resolvePath(this.getStructPath()) } + + pragma[nomagic] Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { + // Handle constructions that use `Self {...}` syntax + exists(TypeMention tm, TypePath path0 | + tm = this.getStructPath() and + result = tm.resolveTypeAt(path0) and + path0.isCons(TTypeParamTypeParameter(apos.asTypeParam()), path) + ) + } + + /** + * Holds if the return type of this struct expression at `path` may have to + * be inferred from the context. + */ + pragma[nomagic] + predicate hasUnknownTypeAt(DeclarationPosition pos, TypePath path) { + exists(Declaration d, TypeParameter tp | + d = this.getTarget() and + pos.isStructPos() and + tp = d.getDeclaredType(pos, path) and + not exists(DeclarationPosition fieldPos | + not fieldPos.isStructPos() and + tp = d.getDeclaredType(fieldPos, _) + ) and + // check that no explicit type arguments have been supplied for `tp` + not exists(TypeArgumentPosition tapos | + exists(this.getTypeArgument(tapos, _)) and + TTypeParamTypeParameter(tapos.asTypeParam()) = tp + ) + ) + } + } + + private class StructExprAccess extends Access, StructExpr { + override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { + result = super.getTypeArgument(apos, path) + or exists(TypePath suffix | suffix.isCons(TTypeParamTypeParameter(apos.asTypeParam()), path) and result = CertainTypeInference::inferCertainType(this, suffix) ) } - AstNode getNodeAt(AccessPosition apos) { + override AstNode getNodeAt(AccessPosition apos) { result = this.getFieldExpr(apos.asFieldPos()).getExpr() or result = this and apos.isStructPos() } - Type getInferredType(AccessPosition apos, TypePath path) { - result = inferType(this.getNodeAt(apos), path) + override Path getStructPath() { result = this.getPath() } + } + + /** + * A potential nullary struct/variant construction such as `None`. + */ + private class PathExprAccess extends Access, PathExpr { + PathExprAccess() { not exists(CallExpr ce | this = ce.getFunction()) } + + override AstNode getNodeAt(AccessPosition apos) { + result = this and + apos.isStructPos() } - Declaration getTarget() { result = resolvePath(this.getPath()) } + override Path getStructPath() { result = this.getPath() } } predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { @@ -859,34 +915,30 @@ private module StructExprMatchingInput implements MatchingInputSig { private module StructExprMatching = Matching; -/** - * Gets the type of `n` at `path`, where `n` is either a struct expression or - * a field expression of a struct expression. - */ pragma[nomagic] -private Type inferStructExprType(AstNode n, TypePath path) { +private Type inferStructExprType0(AstNode n, boolean isReturn, TypePath path) { exists(StructExprMatchingInput::Access a, StructExprMatchingInput::AccessPosition apos | n = a.getNodeAt(apos) and + if apos.isStructPos() then isReturn = true else isReturn = false + | result = StructExprMatching::inferAccessType(a, apos, path) + or + a.hasUnknownTypeAt(apos, path) and + result = TUnknownType() ) } -pragma[nomagic] -private Type inferTupleRootType(AstNode n) { - // `typeEquality` handles the non-root cases - result = TTuple([n.(TupleExpr).getNumberOfFields(), n.(TuplePat).getTupleArity()]) -} +/** + * Gets the type of `n` at `path`, where `n` is either a struct expression or + * a field expression of a struct expression. + */ +private predicate inferStructExprType = + ContextTyping::CheckContextTyping::check/2; pragma[nomagic] -private Type inferPathExprType(PathExpr pe, TypePath path) { - // nullary struct/variant constructors - not exists(CallExpr ce | pe = ce.getFunction()) and - path.isEmpty() and - exists(ItemNode i | i = resolvePath(pe.getPath()) | - result = TEnum(i.(Variant).getEnum()) - or - result = TStruct(i) - ) +private TupleType inferTupleRootType(AstNode n) { + // `typeEquality` handles the non-root cases + result.getArity() = [n.(TupleExpr).getNumberOfFields(), n.(TuplePat).getTupleArity()] } pragma[nomagic] @@ -909,6 +961,114 @@ private Type getCallExprTypeQualifier(CallExpr ce, TypePath path) { ) } +/** + * Provides functionality related to context-based typing of calls. + */ +private module ContextTyping { + /** + * Holds if the return type of the function `f` inside `i` at `path` is type + * parameter `tp`, and `tp` does not appear in the type of any parameter of + * `f`. + * + * In this case, the context in which `f` is called may be needed to infer + * the instantiation of `tp`. + * + * This covers functions like `Default::default` and `Vec::new`. + */ + pragma[nomagic] + private predicate assocFunctionReturnContextTypedAt( + ImplOrTraitItemNode i, Function f, FunctionPosition pos, TypePath path, TypeParameter tp + ) { + pos.isReturn() and + tp = getAssocFunctionTypeAt(f, i, pos, path) and + not exists(FunctionPosition nonResPos | not nonResPos.isReturn() | + tp = getAssocFunctionTypeAt(f, i, nonResPos, _) + or + // `Self` types in traits implicitly mention all type parameters of the trait + getAssocFunctionTypeAt(f, i, nonResPos, _) = TSelfTypeParameter(i) + ) + } + + /** + * A call where the type of the result may have to be inferred from the + * context in which the call appears, for example a call like + * `Default::default()`. + */ + abstract class ContextTypedCallCand extends AstNode { + abstract Type getTypeArgument(TypeArgumentPosition apos, TypePath path); + + private predicate hasTypeArgument(TypeArgumentPosition apos) { + exists(this.getTypeArgument(apos, _)) + } + + /** + * Holds if this call resolves to `target` inside `i`, and the return type + * at `pos` and `path` may have to be inferred from the context. + */ + bindingset[this, i, target] + predicate hasUnknownTypeAt( + ImplOrTraitItemNode i, Function target, FunctionPosition pos, TypePath path + ) { + exists(TypeParameter tp | + assocFunctionReturnContextTypedAt(i, target, pos, path, tp) and + // check that no explicit type arguments have been supplied for `tp` + not exists(TypeArgumentPosition tapos | this.hasTypeArgument(tapos) | + exists(int j | + j = tapos.asMethodTypeArgumentPosition() and + tp = TTypeParamTypeParameter(target.getGenericParamList().getTypeParam(j)) + ) + or + TTypeParamTypeParameter(tapos.asTypeParam()) = tp + ) and + not ( + tp instanceof TSelfTypeParameter and + exists(getCallExprTypeQualifier(this, _)) + ) + ) + } + } + + pragma[nomagic] + private predicate hasUnknownTypeAt(AstNode n, TypePath path) { + inferType(n, path) = TUnknownType() + } + + pragma[nomagic] + private predicate hasUnknownType(AstNode n) { hasUnknownTypeAt(n, _) } + + signature Type inferCallTypeSig(AstNode n, boolean isReturn, TypePath path); + + /** + * Given a predicate `inferCallType` for inferring the type of a call at a given + * position, this module exposes the predicate `check`, which wraps the input + * predicate and checks that types are only propagated into arguments when they + * are context-typed. + */ + module CheckContextTyping { + pragma[nomagic] + private Type inferCallTypeFromContextCand(AstNode n, TypePath path, TypePath prefix) { + result = inferCallType(n, false, path) and + hasUnknownType(n) and + prefix = path + or + exists(TypePath mid | + result = inferCallTypeFromContextCand(n, path, mid) and + mid.isSnoc(prefix, _) + ) + } + + pragma[nomagic] + Type check(AstNode n, TypePath path) { + result = inferCallType(n, true, path) + or + exists(TypePath prefix | + result = inferCallTypeFromContextCand(n, path, prefix) and + hasUnknownTypeAt(n, prefix) + ) + } + } +} + /** * Holds if function `f` with the name `name` and the arity `arity` exists in * `i`, and the type at position `pos` is `t`. @@ -1011,7 +1171,7 @@ private module MethodResolution { * * `strippedTypePath` points to the type `strippedType` inside `selfType`, * which is the (possibly complex-stripped) root type of `selfType`. For example, - * if `m` has a `&self` parameter, then `strippedTypePath` is `TRefTypeParameter()` + * if `m` has a `&self` parameter, then `strippedTypePath` is `getRefTypeParameter()` * and `strippedType` is the type inside the reference. */ pragma[nomagic] @@ -1221,7 +1381,7 @@ private module MethodResolution { this.hasNoCompatibleTargetBorrow(derefChain0) and t0 = this.getACandidateReceiverTypeAtNoBorrow(derefChain0, path0) | - path0.isCons(TRefTypeParameter(), path) and + path0.isCons(getRefTypeParameter(), path) and result = t0 and derefChain = derefChain0 + ".ref" or @@ -1403,11 +1563,11 @@ private module MethodResolution { borrow = true and ( path.isEmpty() and - result = TRefType() + result instanceof RefType or exists(TypePath suffix | result = this.getACandidateReceiverTypeAtNoBorrow(derefChain, suffix) and - path = TypePath::cons(TRefTypeParameter(), suffix) + path = TypePath::cons(getRefTypeParameter(), suffix) ) ) } @@ -1418,20 +1578,20 @@ private module MethodResolution { * `derefChain` and the Boolean `borrow`. */ pragma[nomagic] - Method resolveCallTarget(string derefChain, boolean borrow) { + Method resolveCallTarget(ImplOrTraitItemNode i, string derefChain, boolean borrow) { exists(MethodCallCand mcc | mcc = MkMethodCallCand(this, derefChain, borrow) and - result = mcc.resolveCallTarget() + result = mcc.resolveCallTarget(i) ) } predicate receiverHasImplicitDeref(AstNode receiver) { - exists(this.resolveCallTarget(".ref", false)) and + exists(this.resolveCallTarget(_, ".ref", false)) and receiver = this.getArgument(CallImpl::TSelfArgumentPosition()) } predicate receiverHasImplicitBorrow(AstNode receiver) { - exists(this.resolveCallTarget("", true)) and + exists(this.resolveCallTarget(_, "", true)) and receiver = this.getArgument(CallImpl::TSelfArgumentPosition()) } } @@ -1526,12 +1686,12 @@ private module MethodResolution { override Type getArgumentTypeAt(ArgumentPosition pos, TypePath path) { if this.(Call).implicitBorrowAt(pos, true) then - result = TRefType() and + result instanceof RefType and path.isEmpty() or exists(TypePath path0 | result = inferType(this.getArgument(pos), path0) and - path = TypePath::cons(TRefTypeParameter(), path0) + path = TypePath::cons(getRefTypeParameter(), path0) ) else result = inferType(this.getArgument(pos), path) } @@ -1569,7 +1729,8 @@ private module MethodResolution { Type getTypeAt(TypePath path) { result = mc_.getACandidateReceiverTypeAtSubstituteLookupTraits(derefChain, borrow, path) and - not result = TNeverType() + not result = TNeverType() and + not result = TUnknownType() } pragma[nomagic] @@ -1642,13 +1803,11 @@ private module MethodResolution { /** Gets a method that matches this method call. */ pragma[nomagic] - Method resolveCallTarget() { - exists(ImplOrTraitItemNode i | - result = this.resolveCallTargetCand(i) and - not FunctionOverloading::functionResolutionDependsOnArgument(i, _, _, _, _) - ) + Method resolveCallTarget(ImplOrTraitItemNode i) { + result = this.resolveCallTargetCand(i) and + not FunctionOverloading::functionResolutionDependsOnArgument(i, _, _, _, _) or - MethodArgsAreInstantiationsOf::argsAreInstantiationsOf(this, _, result) + MethodArgsAreInstantiationsOf::argsAreInstantiationsOf(this, i, result) } predicate hasNoBorrow() { borrow = false } @@ -1675,7 +1834,7 @@ private module MethodResolution { | mcc.hasNoBorrow() or - blanketPath.getHead() = TRefTypeParameter() + blanketPath.getHead() = getRefTypeParameter() ) } } @@ -1894,7 +2053,7 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi or exists(TypePath suffix | result = this.resolveRetType(suffix) and - path = TypePath::cons(getFutureOutputTypeParameter(), suffix) + path = TypePath::cons(getDynFutureOutputTypeParameter(), suffix) ) else result = this.resolveRetType(path) } @@ -1918,20 +2077,22 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi final private class MethodCallFinal = MethodResolution::MethodCall; - class Access extends MethodCallFinal { + class Access extends MethodCallFinal, ContextTyping::ContextTypedCallCand { Access() { // handled in the `OperationMatchingInput` module not this instanceof Operation } pragma[nomagic] - Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - exists(TypeMention arg | result = arg.resolveTypeAt(path) | - arg = - this.(MethodCallExpr).getGenericArgList().getTypeArg(apos.asMethodTypeArgumentPosition()) - or - arg = getCallExprTypeArgument(this, apos) - ) + override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { + result = + this.(MethodCallExpr) + .getGenericArgList() + .getTypeArg(apos.asMethodTypeArgumentPosition()) + .(TypeMention) + .resolveTypeAt(path) + or + result = getCallExprTypeArgument(this, apos, path) } pragma[nomagic] @@ -1952,11 +2113,11 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi this instanceof IndexExpr then path.isEmpty() and - result = TRefType() + result instanceof RefType or exists(TypePath suffix | result = inferType(this.getNodeAt(apos), suffix) and - path = TypePath::cons(TRefTypeParameter(), suffix) + path = TypePath::cons(getRefTypeParameter(), suffix) ) else ( not apos.isSelf() and @@ -1971,10 +2132,23 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi result = this.getInferredNonSelfType(apos, path) } - Declaration getTarget(string derefChainBorrow) { + Declaration getTarget(ImplOrTraitItemNode i, string derefChainBorrow) { exists(string derefChain, boolean borrow | derefChainBorrow = encodeDerefChainBorrow(derefChain, borrow) and - result = this.resolveCallTarget(derefChain, borrow) // mutual recursion; resolving method calls requires resolving types and vice versa + result = this.resolveCallTarget(i, derefChain, borrow) // mutual recursion; resolving method calls requires resolving types and vice versa + ) + } + + Declaration getTarget(string derefChainBorrow) { result = this.getTarget(_, derefChainBorrow) } + + /** + * Holds if the return type of this call at `path` may have to be inferred + * from the context. + */ + pragma[nomagic] + predicate hasUnknownTypeAt(string derefChainBorrow, FunctionPosition pos, TypePath path) { + exists(ImplOrTraitItemNode i | + this.hasUnknownTypeAt(i, this.getTarget(i, derefChainBorrow), pos, path) ) } } @@ -1989,29 +2163,31 @@ private Type inferMethodCallType0( ) { exists(TypePath path0 | n = a.getNodeAt(apos) and - result = MethodCallMatching::inferAccessType(a, derefChainBorrow, apos, path0) + ( + result = MethodCallMatching::inferAccessType(a, derefChainBorrow, apos, path0) + or + a.hasUnknownTypeAt(derefChainBorrow, apos, path0) and + result = TUnknownType() + ) | if // index expression `x[i]` desugars to `*x.index(i)`, so we must account for // the implicit deref apos.isReturn() and a instanceof IndexExpr - then path0.isCons(TRefTypeParameter(), path) + then path0.isCons(getRefTypeParameter(), path) else path = path0 ) } -/** - * Gets the type of `n` at `path`, where `n` is either a method call or an - * argument/receiver of a method call. - */ pragma[nomagic] -private Type inferMethodCallType(AstNode n, TypePath path) { +private Type inferMethodCallType1(AstNode n, boolean isReturn, TypePath path) { exists( MethodCallMatchingInput::Access a, MethodCallMatchingInput::AccessPosition apos, string derefChainBorrow, TypePath path0 | - result = inferMethodCallType0(a, apos, n, derefChainBorrow, path0) + result = inferMethodCallType0(a, apos, n, derefChainBorrow, path0) and + if apos.isReturn() then isReturn = true else isReturn = false | ( not apos.isSelf() @@ -2023,15 +2199,22 @@ private Type inferMethodCallType(AstNode n, TypePath path) { // adjust for implicit deref apos.isSelf() and derefChainBorrow = ".ref;" and - path = TypePath::cons(TRefTypeParameter(), path0) + path = TypePath::cons(getRefTypeParameter(), path0) or // adjust for implicit borrow apos.isSelf() and derefChainBorrow = ";borrow" and - path0.isCons(TRefTypeParameter(), path) + path0.isCons(getRefTypeParameter(), path) ) } +/** + * Gets the type of `n` at `path`, where `n` is either a method call or an + * argument/receiver of a method call. + */ +private predicate inferMethodCallType = + ContextTyping::CheckContextTyping::check/2; + /** * Provides logic for resolving calls to non-method items. This includes * "calls" to tuple variants and tuple structs. @@ -2178,26 +2361,39 @@ private module NonMethodResolution { trait = this.(Call).getTrait() } + /** + * Gets the target of this call, which can be resolved using only path resolution. + */ pragma[nomagic] - private NonMethodFunction resolveCallTargetRec() { - result = this.resolveCallTargetBlanketCand(_) and + ItemNode resolveCallTargetViaPathResolution() { + not this.(Call).hasTrait() and + result = this.getPathResolutionResolved() and not FunctionOverloading::functionResolutionDependsOnArgument(_, result, _, _, _) - or - NonMethodArgsAreInstantiationsOf::argsAreInstantiationsOf(this, _, result) } + /** + * Gets the target of this call, which can be resolved using type inference. + */ pragma[nomagic] - ItemNode resolveCallTargetNonRec() { - not this.(Call).hasTrait() and - result = this.getPathResolutionResolved() and + NonMethodFunction resolveCallTargetViaTypeInference(ImplOrTraitItemNode i) { + result = this.resolveCallTargetBlanketCand(i) and not FunctionOverloading::functionResolutionDependsOnArgument(_, result, _, _, _) + or + NonMethodArgsAreInstantiationsOf::argsAreInstantiationsOf(this, i, result) } pragma[inline] ItemNode resolveCallTarget() { - result = this.resolveCallTargetNonRec() + result = this.resolveCallTargetViaPathResolution() or - result = this.resolveCallTargetRec() + result = this.resolveCallTargetViaTypeInference(_) + } + + pragma[nomagic] + NonMethodFunction resolveTraitFunctionViaPathResolution(TraitItemNode trait) { + this.(Call).hasTrait() and + result = this.getPathResolutionResolved() and + result = trait.getASuccessor(_) } } @@ -2316,6 +2512,9 @@ private module NonMethodResolution { /** * A matching configuration for resolving types of calls like * `foo::bar(baz)` where the target is not a method. + * + * This also includes "calls" to tuple variants and tuple structs such + * as `Result::Ok(42)`. */ private module NonMethodCallMatchingInput implements MatchingInputSig { import FunctionPositionMatchingInput @@ -2433,10 +2632,10 @@ private module NonMethodCallMatchingInput implements MatchingInputSig { } } - class Access extends NonMethodResolution::NonMethodCall { + class Access extends NonMethodResolution::NonMethodCall, ContextTyping::ContextTypedCallCand { pragma[nomagic] - Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - result = getCallExprTypeArgument(this, apos).resolveTypeAt(path) + override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { + result = getCallExprTypeArgument(this, apos, path) } pragma[nomagic] @@ -2450,19 +2649,56 @@ private module NonMethodCallMatchingInput implements MatchingInputSig { Declaration getTarget() { result = this.resolveCallTarget() // potential mutual recursion; resolving some associated function calls requires resolving types } + + /** + * Holds if the return type of this call at `path` may have to be inferred + * from the context. + */ + pragma[nomagic] + predicate hasUnknownTypeAt(FunctionPosition pos, TypePath path) { + exists(ImplOrTraitItemNode i | + this.hasUnknownTypeAt(i, + [ + this.resolveCallTargetViaPathResolution().(NonMethodFunction), + this.resolveCallTargetViaTypeInference(i), + this.resolveTraitFunctionViaPathResolution(i) + ], pos, path) + ) + or + // Tuple declarations, such as `Result::Ok(...)`, may also be context typed + exists(TupleDeclaration td, TypeParameter tp | + td = this.resolveCallTargetViaPathResolution() and + pos.isReturn() and + tp = td.getReturnType(path) and + not tp = td.getParameterType(_, _) and + // check that no explicit type arguments have been supplied for `tp` + not exists(TypeArgumentPosition tapos | + exists(this.getTypeArgument(tapos, _)) and + TTypeParamTypeParameter(tapos.asTypeParam()) = tp + ) + ) + } } } private module NonMethodCallMatching = Matching; pragma[nomagic] -private Type inferNonMethodCallType(AstNode n, TypePath path) { +private Type inferNonMethodCallType0(AstNode n, boolean isReturn, TypePath path) { exists(NonMethodCallMatchingInput::Access a, NonMethodCallMatchingInput::AccessPosition apos | n = a.getNodeAt(apos) and + if apos.isReturn() then isReturn = true else isReturn = false + | result = NonMethodCallMatching::inferAccessType(a, apos, path) + or + a.hasUnknownTypeAt(apos, path) and + result = TUnknownType() ) } +private predicate inferNonMethodCallType = + ContextTyping::CheckContextTyping::check/2; + /** * A matching configuration for resolving types of operations like `a + b`. */ @@ -2495,7 +2731,7 @@ private module OperationMatchingInput implements MatchingInputSig { private Type getParameterType(DeclarationPosition dpos, TypePath path) { exists(TypePath path0 | result = super.getParameterType(dpos, path0) and - if this.borrowsAt(dpos) then path0.isCons(TRefTypeParameter(), path) else path0 = path + if this.borrowsAt(dpos) then path0.isCons(getRefTypeParameter(), path) else path0 = path ) } @@ -2506,7 +2742,7 @@ private module OperationMatchingInput implements MatchingInputSig { private Type getReturnType(TypePath path) { exists(TypePath path0 | result = super.getReturnType(path0) and - if this.derefsReturn() then path0.isCons(TRefTypeParameter(), path) else path0 = path + if this.derefsReturn() then path0.isCons(getRefTypeParameter(), path) else path0 = path ) } @@ -2527,7 +2763,7 @@ private module OperationMatchingInput implements MatchingInputSig { } Declaration getTarget() { - result = this.resolveCallTarget(_, _) // mutual recursion + result = this.resolveCallTarget(_, _, _) // mutual recursion } } } @@ -2535,13 +2771,17 @@ private module OperationMatchingInput implements MatchingInputSig { private module OperationMatching = Matching; pragma[nomagic] -private Type inferOperationType(AstNode n, TypePath path) { +private Type inferOperationType0(AstNode n, boolean isReturn, TypePath path) { exists(OperationMatchingInput::Access a, OperationMatchingInput::AccessPosition apos | n = a.getNodeAt(apos) and - result = OperationMatching::inferAccessType(a, apos, path) + result = OperationMatching::inferAccessType(a, apos, path) and + if apos.isReturn() then isReturn = true else isReturn = false ) } +private predicate inferOperationType = + ContextTyping::CheckContextTyping::check/2; + pragma[nomagic] private Type getFieldExprLookupType(FieldExpr fe, string name) { exists(TypePath path | @@ -2559,14 +2799,6 @@ private Type getTupleFieldExprLookupType(FieldExpr fe, int pos) { ) } -pragma[nomagic] -private TupleTypeParameter resolveTupleTypeFieldExpr(FieldExpr fe) { - exists(int arity, int i | - TTuple(arity) = getTupleFieldExprLookupType(fe, i) and - result = TTupleTypeParameter(arity, i) - ) -} - /** * A matching configuration for resolving types of field expressions like `x.field`. */ @@ -2591,8 +2823,7 @@ private module FieldExprMatchingInput implements MatchingInputSig { private newtype TDeclaration = TStructFieldDecl(StructField sf) or - TTupleFieldDecl(TupleField tf) or - TTupleTypeParameterDecl(TupleTypeParameter ttp) + TTupleFieldDecl(TupleField tf) abstract class Declaration extends TDeclaration { TypeParameter getTypeParameter(TypeParameterPosition ppos) { none() } @@ -2649,31 +2880,6 @@ private module FieldExprMatchingInput implements MatchingInputSig { override TypeRepr getTypeRepr() { result = tf.getTypeRepr() } } - private class TupleTypeParameterDecl extends Declaration, TTupleTypeParameterDecl { - private TupleTypeParameter ttp; - - TupleTypeParameterDecl() { this = TTupleTypeParameterDecl(ttp) } - - override Type getDeclaredType(DeclarationPosition dpos, TypePath path) { - dpos.isSelf() and - ( - result = ttp.getTupleType() and - path.isEmpty() - or - result = ttp and - path = TypePath::singleton(ttp) - ) - or - dpos.isField() and - result = ttp and - path.isEmpty() - } - - override string toString() { result = ttp.toString() } - - override Location getLocation() { result = ttp.getLocation() } - } - class AccessPosition = DeclarationPosition; class Access extends FieldExpr { @@ -2692,10 +2898,10 @@ private module FieldExprMatchingInput implements MatchingInputSig { if apos.isSelf() then // adjust for implicit deref - path0.isCons(TRefTypeParameter(), path) + path0.isCons(getRefTypeParameter(), path) or - not path0.isCons(TRefTypeParameter(), _) and - not (result = TRefType() and path0.isEmpty()) and + not path0.isCons(getRefTypeParameter(), _) and + not (result instanceof RefType and path0.isEmpty()) and path = path0 else path = path0 ) @@ -2706,8 +2912,7 @@ private module FieldExprMatchingInput implements MatchingInputSig { result = [ TStructFieldDecl(resolveStructFieldExpr(this)).(TDeclaration), - TTupleFieldDecl(resolveTupleFieldExpr(this)), - TTupleTypeParameterDecl(resolveTupleTypeFieldExpr(this)) + TTupleFieldDecl(resolveTupleFieldExpr(this)) ] } } @@ -2734,12 +2939,12 @@ private Type inferFieldExprType(AstNode n, TypePath path) { if apos.isSelf() then exists(Type receiverType | receiverType = inferType(n) | - if receiverType = TRefType() + if receiverType instanceof RefType then // adjust for implicit deref - not path0.isCons(TRefTypeParameter(), _) and - not (path0.isEmpty() and result = TRefType()) and - path = TypePath::cons(TRefTypeParameter(), path0) + not path0.isCons(getRefTypeParameter(), _) and + not (path0.isEmpty() and result instanceof RefType) and + path = TypePath::cons(getRefTypeParameter(), path0) else path = path0 ) else path = path0 @@ -2756,7 +2961,7 @@ private Type inferRefNodeType(AstNode ref) { or ref instanceof RefPat ) and - result = TRefType() + result instanceof RefType } pragma[nomagic] @@ -2810,22 +3015,27 @@ private Type inferLiteralType(LiteralExpr le, TypePath path, boolean certain) { or le instanceof StringLiteralExpr and ( - path.isEmpty() and result = TRefType() + path.isEmpty() and result instanceof RefType or - path = TypePath::singleton(TRefTypeParameter()) and + path = TypePath::singleton(getRefTypeParameter()) and result = getStrStruct() ) and certain = true } pragma[nomagic] -private TraitType getFutureTraitType() { result.getTrait() instanceof FutureTrait } +private DynTraitType getFutureTraitType() { result.getTrait() instanceof FutureTrait } pragma[nomagic] private AssociatedTypeTypeParameter getFutureOutputTypeParameter() { result.getTypeAlias() = any(FutureTrait ft).getOutputType() } +pragma[nomagic] +private DynTraitTypeParameter getDynFutureOutputTypeParameter() { + result = TDynTraitTypeParameter(any(FutureTrait ft).getOutputType()) +} + pragma[nomagic] predicate isUnitBlockExpr(BlockExpr be) { not be.getStmtList().hasTailExpr() and @@ -2842,7 +3052,7 @@ private Type inferBlockExprType(BlockExpr be, TypePath path) { result = getFutureTraitType() or isUnitBlockExpr(be) and - path = TypePath::singleton(getFutureOutputTypeParameter()) and + path = TypePath::singleton(getDynFutureOutputTypeParameter()) and result instanceof UnitType ) else ( isUnitBlockExpr(be) and @@ -2867,10 +3077,13 @@ final private class AwaitTarget extends Expr { } private module AwaitSatisfiesConstraintInput implements SatisfiesConstraintInputSig { + pragma[nomagic] predicate relevantConstraint(AwaitTarget term, Type constraint) { exists(term) and constraint.(TraitType).getTrait() instanceof FutureTrait } + + predicate useUniversalConditions() { none() } } pragma[nomagic] @@ -2886,7 +3099,7 @@ private Type inferAwaitExprType(AstNode n, TypePath path) { * Gets the root type of the array expression `ae`. */ pragma[nomagic] -private Type inferArrayExprType(ArrayExpr ae) { exists(ae) and result = TArrayType() } +private Type inferArrayExprType(ArrayExpr ae) { exists(ae) and result instanceof ArrayType } /** * Gets the root type of the range expression `re`. @@ -2922,11 +3135,11 @@ private Type inferIndexExprType(IndexExpr ie, TypePath path) { // todo: remove? exprPath.isCons(TTypeParamTypeParameter(any(Vec v).getElementTypeParam()), path) or - exprPath.isCons(any(ArrayTypeParameter tp), path) + exprPath.isCons(getArrayTypeParameter(), path) or exists(TypePath path0 | - exprPath.isCons(any(RefTypeParameter tp), path0) and - path0.isCons(any(SliceTypeParameter tp), path) + exprPath.isCons(getRefTypeParameter(), path0) and + path0.isCons(getSliceTypeParameter(), path) ) ) } @@ -3046,6 +3259,8 @@ private module ForIterableSatisfiesConstraintInput implements t instanceof IntoIteratorTrait ) } + + predicate useUniversalConditions() { none() } } pragma[nomagic] @@ -3071,7 +3286,7 @@ private Type inferForLoopExprType(AstNode n, TypePath path) { or // TODO: Remove once we can handle the `impl IntoIterator for I` implementation tp = getIteratorItemTypeParameter() and - inferType(fe.getIterable()) != TArrayType() + inferType(fe.getIterable()) != getArrayTypeParameter() ) } @@ -3100,6 +3315,8 @@ private module InvokedClosureSatisfiesConstraintInput implements exists(term) and constraint.(TraitType).getTrait() instanceof FnOnceTrait } + + predicate useUniversalConditions() { none() } } /** Gets the type of `ce` when viewed as an implementation of `FnOnce`. */ @@ -3118,7 +3335,7 @@ pragma[nomagic] private TypePath closureParameterPath(int arity, int index) { result = TypePath::cons(TDynTraitTypeParameter(any(FnOnceTrait t).getTypeParam()), - TypePath::singleton(TTupleTypeParameter(arity, index))) + TypePath::singleton(getTupleTypeParameter(arity, index))) } /** Gets the path to the return type of the `FnOnce` trait. */ @@ -3134,7 +3351,7 @@ pragma[nomagic] private TypePath fnParameterPath(int arity, int index) { result = TypePath::cons(TTypeParamTypeParameter(any(FnOnceTrait t).getTypeParam()), - TypePath::singleton(TTupleTypeParameter(arity, index))) + TypePath::singleton(getTupleTypeParameter(arity, index))) } pragma[nomagic] @@ -3179,11 +3396,11 @@ private Type inferClosureExprType(AstNode n, TypePath path) { exists(ClosureExpr ce | n = ce and path.isEmpty() and - result = TDynTraitType(any(FnOnceTrait t)) + result = TDynTraitType(any(FnOnceTrait t)) // always exists because of the mention in `builtins/mentions.rs` or n = ce and path = TypePath::singleton(TDynTraitTypeParameter(any(FnOnceTrait t).getTypeParam())) and - result = TTuple(ce.getNumberOfParams()) + result.(TupleType).getArity() = ce.getNumberOfParams() or // Propagate return type annotation to body n = ce.getClosureBody() and @@ -3198,8 +3415,6 @@ private Type inferCastExprType(CastExpr ce, TypePath path) { cached private module Cached { - private import codeql.rust.internal.CachedStages - /** Holds if `receiver` is the receiver of a method call with an implicit dereference. */ cached predicate receiverHasImplicitDeref(AstNode receiver) { @@ -3215,7 +3430,7 @@ private module Cached { /** Gets an item (function or tuple struct/variant) that `call` resolves to, if any. */ cached Addressable resolveCallTarget(Call call) { - result = call.(MethodResolution::MethodCall).resolveCallTarget(_, _) + result = call.(MethodResolution::MethodCall).resolveCallTarget(_, _, _) or result = call.(NonMethodResolution::NonMethodCall).resolveCallTarget() } @@ -3303,8 +3518,6 @@ private module Cached { or result = inferStructExprType(n, path) or - result = inferPathExprType(n, path) - or result = inferMethodCallType(n, path) or result = inferNonMethodCallType(n, path) @@ -3362,10 +3575,10 @@ private module Debug { } predicate debugConditionSatisfiesConstraint( - TypeAbstraction abs, TypeMention condition, TypeMention constraint + TypeAbstraction abs, TypeMention condition, TypeMention constraint, boolean transitive ) { abs = getRelevantLocatable() and - Input2::conditionSatisfiesConstraint(abs, condition, constraint) + Input2::conditionSatisfiesConstraint(abs, condition, constraint, transitive) } predicate debugInferShorthandSelfType(ShorthandSelfParameterMention self, TypePath path, Type t) { diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index c4185efc91f2..90de48035e38 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -20,11 +20,11 @@ abstract class TypeMention extends AstNode { class TupleTypeReprMention extends TypeMention instanceof TupleTypeRepr { override Type resolveTypeAt(TypePath path) { path.isEmpty() and - result = TTuple(super.getNumberOfFields()) + result.(TupleType).getArity() = super.getNumberOfFields() or exists(TypePath suffix, int i | result = super.getField(i).(TypeMention).resolveTypeAt(suffix) and - path = TypePath::cons(TTupleTypeParameter(super.getNumberOfFields(), i), suffix) + path = TypePath::cons(getTupleTypeParameter(super.getNumberOfFields(), i), suffix) ) } } @@ -32,11 +32,11 @@ class TupleTypeReprMention extends TypeMention instanceof TupleTypeRepr { class ParenthesizedArgListMention extends TypeMention instanceof ParenthesizedArgList { override Type resolveTypeAt(TypePath path) { path.isEmpty() and - result = TTuple(super.getNumberOfTypeArgs()) + result.(TupleType).getArity() = super.getNumberOfTypeArgs() or exists(TypePath suffix, int index | result = super.getTypeArg(index).getTypeRepr().(TypeMention).resolveTypeAt(suffix) and - path = TypePath::cons(TTupleTypeParameter(super.getNumberOfTypeArgs(), index), suffix) + path = TypePath::cons(getTupleTypeParameter(super.getNumberOfTypeArgs(), index), suffix) ) } } @@ -44,11 +44,11 @@ class ParenthesizedArgListMention extends TypeMention instanceof ParenthesizedAr class ArrayTypeReprMention extends TypeMention instanceof ArrayTypeRepr { override Type resolveTypeAt(TypePath path) { path.isEmpty() and - result = TArrayType() + result instanceof ArrayType or exists(TypePath suffix | result = super.getElementTypeRepr().(TypeMention).resolveTypeAt(suffix) and - path = TypePath::cons(TArrayTypeParameter(), suffix) + path = TypePath::cons(getArrayTypeParameter(), suffix) ) } } @@ -56,11 +56,11 @@ class ArrayTypeReprMention extends TypeMention instanceof ArrayTypeRepr { class RefTypeReprMention extends TypeMention instanceof RefTypeRepr { override Type resolveTypeAt(TypePath path) { path.isEmpty() and - result = TRefType() + result instanceof RefType or exists(TypePath suffix | result = super.getTypeRepr().(TypeMention).resolveTypeAt(suffix) and - path = TypePath::cons(TRefTypeParameter(), suffix) + path = TypePath::cons(getRefTypeParameter(), suffix) ) } } @@ -68,11 +68,11 @@ class RefTypeReprMention extends TypeMention instanceof RefTypeRepr { class SliceTypeReprMention extends TypeMention instanceof SliceTypeRepr { override Type resolveTypeAt(TypePath path) { path.isEmpty() and - result = TSliceType() + result instanceof SliceType or exists(TypePath suffix | result = super.getTypeRepr().(TypeMention).resolveTypeAt(suffix) and - path = TypePath::cons(TSliceTypeParameter(), suffix) + path = TypePath::cons(getSliceTypeParameter(), suffix) ) } } @@ -108,6 +108,20 @@ class AliasPathTypeMention extends PathTypeMention { } } +/** + * Gets the `i`th type argument of `p`. + * + * Takes into account that variants can have type arguments applied to both the + * enum and the variant itself, e.g. `Option::::Some` is valid in addition + * to `Option::Some::`. + */ +TypeMention getPathTypeArgument(Path p, int i) { + result = p.getSegment().getGenericArgList().getTypeArg(i) + or + resolvePath(p) instanceof Variant and + result = p.getQualifier().getSegment().getGenericArgList().getTypeArg(i) +} + class NonAliasPathTypeMention extends PathTypeMention { TypeItemNode resolved; @@ -143,18 +157,6 @@ class NonAliasPathTypeMention extends PathTypeMention { ) } - /** - * Gets the positional type argument at index `i` that occurs in this path, if - * any. - */ - private TypeMention getPathPositionalTypeArgument(int i) { - result = this.getSegment().getGenericArgList().getTypeArg(i) - or - // `Option::::Some` is valid in addition to `Option::Some::` - resolvePath(this) instanceof Variant and - result = this.getQualifier().getSegment().getGenericArgList().getTypeArg(i) - } - /** * Gets the type mention that instantiates the implicit `Self` type parameter * for this path, if it occurs in the position of a trait bound. @@ -173,7 +175,7 @@ class NonAliasPathTypeMention extends PathTypeMention { private Type getDefaultPositionalTypeArgument(int i, TypePath path) { // If a type argument is not given in the path, then we use the default for // the type parameter if one exists for the type. - not exists(this.getPathPositionalTypeArgument(i)) and + not exists(getPathTypeArgument(this, i)) and // Defaults only apply to type mentions in type annotations this = any(PathTypeRepr ptp).getPath().getQualifier*() and exists(Type ty, TypePath prefix | @@ -191,7 +193,7 @@ class NonAliasPathTypeMention extends PathTypeMention { } private Type getPositionalTypeArgument(int i, TypePath path) { - result = this.getPathPositionalTypeArgument(i).resolveTypeAt(path) + result = getPathTypeArgument(this, i).resolveTypeAt(path) or result = this.getDefaultPositionalTypeArgument(i, path) } @@ -207,6 +209,11 @@ class NonAliasPathTypeMention extends PathTypeMention { ) } + pragma[nomagic] + private TypeAlias getResolvedAlias(string name) { + result = resolved.(TraitItemNode).getAssocItem(name) + } + /** Gets the type mention in this path for the type parameter `tp`, if any. */ pragma[nomagic] private TypeMention getTypeMentionForTypeParameter(TypeParameter tp) { @@ -228,16 +235,11 @@ class NonAliasPathTypeMention extends PathTypeMention { // } // ``` // the rhs. of the type alias is a type argument to the trait. - exists(ImplItemNode impl, AssociatedTypeTypeParameter param, TypeAlias alias, string name | + exists(ImplItemNode impl, TypeAlias alias, string name | this = impl.getTraitPath() and - param.getTrait() = resolved and - name = param.getTypeAlias().getName().getText() and alias = impl.getASuccessor(pragma[only_bind_into](name)) and result = alias.getTypeRepr() and - tp = - TAssociatedTypeTypeParameter(resolved - .(TraitItemNode) - .getAssocItem(pragma[only_bind_into](name))) + tp = TAssociatedTypeTypeParameter(this.getResolvedAlias(pragma[only_bind_into](name))) ) or // Handle the special syntactic sugar for function traits. For now we only @@ -289,6 +291,9 @@ class NonAliasPathTypeMention extends PathTypeMention { result = this.getSelfTraitBoundArg().resolveTypeAt(suffix) and typePath = TypePath::cons(TSelfTypeParameter(resolved), suffix) ) + or + not this.getSegment().hasTraitTypeRepr() and + result = this.getSegment().getTypeRepr().(TypeMention).resolveTypeAt(typePath) } } @@ -424,11 +429,11 @@ class ShorthandSelfParameterMention extends TypeMention instanceof SelfParam { then // `fn f(&self, ...)` typePath.isEmpty() and - result = TRefType() + result instanceof RefType or exists(TypePath suffix | result = this.resolveSelfType(suffix) and - typePath = TypePath::cons(TRefTypeParameter(), suffix) + typePath = TypePath::cons(getRefTypeParameter(), suffix) ) else // `fn f(self, ...)` @@ -539,11 +544,11 @@ class NeverTypeReprMention extends TypeMention, NeverTypeRepr { class PtrTypeReprMention extends TypeMention instanceof PtrTypeRepr { override Type resolveTypeAt(TypePath path) { path.isEmpty() and - result = TPtrType() + result instanceof PtrType or exists(TypePath suffix | result = super.getTypeRepr().(TypeMention).resolveTypeAt(suffix) and - path = TypePath::cons(TPtrTypeParameter(), suffix) + path = TypePath::cons(getPtrTypeParameter(), suffix) ) } } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll index 6ddb7ee3be03..c60ad3f6ae3f 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll @@ -92,7 +92,8 @@ module SatisfiesBlanketConstraint< Type getTypeAt(TypePath path) { result = at.getTypeAt(blanketPath.appendInverse(path)) and - not result = TNeverType() + not result = TNeverType() and + not result = TUnknownType() } string toString() { result = at.toString() + " [blanket at " + blanketPath.toString() + "]" } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll index 10c007a9d724..133393bf57a4 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll @@ -72,16 +72,24 @@ module FunctionPositionMatchingInput { } private newtype TAssocFunctionType = - /** An associated function `f` that should be specialized for `i` at `pos`. */ - MkAssocFunctionType(Function f, ImplOrTraitItemNode i, FunctionPosition pos) { - f = i.getASuccessor(_) and exists(pos.getTypeMention(f)) + /** An associated function `f` in `parent` should be specialized for `i` at `pos`. */ + MkAssocFunctionType( + ImplOrTraitItemNode parent, Function f, ImplOrTraitItemNode i, FunctionPosition pos + ) { + parent.getAnAssocItem() = f and + i.getASuccessor(_) = f and + // When `f` is not directly in `i`, the `parent` should be satisfiable + // through `i`. This ensures that `parent` is either a supertrait of `i` or + // `i` in an `impl` block implementing `parent`. + (parent = i or BaseTypes::rootTypesSatisfaction(_, TTrait(parent), i, _, _)) and + exists(pos.getTypeMention(f)) } -bindingset[condition, constraint, tp] +bindingset[abs, constraint, tp] private Type getTraitConstraintTypeAt( - TypeMention condition, TypeMention constraint, TypeParameter tp, TypePath path + TypeAbstraction abs, TypeMention constraint, TypeParameter tp, TypePath path ) { - BaseTypes::conditionSatisfiesConstraintTypeAt(_, condition, constraint, + BaseTypes::conditionSatisfiesConstraintTypeAt(abs, _, constraint, TypePath::singleton(tp).appendInverse(path), result) } @@ -91,28 +99,19 @@ private Type getTraitConstraintTypeAt( */ pragma[nomagic] Type getAssocFunctionTypeAt(Function f, ImplOrTraitItemNode i, FunctionPosition pos, TypePath path) { - exists(MkAssocFunctionType(f, i, pos)) and - ( + exists(ImplOrTraitItemNode parent | exists(MkAssocFunctionType(parent, f, i, pos)) | // No specialization needed when the function is directly in the trait or // impl block or the declared type is not a type parameter - (i.getAnAssocItem() = f or not result instanceof TypeParameter) and + (parent = i or not result instanceof TypeParameter) and result = pos.getTypeMention(f).resolveTypeAt(path) or - not i.getAnAssocItem() = f and - exists(TypePath prefix, TypePath suffix, TypeParameter tp | + exists(TypePath prefix, TypePath suffix, TypeParameter tp, TypeMention constraint | + BaseTypes::rootTypesSatisfaction(_, TTrait(parent), i, _, constraint) and path = prefix.append(suffix) and - tp = pos.getTypeMention(f).resolveTypeAt(prefix) - | + tp = pos.getTypeMention(f).resolveTypeAt(prefix) and if tp = TSelfTypeParameter(_) then result = resolveImplOrTraitType(i, suffix) - else - exists(TraitItemNode trait, TypeMention condition, TypeMention constraint | - trait.getAnAssocItem() = f and - BaseTypes::rootTypesSatisfaction(_, TTrait(trait), _, condition, constraint) and - result = getTraitConstraintTypeAt(condition, constraint, tp, suffix) - | - condition = i.(Trait) or condition = i.(Impl).getSelfTy() - ) + else result = getTraitConstraintTypeAt(i, constraint, tp, suffix) ) ) } @@ -125,32 +124,34 @@ Type getAssocFunctionTypeAt(Function f, ImplOrTraitItemNode i, FunctionPosition * * ```rust * trait T1 { - * fn m1(self); // self1 + * fn m1(self); // T1::m1 * - * fn m2(self) { ... } // self2 + * fn m2(self) { ... } // T1::m2 * } * * trait T2 : T1 { - * fn m3(self); // self3 + * fn m3(self); // T2::m3 * } * - * impl T2 for X { - * fn m1(self) { ... } // self4 + * impl T1 for X { + * fn m1(self) { ... } // X::m1 + * } * - * fn m3(self) { ... } // self5 + * impl T2 for X { + * fn m3(self) { ... } // X::m3 * } * ``` * - * param | `impl` or trait | type - * ------- | --------------- | ---- - * `self1` | `trait T1` | `T1` - * `self1` | `trait T2` | `T2` - * `self2` | `trait T1` | `T1` - * `self2` | `trait T2` | `T2` - * `self2` | `impl T2 for X` | `X` - * `self3` | `trait T2` | `T2` - * `self4` | `impl T2 for X` | `X` - * `self5` | `impl T2 for X` | `X` + * f | `impl` or trait | pos | type + * -------- | --------------- | ------ | ---- + * `T1::m1` | `trait T1` | `self` | `T1` + * `T1::m1` | `trait T2` | `self` | `T2` + * `T1::m2` | `trait T1` | `self` | `T1` + * `T1::m2` | `trait T2` | `self` | `T2` + * `T1::m2` | `impl T1 for X` | `self` | `X` + * `T2::m3` | `trait T2` | `self` | `T2` + * `X::m1` | `impl T1 for X` | `self` | `X` + * `X::m3` | `impl T2 for X` | `self` | `X` */ class AssocFunctionType extends MkAssocFunctionType { /** @@ -158,7 +159,7 @@ class AssocFunctionType extends MkAssocFunctionType { * when viewed as a member of the `impl` or trait item `i`. */ predicate appliesTo(Function f, ImplOrTraitItemNode i, FunctionPosition pos) { - this = MkAssocFunctionType(f, i, pos) + this = MkAssocFunctionType(_, f, i, pos) } /** @@ -229,7 +230,8 @@ module ArgIsInstantiationOf< private class ArgSubst extends ArgFinal { Type getTypeAt(TypePath path) { result = substituteLookupTraits(super.getTypeAt(path)) and - not result = TNeverType() + not result = TNeverType() and + not result = TUnknownType() } } @@ -350,7 +352,7 @@ module ArgsAreInstantiationsOf { | rnk = 0 or - argsAreInstantiationsOfFromIndex(call, abs, f, rnk - 1) + argsAreInstantiationsOfToIndex(call, abs, f, rnk - 1) ) } @@ -359,15 +361,15 @@ module ArgsAreInstantiationsOf { } } - private module ArgIsInstantiationOfFromIndex = + private module ArgIsInstantiationOfToIndex = ArgIsInstantiationOf; pragma[nomagic] - private predicate argsAreInstantiationsOfFromIndex( + private predicate argsAreInstantiationsOfToIndex( Input::Call call, ImplOrTraitItemNode i, Function f, int rnk ) { exists(FunctionPosition pos | - ArgIsInstantiationOfFromIndex::argIsInstantiationOf(MkCallAndPos(call, pos), i, _) and + ArgIsInstantiationOfToIndex::argIsInstantiationOf(MkCallAndPos(call, pos), i, _) and call.hasTargetCand(i, f) and toCheckRanked(i, f, pos, rnk) ) @@ -380,7 +382,7 @@ module ArgsAreInstantiationsOf { pragma[nomagic] predicate argsAreInstantiationsOf(Input::Call call, ImplOrTraitItemNode i, Function f) { exists(int rnk | - argsAreInstantiationsOfFromIndex(call, i, f, rnk) and + argsAreInstantiationsOfToIndex(call, i, f, rnk) and rnk = max(int r | toCheckRanked(i, f, _, r)) ) } diff --git a/rust/ql/lib/codeql/rust/security/AccessAfterLifetimeExtensions.qll b/rust/ql/lib/codeql/rust/security/AccessAfterLifetimeExtensions.qll index 4b3177c9df95..06438fef0c8f 100644 --- a/rust/ql/lib/codeql/rust/security/AccessAfterLifetimeExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/AccessAfterLifetimeExtensions.qll @@ -39,6 +39,14 @@ module AccessAfterLifetime { */ abstract class Barrier extends DataFlow::Node { } + /** + * Holds if the value pointed to by `source` accesses a variable `target` with scope `scope`. + */ + pragma[nomagic] + predicate sourceValueScope(Source source, Variable target, BlockExpr scope) { + valueScope(source.getTarget(), target, scope) + } + /** * Holds if the pair `(source, sink)`, that represents a flow from a * pointer or reference to a dereference, has its dereference outside the @@ -47,8 +55,8 @@ module AccessAfterLifetime { bindingset[source, sink] predicate dereferenceAfterLifetime(Source source, Sink sink, Variable target) { exists(BlockExpr valueScope, BlockExpr accessScope | - valueScope(source.getTarget(), target, valueScope) and - accessScope = sink.asExpr().getExpr().getEnclosingBlock() and + sourceValueScope(source, target, valueScope) and + accessScope = sink.asExpr().getEnclosingBlock() and not mayEncloseOnStack(valueScope, accessScope) ) } @@ -104,7 +112,7 @@ module AccessAfterLifetime { private class RefExprSource extends Source { Expr targetValue; - RefExprSource() { this.asExpr().getExpr().(RefExpr).getExpr() = targetValue } + RefExprSource() { this.asExpr().(RefExpr).getExpr() = targetValue } override Expr getTarget() { result = targetValue } } @@ -114,6 +122,6 @@ module AccessAfterLifetime { * variables through closures properly. */ private class ClosureBarrier extends Barrier { - ClosureBarrier() { this.asExpr().getExpr().getEnclosingCallable() instanceof ClosureExpr } + ClosureBarrier() { this.asExpr().getEnclosingCallable() instanceof ClosureExpr } } } diff --git a/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll b/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll index 444db0142090..b8b40ffa2578 100644 --- a/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll @@ -9,6 +9,7 @@ private import codeql.rust.dataflow.FlowSource private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts private import codeql.rust.dataflow.internal.Node +private import codeql.rust.security.Barriers as Barriers /** * Provides default sources, sinks and barriers for detecting accesses to @@ -50,7 +51,7 @@ module AccessInvalidPointer { * A pointer access using the unary `*` operator. */ private class DereferenceSink extends Sink { - DereferenceSink() { any(DerefExpr p).getExpr() = this.asExpr().getExpr() } + DereferenceSink() { any(DerefExpr p).getExpr() = this.asExpr() } } /** @@ -59,4 +60,10 @@ module AccessInvalidPointer { private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, "pointer-access") } } + + /** + * A barrier for invalid pointer access vulnerabilities for values checked to + * be non-`null`. + */ + private class NotNullCheckBarrier extends Barrier instanceof Barriers::NotNullCheckBarrier { } } diff --git a/rust/ql/lib/codeql/rust/security/Barriers.qll b/rust/ql/lib/codeql/rust/security/Barriers.qll new file mode 100644 index 000000000000..845a689af11a --- /dev/null +++ b/rust/ql/lib/codeql/rust/security/Barriers.qll @@ -0,0 +1,64 @@ +/** + * Classes to represent barriers commonly used in data flow and taint tracking + * configurations. + */ + +import rust +private import codeql.rust.dataflow.DataFlow +private import codeql.rust.internal.TypeInference as TypeInference +private import codeql.rust.internal.Type +private import codeql.rust.controlflow.ControlFlowGraph as Cfg +private import codeql.rust.controlflow.CfgNodes as CfgNodes +private import codeql.rust.frameworks.stdlib.Builtins as Builtins + +/** A node whose type is a numeric type. */ +class NumericTypeBarrier extends DataFlow::Node { + NumericTypeBarrier() { + TypeInference::inferType(this.asExpr()).(StructType).getStruct() instanceof + Builtins::NumericType + } +} + +/** A node whose type is `bool`. */ +class BooleanTypeBarrier extends DataFlow::Node { + BooleanTypeBarrier() { + TypeInference::inferType(this.asExpr()).(StructType).getStruct() instanceof Builtins::Bool + } +} + +/** A node whose type is an integral (integer). */ +class IntegralTypeBarrier extends DataFlow::Node { + IntegralTypeBarrier() { + TypeInference::inferType(this.asExpr()).(StructType).getStruct() instanceof + Builtins::IntegralType + } +} + +/** A node whose type is a fieldless enum. */ +class FieldlessEnumTypeBarrier extends DataFlow::Node { + FieldlessEnumTypeBarrier() { + TypeInference::inferType(this.asExpr()).(EnumType).getEnum().isFieldless() + } +} + +/** + * Holds if guard expression `g` having result `branch` indicates that the + * sub-expression `e` is not null. For example when `ptr.is_null()` is + * `false`, we have that `ptr` is not null. + */ +private predicate notNullCheck(AstNode g, Expr e, boolean branch) { + exists(MethodCallExpr call | + call.getStaticTarget().getName().getText() = "is_null" and + g = call and + e = call.getReceiver() and + branch = false + ) +} + +/** + * A node representing a value checked to be non-null. This may be an + * appropriate taint flow barrier for some queries. + */ +class NotNullCheckBarrier extends DataFlow::Node { + NotNullCheckBarrier() { this = DataFlow::BarrierGuard::getABarrierNode() } +} diff --git a/rust/ql/lib/codeql/rust/security/CleartextLoggingExtensions.qll b/rust/ql/lib/codeql/rust/security/CleartextLoggingExtensions.qll index 0961efd553fd..f634992fb81e 100644 --- a/rust/ql/lib/codeql/rust/security/CleartextLoggingExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/CleartextLoggingExtensions.qll @@ -8,6 +8,7 @@ private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.FlowSink private import codeql.rust.security.SensitiveData private import codeql.rust.Concepts +private import codeql.rust.security.Barriers as Barriers /** * Provides default sources, sinks and barriers for detecting cleartext logging @@ -42,4 +43,9 @@ module CleartextLogging { private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, "log-injection") } } + + private class BooleanTypeBarrier extends Barrier instanceof Barriers::BooleanTypeBarrier { } + + private class FieldlessEnumTypeBarrier extends Barrier instanceof Barriers::FieldlessEnumTypeBarrier + { } } diff --git a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll new file mode 100644 index 000000000000..6a885828ee98 --- /dev/null +++ b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll @@ -0,0 +1,45 @@ +/** + * Provides classes and predicates for reasoning about disabled certificate + * check vulnerabilities. + */ + +import rust +private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowSink +private import codeql.rust.Concepts +private import codeql.rust.dataflow.internal.Node as Node + +/** + * Provides default sinks for detecting disabled certificate check + * vulnerabilities, as well as extension points for adding your own. + */ +module DisabledCertificateCheckExtensions { + /** + * A data flow sink for disabled certificate check vulnerabilities. + */ + abstract class Sink extends QuerySink::Range { + override string getSinkType() { result = "DisabledCertificateCheck" } + } + + /** + * A sink for disabled certificate check vulnerabilities from model data. + */ + private class ModelsAsDataSink extends Sink { + ModelsAsDataSink() { sinkNode(this, "disable-certificate") } + } + + /** + * A heuristic sink for disabled certificate check vulnerabilities based on function names. + */ + private class HeuristicSink extends Sink { + HeuristicSink() { + exists(CallExprBase fc | + fc.getStaticTarget().(Function).getName().getText() = + ["danger_accept_invalid_certs", "danger_accept_invalid_hostnames"] and + fc.getArg(0) = this.asExpr() and + // don't duplicate modeled sinks + not exists(ModelsAsDataSink s | s.(Node::FlowSummaryNode).getSinkElement().getCall() = fc) + ) + } + } +} diff --git a/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll b/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll index bc487e42ef0a..a7fb35d138b8 100644 --- a/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll @@ -63,7 +63,7 @@ module HardcodedCryptographicValue { * A literal, considered as a flow source. */ private class LiteralSource extends Source { - LiteralSource() { this.asExpr().getExpr() instanceof LiteralExpr } + LiteralSource() { this.asExpr() instanceof LiteralExpr } } /** @@ -75,8 +75,8 @@ module HardcodedCryptographicValue { */ private class ArrayListSource extends Source { ArrayListSource() { - this.asExpr().getExpr().(ArrayListExpr).getExpr(_) instanceof LiteralExpr or - this.asExpr().getExpr().(ArrayRepeatExpr).getRepeatOperand() instanceof LiteralExpr + this.asExpr().(ArrayListExpr).getExpr(_) instanceof LiteralExpr or + this.asExpr().(ArrayRepeatExpr).getRepeatOperand() instanceof LiteralExpr } } @@ -106,7 +106,7 @@ module HardcodedCryptographicValue { exists(CallExprBase ce | ce.getStaticTarget().(Addressable).getCanonicalPath() = ["getrandom::fill", "getrandom::getrandom"] and - this.asExpr().getExpr().getParentNode*() = ce.getArgList().getArg(0) + this.asExpr().getParentNode*() = ce.getArgList().getArg(0) ) } } diff --git a/rust/ql/lib/codeql/rust/security/InsecureCookieExtensions.qll b/rust/ql/lib/codeql/rust/security/InsecureCookieExtensions.qll index d5d15c821d87..8e9f855209e8 100644 --- a/rust/ql/lib/codeql/rust/security/InsecureCookieExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/InsecureCookieExtensions.qll @@ -85,13 +85,13 @@ module InsecureCookie { cookieOptionalBarrier(summaryNode, attrib, arg) and // find a call and arg referenced by this optional barrier ce.getStaticTarget() = summaryNode.getSummarizedCallable() and - ce.getArg(arg) = argNode.asExpr().getExpr() and + ce.getArg(arg) = argNode.asExpr() and // check if the argument is always `true` ( if forex(DataFlow::Node argSourceNode, BooleanLiteralExpr argSourceValue | DataFlow::localFlow(argSourceNode, argNode) and - argSourceValue = argSourceNode.asExpr().getExpr() + argSourceValue = argSourceNode.asExpr() | argSourceValue.getTextValue() = "true" ) @@ -101,7 +101,7 @@ module InsecureCookie { // and find the node where this happens (we can't just use the flow summary node, since its // shared across all calls to the modeled function, we need a node specific to this call) ( - node.asExpr().getExpr() = ce.(MethodCallExpr).getReceiver() // e.g. `a` in `a.set_secure(true)` + node.asExpr() = ce.(MethodCallExpr).getReceiver() // e.g. `a` in `a.set_secure(true)` or exists(BasicBlock bb, int i | // associated SSA node diff --git a/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll index a0282a0ff29f..31403b625f92 100644 --- a/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll @@ -8,6 +8,7 @@ private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts private import codeql.util.Unit +private import codeql.rust.security.Barriers as Barriers /** * Provides default sources, sinks and barriers for detecting log injection @@ -42,4 +43,15 @@ module LogInjection { private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, "log-injection") } } + + /** + * A barrier for log injection vulnerabilities for nodes whose type is a + * numeric type, which is unlikely to expose any vulnerability. + */ + private class NumericTypeBarrier extends Barrier instanceof Barriers::NumericTypeBarrier { } + + private class BooleanTypeBarrier extends Barrier instanceof Barriers::BooleanTypeBarrier { } + + private class FieldlessEnumTypeBarrier extends Barrier instanceof Barriers::FieldlessEnumTypeBarrier + { } } diff --git a/rust/ql/lib/codeql/rust/security/SensitiveData.qll b/rust/ql/lib/codeql/rust/security/SensitiveData.qll index 4e6ba21a2d28..1b6abdd52fbf 100644 --- a/rust/ql/lib/codeql/rust/security/SensitiveData.qll +++ b/rust/ql/lib/codeql/rust/security/SensitiveData.qll @@ -29,7 +29,7 @@ private class SensitiveDataCall extends SensitiveData { SensitiveDataCall() { exists(CallExprBase call, string name | - call = this.asExpr().getExpr() and + call = this.asExpr() and name = [ call.getStaticTarget().(Function).getName().getText(), @@ -50,7 +50,6 @@ private class SensitiveVariableAccess extends SensitiveData { SensitiveVariableAccess() { HeuristicNames::nameIndicatesSensitiveData(this.asExpr() - .getExpr() .(VariableAccess) .getVariable() .(Variable) @@ -69,7 +68,7 @@ private class SensitiveFieldAccess extends SensitiveData { SensitiveDataClassification classification; SensitiveFieldAccess() { - exists(FieldExpr fe | fieldExprParentField*(fe) = this.asExpr().getExpr() | + exists(FieldExpr fe | fieldExprParentField*(fe) = this.asExpr() | HeuristicNames::nameIndicatesSensitiveData(fe.getIdentifier().getText(), classification) ) } diff --git a/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll index f2921ef0cc13..f36ab264987a 100644 --- a/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll @@ -9,6 +9,7 @@ private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts private import codeql.util.Unit +private import codeql.rust.security.Barriers as Barriers /** * Provides default sources, sinks and barriers for detecting SQL injection @@ -57,4 +58,15 @@ module SqlInjection { private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, "sql-injection") } } + + /** + * A barrier for SQL injection vulnerabilities for nodes whose type is a numeric + * type, which is unlikely to expose any vulnerability. + */ + private class NumericTypeBarrier extends Barrier instanceof Barriers::NumericTypeBarrier { } + + private class BooleanTypeBarrier extends Barrier instanceof Barriers::BooleanTypeBarrier { } + + private class FieldlessEnumTypeBarrier extends Barrier instanceof Barriers::FieldlessEnumTypeBarrier + { } } diff --git a/rust/ql/lib/codeql/rust/security/TaintedPathExtensions.qll b/rust/ql/lib/codeql/rust/security/TaintedPathExtensions.qll index 9310999bd3dd..2d097c0aa4cd 100644 --- a/rust/ql/lib/codeql/rust/security/TaintedPathExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/TaintedPathExtensions.qll @@ -8,7 +8,6 @@ private import codeql.rust.dataflow.TaintTracking private import codeql.rust.Concepts private import codeql.rust.dataflow.internal.DataFlowImpl private import codeql.rust.controlflow.ControlFlowGraph as Cfg -private import codeql.rust.controlflow.CfgNodes as CfgNodes /** * Provides default sources, sinks and barriers for detecting path injection @@ -50,16 +49,16 @@ module TaintedPath { } } -private predicate sanitizerGuard(CfgNodes::AstCfgNode g, Cfg::CfgNode node, boolean branch) { - g.(SanitizerGuard::Range).checks(node, branch) +private predicate sanitizerGuard(AstNode g, Expr e, boolean branch) { + g.(SanitizerGuard::Range).checks(e, branch) } /** Provides a class for modeling new path safety checks. */ module SanitizerGuard { /** A data-flow node that checks that a path is safe to access. */ - abstract class Range extends CfgNodes::AstCfgNode { - /** Holds if this guard validates `node` upon evaluating to `branch`. */ - abstract predicate checks(Cfg::CfgNode node, boolean branch); + abstract class Range extends AstNode { + /** Holds if this guard validates `e` upon evaluating to `branch`. */ + abstract predicate checks(Expr e, boolean branch); } } @@ -67,15 +66,14 @@ module SanitizerGuard { * A check of the form `!strings.Contains(nd, "..")`, considered as a sanitizer guard for * path traversal. */ -private class DotDotCheck extends SanitizerGuard::Range, CfgNodes::MethodCallExprCfgNode { +private class DotDotCheck extends SanitizerGuard::Range, MethodCallExpr { DotDotCheck() { - this.getAstNode().(CallExprBase).getStaticTarget().(Addressable).getCanonicalPath() = + this.getStaticTarget().(Addressable).getCanonicalPath() = ["::contains", "::contains"] and - this.getArgument(0).getAstNode().(LiteralExpr).getTextValue() = - ["\"..\"", "\"../\"", "\"..\\\""] + this.getArg(0).(LiteralExpr).getTextValue() = ["\"..\"", "\"../\"", "\"..\\\""] } - override predicate checks(Cfg::CfgNode e, boolean branch) { + override predicate checks(Expr e, boolean branch) { e = this.getReceiver() and branch = false } diff --git a/rust/ql/lib/codeql/rust/security/UncontrolledAllocationSizeExtensions.qll b/rust/ql/lib/codeql/rust/security/UncontrolledAllocationSizeExtensions.qll index 2f4898f6e9da..c6251563ea6f 100644 --- a/rust/ql/lib/codeql/rust/security/UncontrolledAllocationSizeExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/UncontrolledAllocationSizeExtensions.qll @@ -7,8 +7,6 @@ import rust private import codeql.rust.Concepts private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.FlowSink -private import codeql.rust.controlflow.ControlFlowGraph as Cfg -private import codeql.rust.controlflow.CfgNodes as CfgNodes /** * Provides default sources, sinks and barriers for detecting uncontrolled @@ -45,23 +43,24 @@ module UncontrolledAllocationSize { /** * Holds if comparison `g` having result `branch` indicates an upper bound for the sub-expression - * `node`. For example when the comparison `x < 10` is true, we have an upper bound for `x`. + * `e`. For example when the comparison `x < 10` is true, we have an upper bound for `x`. */ - private predicate isUpperBoundCheck(CfgNodes::AstCfgNode g, Cfg::CfgNode node, boolean branch) { - exists(BinaryExpr cmp | g = cmp.getACfgNode() | - node = cmp.(RelationalOperation).getLesserOperand().getACfgNode() and - branch = true - or - node = cmp.(RelationalOperation).getGreaterOperand().getACfgNode() and - branch = false - or - cmp instanceof EqualsOperation and - [cmp.getLhs(), cmp.getRhs()].getACfgNode() = node and - branch = true - or - cmp instanceof NotEqualsOperation and - [cmp.getLhs(), cmp.getRhs()].getACfgNode() = node and - branch = false - ) + private predicate isUpperBoundCheck(AstNode g, Expr e, boolean branch) { + g = + any(BinaryExpr cmp | + e = cmp.(RelationalOperation).getLesserOperand() and + branch = true + or + e = cmp.(RelationalOperation).getGreaterOperand() and + branch = false + or + cmp instanceof EqualsOperation and + [cmp.getLhs(), cmp.getRhs()] = e and + branch = true + or + cmp instanceof NotEqualsOperation and + [cmp.getLhs(), cmp.getRhs()] = e and + branch = false + ) } } diff --git a/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll index bd91cde238f3..076ed42edfbb 100644 --- a/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll @@ -50,7 +50,7 @@ module UseOfHttp { * An HTTP string literal as a source. */ private class HttpStringLiteralAsSource extends Source { - HttpStringLiteralAsSource() { this.asExpr().getExpr() instanceof HttpStringLiteral } + HttpStringLiteralAsSource() { this.asExpr() instanceof HttpStringLiteral } } /** diff --git a/rust/ql/lib/codeql/rust/security/WeakSensitiveDataHashingExtensions.qll b/rust/ql/lib/codeql/rust/security/WeakSensitiveDataHashingExtensions.qll index 7b6b6c801d75..bd29f0498b35 100644 --- a/rust/ql/lib/codeql/rust/security/WeakSensitiveDataHashingExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/WeakSensitiveDataHashingExtensions.qll @@ -189,7 +189,7 @@ class ModeledHashOperation extends Cryptography::CryptographicOperation::Range { exists(CallExpr call | sinkNode(input, "hasher-input") and call = input.(Node::FlowSummaryNode).getSinkElement().getCall() and - call = this.asExpr().getExpr() and + call = this.asExpr() and algorithmName = call.getFunction().(PathExpr).getPath().getQualifier().getText() ) } diff --git a/rust/ql/lib/codeql/rust/security/XssExtensions.qll b/rust/ql/lib/codeql/rust/security/XssExtensions.qll new file mode 100644 index 000000000000..d1d043fafaf4 --- /dev/null +++ b/rust/ql/lib/codeql/rust/security/XssExtensions.qll @@ -0,0 +1,62 @@ +/** + * Provides classes and predicates for reasoning about cross-site scripting (XSS) + * vulnerabilities. + */ + +import rust +private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowSink +private import codeql.rust.Concepts +private import codeql.util.Unit +private import codeql.rust.security.Barriers as Barriers + +/** + * Provides default sources, sinks and barriers for detecting XSS + * vulnerabilities, as well as extension points for adding your own. + */ +module Xss { + /** + * A data flow source for XSS vulnerabilities. + */ + abstract class Source extends DataFlow::Node { } + + /** + * A data flow sink for XSS vulnerabilities. + */ + abstract class Sink extends QuerySink::Range { + override string getSinkType() { result = "Xss" } + } + + /** + * A barrier for XSS vulnerabilities. + */ + abstract class Barrier extends DataFlow::Node { } + + /** + * An active threat-model source, considered as a flow source. + */ + private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + + /** + * A sink for XSS from model data. + */ + private class ModelsAsDataSink extends Sink { + ModelsAsDataSink() { sinkNode(this, "html-injection") } + } + + /** + * A barrier for XSS vulnerabilities for nodes whose type is a + * numeric or boolean type, which is unlikely to expose any vulnerability. + */ + private class NumericTypeBarrier extends Barrier instanceof Barriers::NumericTypeBarrier { } + + /** A call to a function with "escape" or "encode" in its name. */ + private class HeuristicHtmlEncodingBarrier extends Barrier { + HeuristicHtmlEncodingBarrier() { + exists(Call fc | + fc.getStaticTarget().getName().getText().regexpMatch(".*(escape|encode).*") and + fc.getArgument(_) = this.asExpr() + ) + } + } +} diff --git a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll index 61d26f2f938b..ae330ed1d0f5 100644 --- a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll @@ -6,9 +6,9 @@ private import codeql.util.Unit private import rust private import codeql.rust.dataflow.DataFlow -private import codeql.rust.controlflow.CfgNodes private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts +private import codeql.rust.security.Barriers as Barriers /** * Provides default sources, sinks and barriers for detecting regular expression @@ -56,8 +56,8 @@ module RegexInjection { exists(CallExprBase call, Addressable a | call.getStaticTarget() = a and a.getCanonicalPath() = "::new" and - this.asExpr().getExpr() = call.getArg(0) and - not this.asExpr() instanceof LiteralExprCfgNode + this.asExpr() = call.getArg(0) and + not this.asExpr() instanceof LiteralExpr ) } } @@ -77,7 +77,6 @@ module RegexInjection { // A barrier is any call to a function named `escape`, in particular this // makes calls to `regex::escape` a barrier. this.asExpr() - .getExpr() .(CallExpr) .getFunction() .(PathExpr) @@ -87,4 +86,15 @@ module RegexInjection { .getText() = "escape" } } + + /** + * A barrier for regular expression injection vulnerabilities for nodes whose + * type is an integral type, which is unlikely to expose any vulnerability. + * + * We don't include floating point types in this barrier, as `.` is a special character + * in regular expressions. + */ + private class IntegralTypeBarrier extends Barrier instanceof Barriers::IntegralTypeBarrier { } + + private class BooleanTypeBarrier extends Barrier instanceof Barriers::BooleanTypeBarrier { } } diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index b46b494c4212..31f1e4b6074f 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.19 +version: 0.2.2 groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/lib/rust.qll b/rust/ql/lib/rust.qll index b46e96868f63..d209672028b9 100644 --- a/rust/ql/lib/rust.qll +++ b/rust/ql/lib/rust.qll @@ -9,6 +9,7 @@ import codeql.rust.elements.ArithmeticOperation import codeql.rust.elements.AssignmentOperation import codeql.rust.elements.BitwiseOperation import codeql.rust.elements.ComparisonOperation +import codeql.rust.elements.ConstAccess import codeql.rust.elements.DerefExpr import codeql.rust.elements.LiteralExprExt import codeql.rust.elements.LogicalOperation diff --git a/rust/ql/lib/utils/test/InlineFlowTest.qll b/rust/ql/lib/utils/test/InlineFlowTest.qll index 9ba92f7757be..938559620fc0 100644 --- a/rust/ql/lib/utils/test/InlineFlowTest.qll +++ b/rust/ql/lib/utils/test/InlineFlowTest.qll @@ -18,20 +18,20 @@ private import internal.InlineExpectationsTestImpl as InlineExpectationsTestImpl * representation of the path has `name` as a prefix. */ bindingset[name] -private predicate callTargetName(CallExprCfgNode call, string name) { - call.getFunction().(PathExprCfgNode).toString().matches(name + "%") +private predicate callTargetName(CallExpr call, string name) { + call.getFunction().(PathExpr).toString().matches(name + "%") } private module FlowTestImpl implements InputSig { predicate defaultSource(DataFlow::Node source) { callTargetName(source.asExpr(), "source") } predicate defaultSink(DataFlow::Node sink) { - any(CallExprCfgNode call | callTargetName(call, "sink")).getArgument(_) = sink.asExpr() + any(CallExpr call | callTargetName(call, "sink")).getAnArg() = sink.asExpr() } private string getSourceArgString(DataFlow::Node src) { defaultSource(src) and - result = src.asExpr().(CallExprCfgNode).getArgument(0).toString() + result = src.asExpr().(CallExpr).getArg(0).toString() or sourceNode(src, _) and result = src.(Node::FlowSummaryNode).getSourceElement().getCall().getArg(0).toString() and diff --git a/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll b/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll index f7606b941ace..d8b2703203dc 100644 --- a/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll +++ b/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll @@ -10,9 +10,8 @@ private import utils.test.InlineExpectationsTest private module ResolveTest implements TestSig { string getARelevantTag() { result = "item" } - private predicate itemAt(ItemNode i, string filepath, int line, boolean inMacro) { - i.getLocation().hasLocationInfo(filepath, _, _, line, _) and - if i.(AstNode).isInMacroExpansion() then inMacro = true else inMacro = false + private predicate itemAt(ItemNode i, string filepath, int line) { + i.getLocation().hasLocationInfo(filepath, _, _, line, _) } private predicate commmentAt(string text, string filepath, int line) { @@ -25,7 +24,7 @@ private module ResolveTest implements TestSig { } private predicate item(ItemNode i, string value) { - exists(string filepath, int line, boolean inMacro | itemAt(i, filepath, line, inMacro) | + exists(string filepath, int line | itemAt(i, filepath, line) | if i instanceof SourceFile then value = i.getFile().getBaseName() else ( diff --git a/rust/ql/src/CHANGELOG.md b/rust/ql/src/CHANGELOG.md index 2b0c54fc057e..f5e2fdb64071 100644 --- a/rust/ql/src/CHANGELOG.md +++ b/rust/ql/src/CHANGELOG.md @@ -1,3 +1,29 @@ +## 0.1.23 + +No user-facing changes. + +## 0.1.22 + +No user-facing changes. + +## 0.1.21 + +### New Queries + +* Added a new query `rust/xss`, to detect cross-site scripting security vulnerabilities. +* Added a new query `rust/disabled-certificate-check`, to detect disabled TLS certificate checks. +* Added three example queries (`rust/examples/empty-if`, `rust/examples/simple-sql-injection` and `rust/examples/simple-constant-password`) to help developers learn to write CodeQL queries for Rust. + +### Minor Analysis Improvements + +* The `rust/access-invalid-pointer` query has been improved with new flow sources and barriers. + +## 0.1.20 + +### Minor Analysis Improvements + +* Taint flow barriers have been added to the `rust/regex-injection`, `rust/sql-injection` and `rust/log-injection`, reducing the frequency of false positive results for these queries. + ## 0.1.19 ### Minor Analysis Improvements diff --git a/rust/ql/src/change-notes/released/0.1.20.md b/rust/ql/src/change-notes/released/0.1.20.md new file mode 100644 index 000000000000..a29940bfb7cf --- /dev/null +++ b/rust/ql/src/change-notes/released/0.1.20.md @@ -0,0 +1,5 @@ +## 0.1.20 + +### Minor Analysis Improvements + +* Taint flow barriers have been added to the `rust/regex-injection`, `rust/sql-injection` and `rust/log-injection`, reducing the frequency of false positive results for these queries. diff --git a/rust/ql/src/change-notes/released/0.1.21.md b/rust/ql/src/change-notes/released/0.1.21.md new file mode 100644 index 000000000000..6fd41f2d6c40 --- /dev/null +++ b/rust/ql/src/change-notes/released/0.1.21.md @@ -0,0 +1,11 @@ +## 0.1.21 + +### New Queries + +* Added a new query `rust/xss`, to detect cross-site scripting security vulnerabilities. +* Added a new query `rust/disabled-certificate-check`, to detect disabled TLS certificate checks. +* Added three example queries (`rust/examples/empty-if`, `rust/examples/simple-sql-injection` and `rust/examples/simple-constant-password`) to help developers learn to write CodeQL queries for Rust. + +### Minor Analysis Improvements + +* The `rust/access-invalid-pointer` query has been improved with new flow sources and barriers. diff --git a/rust/ql/src/change-notes/released/0.1.22.md b/rust/ql/src/change-notes/released/0.1.22.md new file mode 100644 index 000000000000..26e5511ae0c2 --- /dev/null +++ b/rust/ql/src/change-notes/released/0.1.22.md @@ -0,0 +1,3 @@ +## 0.1.22 + +No user-facing changes. diff --git a/rust/ql/src/change-notes/released/0.1.23.md b/rust/ql/src/change-notes/released/0.1.23.md new file mode 100644 index 000000000000..3e1036afffa1 --- /dev/null +++ b/rust/ql/src/change-notes/released/0.1.23.md @@ -0,0 +1,3 @@ +## 0.1.23 + +No user-facing changes. diff --git a/rust/ql/src/codeql-pack.release.yml b/rust/ql/src/codeql-pack.release.yml index de6e4c490684..484c6d90798c 100644 --- a/rust/ql/src/codeql-pack.release.yml +++ b/rust/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.19 +lastReleaseVersion: 0.1.23 diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index da14aa08a024..f82c29891191 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.19 +version: 0.1.23 groups: - rust - queries diff --git a/rust/ql/src/queries/security/CWE-079/XSS.qhelp b/rust/ql/src/queries/security/CWE-079/XSS.qhelp new file mode 100644 index 000000000000..13b7c026f3c4 --- /dev/null +++ b/rust/ql/src/queries/security/CWE-079/XSS.qhelp @@ -0,0 +1,48 @@ + + + + +

    Directly writing user input (for example, an HTTP request parameter) to a webpage, +without properly sanitizing the input first, allows for a cross-site +scripting vulnerability.

    +
    + + +

    To guard against cross-site scripting, consider encoding/escaping the untrusted +input before including it in the HTML.

    +
    + + + +

    The following example shows a simple web handler that writes a URL path parameter +directly to an HTML response, leaving the website vulnerable to cross-site +scripting:

    + + + +

    To fix this vulnerability, the user input should be HTML-encoded before being +included in the response. In the following example, encode_text from +the html_escape +crate is used to achieve this:

    + + + +
    + + +
  • + OWASP: + +Cross Site Scripting Prevention Cheat Sheet. +
  • +
  • + Wikipedia: Cross-site scripting. +
  • +
  • + OWASP: + Cross Site Scripting (XSS). +
  • +
    + diff --git a/rust/ql/src/queries/security/CWE-079/XSS.ql b/rust/ql/src/queries/security/CWE-079/XSS.ql new file mode 100644 index 000000000000..3c43f5043c74 --- /dev/null +++ b/rust/ql/src/queries/security/CWE-079/XSS.ql @@ -0,0 +1,42 @@ +/** + * @name Cross-site scripting + * @description Writing user input directly to a webpage + * allows for a cross-site scripting vulnerability. + * @kind path-problem + * @problem.severity error + * @security-severity 6.1 + * @precision high + * @id rust/xss + * @tags security + * external/cwe/cwe-079 + * external/cwe/cwe-116 + */ + +import rust +import codeql.rust.dataflow.DataFlow +import codeql.rust.dataflow.TaintTracking +import codeql.rust.security.XssExtensions + +/** + * A taint configuration for tainted data that reaches an XSS sink. + */ +module XssConfig implements DataFlow::ConfigSig { + import Xss + + predicate isSource(DataFlow::Node node) { node instanceof Source } + + predicate isSink(DataFlow::Node node) { node instanceof Sink } + + predicate isBarrier(DataFlow::Node barrier) { barrier instanceof Barrier } + + predicate observeDiffInformedIncrementalMode() { any() } +} + +module XssFlow = TaintTracking::Global; + +import XssFlow::PathGraph + +from XssFlow::PathNode sourceNode, XssFlow::PathNode sinkNode +where XssFlow::flowPath(sourceNode, sinkNode) +select sinkNode.getNode(), sourceNode, sinkNode, "Cross-site scripting vulnerability due to a $@.", + sourceNode.getNode(), "user-provided value" diff --git a/rust/ql/src/queries/security/CWE-079/XSSBad.rs b/rust/ql/src/queries/security/CWE-079/XSSBad.rs new file mode 100644 index 000000000000..a8f08e0de7aa --- /dev/null +++ b/rust/ql/src/queries/security/CWE-079/XSSBad.rs @@ -0,0 +1,21 @@ +use actix_web::{web, HttpResponse, Result}; + +// BAD: User input is directly included in HTML response without sanitization +async fn vulnerable_handler(path: web::Path) -> impl Responder { + let user_input = path.into_inner(); + + let html = format!( + r#" + + + Welcome + +

    Hello, {}!

    + + + "#, + user_input + ); + + Html::new(html) // Unsafe: User input included directly in the response +} diff --git a/rust/ql/src/queries/security/CWE-079/XSSGood.rs b/rust/ql/src/queries/security/CWE-079/XSSGood.rs new file mode 100644 index 000000000000..de62691f79c2 --- /dev/null +++ b/rust/ql/src/queries/security/CWE-079/XSSGood.rs @@ -0,0 +1,21 @@ +use actix_web::{web, HttpResponse, Result}; + +// GOOD: Manual HTML encoding using an `html_escape::encode_text` function +async fn safe_handler_with_encoding(path: web::Path) -> impl Responder { + let user_input = path.into_inner(); + let escaped_input = html_escape::encode_text(&user_input); + let html = format!( + r#" + + + Welcome + +

    Hello, {}!

    + + + "#, + escaped_input + ); + + Html::new(html) // Safe: user input is HTML-encoded +} diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp new file mode 100644 index 000000000000..1824f6e78dfa --- /dev/null +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp @@ -0,0 +1,42 @@ + + + + +

    +The danger_accept_invalid_certs option on TLS connectors and HTTP clients controls whether certificate verification is performed. If this option is set to true, the client will accept any certificate, making it susceptible to man-in-the-middle attacks. +

    +

    +Similarly, the danger_accept_invalid_hostnames option controls whether hostname verification is performed. If this option is set to true, the client will accept any valid certificate regardless of the site that certificate is for, again making it susceptible to man-in-the-middle attacks. +

    +
    + + +

    +Do not set danger_accept_invalid_certs or danger_accept_invalid_hostnames to true, except in controlled environments such as tests. In production, always ensure certificate and hostname verification is enabled to prevent security risks. +

    +
    + + +

    +The following code snippet shows a function that creates an HTTP client with certificate verification disabled: +

    + +

    +In production code, always configure clients to verify certificates: +

    + +
    + +
  • +Rust native-tls crate: TlsConnectorBuilder. +
  • +
  • +Rust reqwest crate: ClientBuilder. +
  • +
  • +SSL.com: Browsers and Certificate Validation. +
  • +
    +
    diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql new file mode 100644 index 000000000000..ae22a3c9d2c0 --- /dev/null +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql @@ -0,0 +1,47 @@ +/** + * @name Disabled TLS certificate check + * @description An application that disables TLS certificate checking is more vulnerable to + * man-in-the-middle attacks. + * @kind path-problem + * @problem.severity warning + * @security-severity 7.5 + * @precision high + * @id rust/disabled-certificate-check + * @tags security + * external/cwe/cwe-295 + */ + +import rust +import codeql.rust.dataflow.DataFlow +import codeql.rust.dataflow.TaintTracking +import codeql.rust.security.DisabledCertificateCheckExtensions +import codeql.rust.Concepts + +/** + * A taint configuration for disabled TLS certificate checks. + */ +module DisabledCertificateCheckConfig implements DataFlow::ConfigSig { + import DisabledCertificateCheckExtensions + + predicate isSource(DataFlow::Node node) { + // the constant `true` + node.asExpr().(BooleanLiteralExpr).getTextValue() = "true" + or + // a value controlled by a potential attacker + node instanceof ActiveThreatModelSource + } + + predicate isSink(DataFlow::Node node) { node instanceof Sink } + + predicate observeDiffInformedIncrementalMode() { any() } +} + +module DisabledCertificateCheckFlow = TaintTracking::Global; + +import DisabledCertificateCheckFlow::PathGraph + +from + DisabledCertificateCheckFlow::PathNode sourceNode, DisabledCertificateCheckFlow::PathNode sinkNode +where DisabledCertificateCheckFlow::flowPath(sourceNode, sinkNode) +select sinkNode.getNode(), sourceNode, sinkNode, + "Disabling TLS certificate validation can expose the application to man-in-the-middle attacks." diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckBad.rs b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckBad.rs new file mode 100644 index 000000000000..9e4102c64ccb --- /dev/null +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckBad.rs @@ -0,0 +1,6 @@ +// BAD: Disabling certificate validation in Rust + +let _client = reqwest::Client::builder() + .danger_accept_invalid_certs(true) // disables certificate validation + .build() + .unwrap(); diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckGood.rs b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckGood.rs new file mode 100644 index 000000000000..c726a756c380 --- /dev/null +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckGood.rs @@ -0,0 +1,10 @@ +// GOOD: Certificate validation is enabled (default) + +let _client = reqwest::Client::builder() + .danger_accept_invalid_certs(false) // certificate validation enabled explicitly + .build() + .unwrap(); + +let _client = native_tls::TlsConnector::builder() // certificate validation enabled by default + .build() + .unwrap(); diff --git a/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql b/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql index b1c56114c7bd..1e3ae49f56f9 100644 --- a/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql +++ b/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql @@ -37,7 +37,7 @@ module CleartextLoggingConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { // flow from `a` to `&a` - node2.asExpr().getExpr().(RefExpr).getExpr() = node1.asExpr().getExpr() + node2.asExpr().(RefExpr).getExpr() = node1.asExpr() } predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { diff --git a/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql b/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql index dd09f2f8f20b..d5aa87ad7090 100644 --- a/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql +++ b/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql @@ -36,7 +36,7 @@ module CleartextStorageDatabaseConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { // flow from `a` to `&a` - node2.asExpr().getExpr().(RefExpr).getExpr() = node1.asExpr().getExpr() + node2.asExpr().(RefExpr).getExpr() = node1.asExpr() } predicate observeDiffInformedIncrementalMode() { any() } diff --git a/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql b/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql index 3fb4924470fe..61996adaf059 100644 --- a/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql +++ b/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql @@ -39,9 +39,9 @@ module InsecureCookieConfig implements DataFlow::ConfigSig { node instanceof Sink } - predicate isBarrier(DataFlow::Node node) { - // setting the 'secure' attribute to true - cookieSetNode(node, "secure", true) + predicate isBarrierIn(DataFlow::Node node) { + // setting the 'secure' attribute + cookieSetNode(node, "secure", _) or node instanceof Barrier } diff --git a/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql index 65c6d8616381..b9bf80c94749 100644 --- a/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql +++ b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql @@ -23,40 +23,37 @@ import AccessAfterLifetimeFlow::PathGraph * lifetime has ended. */ module AccessAfterLifetimeConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node node) { node instanceof AccessAfterLifetime::Source } + predicate isSource(DataFlow::Node node) { + node instanceof AccessAfterLifetime::Source and + // exclude cases with sources in macros, since these results are difficult to interpret + not node.asExpr().isFromMacroExpansion() + } - predicate isSink(DataFlow::Node node) { node instanceof AccessAfterLifetime::Sink } + predicate isSink(DataFlow::Node node) { + node instanceof AccessAfterLifetime::Sink and + // exclude cases with sinks in macros, since these results are difficult to interpret + not node.asExpr().isFromMacroExpansion() and + // include only results inside `unsafe` blocks, as other results tend to be false positives + ( + node.asExpr().getEnclosingBlock*().isUnsafe() or + node.asExpr().getEnclosingCallable().(Function).isUnsafe() + ) + } predicate isBarrier(DataFlow::Node barrier) { barrier instanceof AccessAfterLifetime::Barrier } predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSourceLocation(DataFlow::Node source) { - exists(Variable target, DataFlow::Node sink | + exists(Variable target | + AccessAfterLifetime::sourceValueScope(source, target, _) and result = [target.getLocation(), source.getLocation()] - | - isSink(sink) and - narrowDereferenceAfterLifetime(source, sink, target) ) } } module AccessAfterLifetimeFlow = TaintTracking::Global; -pragma[inline] -predicate narrowDereferenceAfterLifetime(DataFlow::Node source, DataFlow::Node sink, Variable target) { - // check that the dereference is outside the lifetime of the target - AccessAfterLifetime::dereferenceAfterLifetime(source, sink, target) and - // include only results inside `unsafe` blocks, as other results tend to be false positives - ( - sink.asExpr().getExpr().getEnclosingBlock*().isUnsafe() or - sink.asExpr().getExpr().getEnclosingCallable().(Function).isUnsafe() - ) and - // exclude cases with sources / sinks in macros, since these results are difficult to interpret - not source.asExpr().getExpr().isFromMacroExpansion() and - not sink.asExpr().getExpr().isFromMacroExpansion() -} - from AccessAfterLifetimeFlow::PathNode sourceNode, AccessAfterLifetimeFlow::PathNode sinkNode, Variable target @@ -64,6 +61,6 @@ where // flow from a pointer or reference to the dereference AccessAfterLifetimeFlow::flowPath(sourceNode, sinkNode) and // check that the dereference is outside the lifetime of the target - narrowDereferenceAfterLifetime(sourceNode.getNode(), sinkNode.getNode(), target) + AccessAfterLifetime::dereferenceAfterLifetime(sourceNode.getNode(), sinkNode.getNode(), target) select sinkNode.getNode(), sourceNode, sinkNode, "Access of a pointer to $@ after its lifetime has ended.", target, target.toString() diff --git a/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql b/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql index 5177e1fb0e03..3c10e2b197a4 100644 --- a/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql +++ b/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql @@ -22,11 +22,13 @@ import AccessInvalidPointerFlow::PathGraph * A data flow configuration for accesses to invalid pointers. */ module AccessInvalidPointerConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node node) { node instanceof AccessInvalidPointer::Source } + import AccessInvalidPointer - predicate isSink(DataFlow::Node node) { node instanceof AccessInvalidPointer::Sink } + predicate isSource(DataFlow::Node node) { node instanceof Source } - predicate isBarrier(DataFlow::Node barrier) { barrier instanceof AccessInvalidPointer::Barrier } + predicate isSink(DataFlow::Node node) { node instanceof Sink } + + predicate isBarrier(DataFlow::Node barrier) { barrier instanceof Barrier } predicate isBarrierOut(DataFlow::Node node) { // make sinks barriers so that we only report the closest instance diff --git a/rust/ql/src/queries/summary/Stats.qll b/rust/ql/src/queries/summary/Stats.qll index 7cd4fd67e24b..d06389fb6a77 100644 --- a/rust/ql/src/queries/summary/Stats.qll +++ b/rust/ql/src/queries/summary/Stats.qll @@ -22,6 +22,7 @@ private import codeql.rust.security.AccessInvalidPointerExtensions private import codeql.rust.security.CleartextLoggingExtensions private import codeql.rust.security.CleartextStorageDatabaseExtensions private import codeql.rust.security.CleartextTransmissionExtensions +private import codeql.rust.security.DisabledCertificateCheckExtensions private import codeql.rust.security.HardcodedCryptographicValueExtensions private import codeql.rust.security.InsecureCookieExtensions private import codeql.rust.security.LogInjectionExtensions @@ -31,6 +32,7 @@ private import codeql.rust.security.TaintedPathExtensions private import codeql.rust.security.UncontrolledAllocationSizeExtensions private import codeql.rust.security.UseOfHttpExtensions private import codeql.rust.security.WeakSensitiveDataHashingExtensions +private import codeql.rust.security.XssExtensions /** * Gets a count of the total number of lines of code in the database. diff --git a/rust/ql/src/queries/unusedentities/UnreachableCode.ql b/rust/ql/src/queries/unusedentities/UnreachableCode.ql index 15a45c6f4b58..bb9092fb5703 100644 --- a/rust/ql/src/queries/unusedentities/UnreachableCode.ql +++ b/rust/ql/src/queries/unusedentities/UnreachableCode.ql @@ -33,7 +33,7 @@ predicate hiddenNode(AstNode n) { n instanceof ControlFlowGraphImpl::PostOrderTree and // location is counter-intuitive not n instanceof MacroExpr or - n.isInMacroExpansion() + n.isFromMacroExpansion() } /** diff --git a/rust/ql/src/queries/unusedentities/UnusedValue.ql b/rust/ql/src/queries/unusedentities/UnusedValue.ql index 14204a2273b7..8ef6b85ebe75 100644 --- a/rust/ql/src/queries/unusedentities/UnusedValue.ql +++ b/rust/ql/src/queries/unusedentities/UnusedValue.ql @@ -18,10 +18,10 @@ from AstNode write, Ssa::Variable v where variableWrite(_, write, v) and not v instanceof DiscardVariable and - not write.isInMacroExpansion() and + not write.isFromMacroExpansion() and not isAllowableUnused(v) and // SSA definitions are only created for live writes - not write = any(Ssa::WriteDefinition def).getWriteAccess().getAstNode() and + not write = any(Ssa::WriteDefinition def).getWriteAccess() and // avoid overlap with the unused variable query not isUnused(v) select write, "Variable $@ is assigned a value that is never used.", v, v.getText() diff --git a/rust/ql/src/queries/unusedentities/UnusedVariable.qll b/rust/ql/src/queries/unusedentities/UnusedVariable.qll index ad75415634c6..c0684636e77b 100644 --- a/rust/ql/src/queries/unusedentities/UnusedVariable.qll +++ b/rust/ql/src/queries/unusedentities/UnusedVariable.qll @@ -36,7 +36,7 @@ class IncompleteCallable extends Callable { */ predicate isAllowableUnused(Variable v) { // in a macro expansion - v.getPat().isInMacroExpansion() + v.getPat().isInMacroExpansion() // TODO: replace with `isFromMacroExpansion()` when false positives have been removed or // declared in an incomplete callable v.getEnclosingCfgScope() instanceof IncompleteCallable diff --git a/rust/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql b/rust/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql index 9dd63e06ea72..38568b02ad4a 100644 --- a/rust/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql +++ b/rust/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture content based summary models. + * @name Capture content based summary models * @description Finds applicable content based summary models to be used by other queries. * @kind diagnostic * @id rust/utils/modelgenerator/contentbased-summary-models diff --git a/rust/ql/src/utils/modelgenerator/CaptureNeutralModels.ql b/rust/ql/src/utils/modelgenerator/CaptureNeutralModels.ql index 556d1624f39d..aade0ea40379 100644 --- a/rust/ql/src/utils/modelgenerator/CaptureNeutralModels.ql +++ b/rust/ql/src/utils/modelgenerator/CaptureNeutralModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture neutral models. + * @name Capture neutral models * @description Finds neutral models to be used by other queries. * @kind diagnostic * @id rust/utils/modelgenerator/neutral-models diff --git a/rust/ql/src/utils/modelgenerator/CaptureSinkModels.ql b/rust/ql/src/utils/modelgenerator/CaptureSinkModels.ql index 989637a867e3..cbd15849b159 100644 --- a/rust/ql/src/utils/modelgenerator/CaptureSinkModels.ql +++ b/rust/ql/src/utils/modelgenerator/CaptureSinkModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture sink models. + * @name Capture sink models * @description Finds public methods that act as sinks as they flow into a known sink. * @kind diagnostic * @id rust/utils/modelgenerator/sink-models diff --git a/rust/ql/src/utils/modelgenerator/CaptureSourceModels.ql b/rust/ql/src/utils/modelgenerator/CaptureSourceModels.ql index 2ffc4894b18c..5403e2e3e509 100644 --- a/rust/ql/src/utils/modelgenerator/CaptureSourceModels.ql +++ b/rust/ql/src/utils/modelgenerator/CaptureSourceModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture source models. + * @name Capture source models * @description Finds APIs that act as sources as they expose already known sources. * @kind diagnostic * @id rust/utils/modelgenerator/source-models diff --git a/rust/ql/src/utils/modelgenerator/CaptureSummaryModels.ql b/rust/ql/src/utils/modelgenerator/CaptureSummaryModels.ql index d0b3152c9be2..48789e722313 100644 --- a/rust/ql/src/utils/modelgenerator/CaptureSummaryModels.ql +++ b/rust/ql/src/utils/modelgenerator/CaptureSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture summary models. + * @name Capture summary models * @description Finds applicable summary models to be used by other queries. * @kind diagnostic * @id rust/utils/modelgenerator/summary-models diff --git a/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll b/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll index 754bb53357a8..420051f4ee1e 100644 --- a/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll +++ b/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll @@ -120,7 +120,7 @@ private module SummaryModelGeneratorInput implements SummaryModelGeneratorInputS } QualifiedCallable getAsExprEnclosingCallable(NodeExtended node) { - result.getFunction() = node.asExpr().getScope() + result.getFunction() = node.asExpr().getEnclosingCfgScope() } Parameter asParameter(NodeExtended node) { result = node.asParameter() } diff --git a/rust/ql/test/extractor-tests/literal/literal.expected b/rust/ql/test/extractor-tests/literal/literal.expected index d229d9684671..bc08d37fc963 100644 --- a/rust/ql/test/extractor-tests/literal/literal.expected +++ b/rust/ql/test/extractor-tests/literal/literal.expected @@ -16,30 +16,32 @@ stringLiteral | literal.rs:21:5:21:8 | r"R" | | literal.rs:22:5:22:11 | "\\\\x52" | | literal.rs:23:5:23:11 | r"\\x52" | +| literal.rs:25:5:29:5 | "\n A normal string literal\n... | +| literal.rs:31:5:34:6 | r#"\n A raw string literal\n ... | integerLiteral -| literal.rs:28:5:28:7 | 123 | | -| literal.rs:29:5:29:10 | 123i32 | i32 | -| literal.rs:30:5:30:10 | 123u32 | u32 | -| literal.rs:31:5:31:11 | 123_u32 | u32 | -| literal.rs:33:5:33:8 | 0xff | | -| literal.rs:34:5:34:11 | 0xff_u8 | u8 | -| literal.rs:35:5:35:12 | 0x01_f32 | | -| literal.rs:36:5:36:11 | 0x01_e3 | | -| literal.rs:38:5:38:8 | 0o70 | | -| literal.rs:39:5:39:12 | 0o70_i16 | i16 | -| literal.rs:41:5:41:25 | 0b1111_1111_1001_0000 | | -| literal.rs:42:5:42:28 | 0b1111_1111_1001_0000i64 | i64 | -| literal.rs:43:5:43:15 | 0b________1 | | -| literal.rs:45:5:45:10 | 0usize | usize | -| literal.rs:48:5:49:10 | 128_i8 | i8 | -| literal.rs:50:5:51:10 | 256_u8 | u8 | +| literal.rs:39:5:39:7 | 123 | | +| literal.rs:40:5:40:10 | 123i32 | i32 | +| literal.rs:41:5:41:10 | 123u32 | u32 | +| literal.rs:42:5:42:11 | 123_u32 | u32 | +| literal.rs:44:5:44:8 | 0xff | | +| literal.rs:45:5:45:11 | 0xff_u8 | u8 | +| literal.rs:46:5:46:12 | 0x01_f32 | | +| literal.rs:47:5:47:11 | 0x01_e3 | | +| literal.rs:49:5:49:8 | 0o70 | | +| literal.rs:50:5:50:12 | 0o70_i16 | i16 | +| literal.rs:52:5:52:25 | 0b1111_1111_1001_0000 | | +| literal.rs:53:5:53:28 | 0b1111_1111_1001_0000i64 | i64 | +| literal.rs:54:5:54:15 | 0b________1 | | +| literal.rs:56:5:56:10 | 0usize | usize | +| literal.rs:59:5:60:10 | 128_i8 | i8 | +| literal.rs:61:5:62:10 | 256_u8 | u8 | floatLiteral -| literal.rs:56:5:56:8 | 5f32 | f32 | -| literal.rs:58:5:58:12 | 123.0f64 | f64 | -| literal.rs:59:5:59:10 | 0.1f64 | f64 | -| literal.rs:60:5:60:10 | 0.1f32 | f32 | -| literal.rs:61:5:61:14 | 12E+99_f64 | f64 | -| literal.rs:62:18:62:19 | 2. | | +| literal.rs:67:5:67:8 | 5f32 | f32 | +| literal.rs:69:5:69:12 | 123.0f64 | f64 | +| literal.rs:70:5:70:10 | 0.1f64 | f64 | +| literal.rs:71:5:71:10 | 0.1f32 | f32 | +| literal.rs:72:5:72:14 | 12E+99_f64 | f64 | +| literal.rs:73:18:73:19 | 2. | | booleanLiteral -| literal.rs:66:5:66:8 | true | -| literal.rs:67:5:67:9 | false | +| literal.rs:77:5:77:8 | true | +| literal.rs:78:5:78:9 | false | diff --git a/rust/ql/test/extractor-tests/literal/literal.rs b/rust/ql/test/extractor-tests/literal/literal.rs index ea4ccdece630..4a91c3e70418 100644 --- a/rust/ql/test/extractor-tests/literal/literal.rs +++ b/rust/ql/test/extractor-tests/literal/literal.rs @@ -21,6 +21,17 @@ fn string_literals() { r"R"; // R "\\x52"; r"\x52"; // \x52 + + " + A normal string literal + across many + lines + "; + + r#" + A raw string literal + across multiple lines + "#; } fn integer_literals() { diff --git a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected index 60e193113cc8..5174e0bd6186 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected @@ -174,7 +174,7 @@ macro_expansion.rs: # 1| getPath(): [Path] MyTrait # 1| getSegment(): [PathSegment] MyTrait # 1| getIdentifier(): [NameRef] MyTrait -# 3| getItem(1): [Function] fn foo +# 3| getItem(1): [Function] (item with attribute macro expansion) # 4| getAttributeMacroExpansion(): [MacroItems] MacroItems # 4| getItem(0): [Function] fn foo # 4| getParamList(): [ParamList] ParamList @@ -190,7 +190,7 @@ macro_expansion.rs: # 5| getIdentifier(): [NameRef] concat # 5| getTokenTree(): [TokenTree] TokenTree # 5| getMacroCallExpansion(): [StringLiteralExpr] "Hello world!" -# 7| getStatement(1): [Function] fn inner +# 7| getStatement(1): [Function] (item with attribute macro expansion) # 8| getAttributeMacroExpansion(): [MacroItems] MacroItems # 8| getItem(0): [Function] fn inner_0 # 8| getParamList(): [ParamList] ParamList @@ -202,16 +202,12 @@ macro_expansion.rs: # 8| getFunctionBody(): [BlockExpr] { ... } # 8| getStmtList(): [StmtList] StmtList # 8| getName(): [Name] inner_1 -# 8| getParamList(): [ParamList] ParamList # 7| getAttr(0): [Attr] Attr # 7| getMeta(): [Meta] Meta # 7| getPath(): [Path] repeat # 7| getSegment(): [PathSegment] repeat # 7| getIdentifier(): [NameRef] repeat # 7| getTokenTree(): [TokenTree] TokenTree -# 8| getFunctionBody(): [BlockExpr] { ... } -# 8| getStmtList(): [StmtList] StmtList -# 8| getName(): [Name] inner # 10| getStatement(2): [ExprStmt] ExprStmt # 10| getExpr(): [CallExpr] inner_0(...) # 10| getArgList(): [ArgList] ArgList @@ -242,7 +238,7 @@ macro_expansion.rs: # 5| getIdentifier(): [NameRef] concat # 5| getTokenTree(): [TokenTree] TokenTree # 5| getMacroCallExpansion(): [StringLiteralExpr] "Hello world!" -# 7| getStatement(1): [Function] fn inner +# 7| getStatement(1): [Function] (item with attribute macro expansion) # 8| getAttributeMacroExpansion(): [MacroItems] MacroItems # 8| getItem(0): [Function] fn inner_0 # 8| getParamList(): [ParamList] ParamList @@ -254,16 +250,12 @@ macro_expansion.rs: # 8| getFunctionBody(): [BlockExpr] { ... } # 8| getStmtList(): [StmtList] StmtList # 8| getName(): [Name] inner_1 -# 8| getParamList(): [ParamList] ParamList # 7| getAttr(0): [Attr] Attr # 7| getMeta(): [Meta] Meta # 7| getPath(): [Path] repeat # 7| getSegment(): [PathSegment] repeat # 7| getIdentifier(): [NameRef] repeat # 7| getTokenTree(): [TokenTree] TokenTree -# 8| getFunctionBody(): [BlockExpr] { ... } -# 8| getStmtList(): [StmtList] StmtList -# 8| getName(): [Name] inner # 10| getStatement(2): [ExprStmt] ExprStmt # 10| getExpr(): [CallExpr] inner_0(...) # 10| getArgList(): [ArgList] ArgList @@ -280,53 +272,14 @@ macro_expansion.rs: # 11| getIdentifier(): [NameRef] inner_1 # 4| getName(): [Name] foo_new # 4| getVisibility(): [Visibility] Visibility -# 4| getParamList(): [ParamList] ParamList # 3| getAttr(0): [Attr] Attr # 3| getMeta(): [Meta] Meta # 3| getPath(): [Path] add_one # 3| getSegment(): [PathSegment] add_one # 3| getIdentifier(): [NameRef] add_one -# 4| getFunctionBody(): [BlockExpr] { ... } -# 4| getStmtList(): [StmtList] StmtList -# 5| getStatement(0): [ExprStmt] ExprStmt -# 5| getExpr(): [AssignmentExpr] ... = ... -# 5| getLhs(): [UnderscoreExpr] _ -# 5| getRhs(): [MacroExpr] MacroExpr -# 5| getMacroCall(): [MacroCall] concat!... -# 5| getPath(): [Path] concat -# 5| getSegment(): [PathSegment] concat -# 5| getIdentifier(): [NameRef] concat -# 5| getTokenTree(): [TokenTree] TokenTree -# 7| getStatement(1): [Function] fn inner -# 8| getParamList(): [ParamList] ParamList -# 7| getAttr(0): [Attr] Attr -# 7| getMeta(): [Meta] Meta -# 7| getPath(): [Path] repeat -# 7| getSegment(): [PathSegment] repeat -# 7| getIdentifier(): [NameRef] repeat -# 7| getTokenTree(): [TokenTree] TokenTree -# 8| getFunctionBody(): [BlockExpr] { ... } -# 8| getStmtList(): [StmtList] StmtList -# 8| getName(): [Name] inner -# 10| getStatement(2): [ExprStmt] ExprStmt -# 10| getExpr(): [CallExpr] inner_0(...) -# 10| getArgList(): [ArgList] ArgList -# 10| getFunction(): [PathExpr] inner_0 -# 10| getPath(): [Path] inner_0 -# 10| getSegment(): [PathSegment] inner_0 -# 10| getIdentifier(): [NameRef] inner_0 -# 11| getStatement(3): [ExprStmt] ExprStmt -# 11| getExpr(): [CallExpr] inner_1(...) -# 11| getArgList(): [ArgList] ArgList -# 11| getFunction(): [PathExpr] inner_1 -# 11| getPath(): [Path] inner_1 -# 11| getSegment(): [PathSegment] inner_1 -# 11| getIdentifier(): [NameRef] inner_1 -# 4| getName(): [Name] foo -# 4| getVisibility(): [Visibility] Visibility -# 14| getItem(2): [Function] fn bar +# 14| getItem(2): [Function] (item with attribute macro expansion) # 15| getAttributeMacroExpansion(): [MacroItems] MacroItems -# 15| getItem(0): [Function] fn bar_0 +# 15| getItem(0): [Function] (item with attribute macro expansion) # 16| getAttributeMacroExpansion(): [MacroItems] MacroItems # 16| getItem(0): [Function] fn bar_0 # 16| getParamList(): [ParamList] ParamList @@ -340,17 +293,12 @@ macro_expansion.rs: # 16| getStmtList(): [StmtList] StmtList # 16| getName(): [Name] bar_0_new # 16| getVisibility(): [Visibility] Visibility -# 16| getParamList(): [ParamList] ParamList # 15| getAttr(0): [Attr] Attr # 15| getMeta(): [Meta] Meta # 15| getPath(): [Path] add_one # 15| getSegment(): [PathSegment] add_one # 15| getIdentifier(): [NameRef] add_one -# 16| getFunctionBody(): [BlockExpr] { ... } -# 16| getStmtList(): [StmtList] StmtList -# 16| getName(): [Name] bar_0 -# 16| getVisibility(): [Visibility] Visibility -# 15| getItem(1): [Function] fn bar_1 +# 15| getItem(1): [Function] (item with attribute macro expansion) # 16| getAttributeMacroExpansion(): [MacroItems] MacroItems # 16| getItem(0): [Function] fn bar_1 # 16| getParamList(): [ParamList] ParamList @@ -364,17 +312,11 @@ macro_expansion.rs: # 16| getStmtList(): [StmtList] StmtList # 16| getName(): [Name] bar_1_new # 16| getVisibility(): [Visibility] Visibility -# 16| getParamList(): [ParamList] ParamList # 15| getAttr(0): [Attr] Attr # 15| getMeta(): [Meta] Meta # 15| getPath(): [Path] add_one # 15| getSegment(): [PathSegment] add_one # 15| getIdentifier(): [NameRef] add_one -# 16| getFunctionBody(): [BlockExpr] { ... } -# 16| getStmtList(): [StmtList] StmtList -# 16| getName(): [Name] bar_1 -# 16| getVisibility(): [Visibility] Visibility -# 16| getParamList(): [ParamList] ParamList # 14| getAttr(0): [Attr] Attr # 14| getMeta(): [Meta] Meta # 14| getPath(): [Path] repeat @@ -386,22 +328,13 @@ macro_expansion.rs: # 15| getPath(): [Path] add_one # 15| getSegment(): [PathSegment] add_one # 15| getIdentifier(): [NameRef] add_one -# 16| getFunctionBody(): [BlockExpr] { ... } -# 16| getStmtList(): [StmtList] StmtList -# 16| getName(): [Name] bar -# 16| getVisibility(): [Visibility] Visibility -# 18| getItem(3): [Function] fn baz +# 18| getItem(3): [Function] (item with attribute macro expansion) # 18| getAttributeMacroExpansion(): [MacroItems] MacroItems -# 19| getParamList(): [ParamList] ParamList # 18| getAttr(0): [Attr] Attr # 18| getMeta(): [Meta] Meta # 18| getPath(): [Path] erase # 18| getSegment(): [PathSegment] erase # 18| getIdentifier(): [NameRef] erase -# 19| getFunctionBody(): [BlockExpr] { ... } -# 19| getStmtList(): [StmtList] StmtList -# 19| getName(): [Name] baz -# 19| getVisibility(): [Visibility] Visibility # 22| getItem(4): [MacroRules] MacroRules # 22| getName(): [Name] hello # 22| getTokenTree(): [TokenTree] TokenTree @@ -410,7 +343,7 @@ macro_expansion.rs: # 28| getVisibility(): [Visibility] Visibility # 30| getItem(6): [Impl] impl S { ... } # 30| getAssocItemList(): [AssocItemList] AssocItemList -# 31| getAssocItem(0): [Function] fn bzz +# 31| getAssocItem(0): [Function] (item with attribute macro expansion) # 32| getAttributeMacroExpansion(): [MacroItems] MacroItems # 32| getItem(0): [Function] fn bzz_0 # 32| getParamList(): [ParamList] ParamList @@ -556,24 +489,12 @@ macro_expansion.rs: # 31| getIdentifier(): [NameRef] _print # 32| getName(): [Name] bzz_2 # 32| getVisibility(): [Visibility] Visibility -# 32| getParamList(): [ParamList] ParamList # 31| getAttr(0): [Attr] Attr # 31| getMeta(): [Meta] Meta # 31| getPath(): [Path] repeat # 31| getSegment(): [PathSegment] repeat # 31| getIdentifier(): [NameRef] repeat # 31| getTokenTree(): [TokenTree] TokenTree -# 32| getFunctionBody(): [BlockExpr] { ... } -# 32| getStmtList(): [StmtList] StmtList -# 33| getStatement(0): [ExprStmt] ExprStmt -# 33| getExpr(): [MacroExpr] MacroExpr -# 33| getMacroCall(): [MacroCall] hello!... -# 33| getPath(): [Path] hello -# 33| getSegment(): [PathSegment] hello -# 33| getIdentifier(): [NameRef] hello -# 33| getTokenTree(): [TokenTree] TokenTree -# 32| getName(): [Name] bzz -# 32| getVisibility(): [Visibility] Visibility # 30| getSelfTy(): [PathTypeRepr] S # 30| getPath(): [Path] S # 30| getSegment(): [PathSegment] S @@ -739,7 +660,7 @@ macro_expansion.rs: # 71| getSegment(): [PathSegment] i32 # 71| getIdentifier(): [NameRef] i32 # 72| getTailExpr(): [CastExpr] a as ... -# 72| getExpr(): [PathExpr,VariableAccess] a +# 72| getExpr(): [VariableAccess] a # 72| getPath(): [Path] a # 72| getSegment(): [PathSegment] a # 72| getIdentifier(): [NameRef] a @@ -817,7 +738,7 @@ macro_expansion.rs: # 84| getFunctionBody(): [BlockExpr] { ... } # 84| getStmtList(): [StmtList] StmtList # 84| getTailExpr(): [MatchExpr] match self { ... } -# 83| getScrutinee(): [PathExpr,VariableAccess] self +# 83| getScrutinee(): [VariableAccess] self # 83| getPath(): [Path] self # 83| getSegment(): [PathSegment] self # 83| getIdentifier(): [NameRef] self @@ -830,7 +751,7 @@ macro_expansion.rs: # 85| getArgList(): [ArgList] ArgList # 83| getArg(0): [StringLiteralExpr] "field" # 85| getArg(1): [RefExpr] &field -# 85| getExpr(): [PathExpr,VariableAccess] field +# 85| getExpr(): [VariableAccess] field # 85| getPath(): [Path] field # 85| getSegment(): [PathSegment] field # 85| getIdentifier(): [NameRef] field @@ -839,7 +760,7 @@ macro_expansion.rs: # 83| getArgList(): [ArgList] ArgList # 83| getArg(0): [StringLiteralExpr] "MyDerive" # 83| getIdentifier(): [NameRef] debug_struct -# 83| getReceiver(): [PathExpr,VariableAccess] f +# 83| getReceiver(): [VariableAccess] f # 83| getPath(): [Path] f # 83| getSegment(): [PathSegment] f # 83| getIdentifier(): [NameRef] f @@ -915,11 +836,11 @@ macro_expansion.rs: # 89| getStmtList(): [StmtList] StmtList # 89| getTailExpr(): [MatchExpr] match ... { ... } # 88| getScrutinee(): [TupleExpr] TupleExpr -# 88| getField(0): [PathExpr,VariableAccess] self +# 88| getField(0): [VariableAccess] self # 88| getPath(): [Path] self # 88| getSegment(): [PathSegment] self # 88| getIdentifier(): [NameRef] self -# 88| getField(1): [PathExpr,VariableAccess] other +# 88| getField(1): [VariableAccess] other # 88| getPath(): [Path] other # 88| getSegment(): [PathSegment] other # 88| getIdentifier(): [NameRef] other @@ -1043,7 +964,7 @@ macro_expansion.rs: # 98| getParamList(): [ParamList] ParamList # 99| getFunctionBody(): [BlockExpr] { ... } # 99| getStmtList(): [StmtList] StmtList -# 99| getTailExpr(): [PathExpr] CONST_MyDeriveUnion +# 99| getTailExpr(): [ConstAccess] CONST_MyDeriveUnion # 99| getPath(): [Path] CONST_MyDeriveUnion # 99| getSegment(): [PathSegment] CONST_MyDeriveUnion # 99| getIdentifier(): [NameRef] CONST_MyDeriveUnion @@ -1155,7 +1076,7 @@ proc_macro.rs: # 6| getMacroCallExpansion(): [MatchExpr] match ... { ... } # 6| getScrutinee(): [CallExpr] ...::parse::<...>(...) # 6| getArgList(): [ArgList] ArgList -# 6| getArg(0): [PathExpr,VariableAccess] attr +# 6| getArg(0): [VariableAccess] attr # 6| getPath(): [Path] attr # 6| getSegment(): [PathSegment] attr # 6| getIdentifier(): [NameRef] attr @@ -1177,7 +1098,7 @@ proc_macro.rs: # 6| getIdentifier(): [NameRef] parse # 6| getMatchArmList(): [MatchArmList] MatchArmList # 6| getArm(0): [MatchArm] ... => data -# 6| getExpr(): [PathExpr,VariableAccess] data +# 6| getExpr(): [VariableAccess] data # 6| getPath(): [Path] data # 6| getSegment(): [PathSegment] data # 6| getIdentifier(): [NameRef] data @@ -1203,7 +1124,7 @@ proc_macro.rs: # 6| getArg(0): [MethodCallExpr] err.to_compile_error() # 6| getArgList(): [ArgList] ArgList # 6| getIdentifier(): [NameRef] to_compile_error -# 6| getReceiver(): [PathExpr,VariableAccess] err +# 6| getReceiver(): [VariableAccess] err # 6| getPath(): [Path] err # 6| getSegment(): [PathSegment] err # 6| getIdentifier(): [NameRef] err @@ -1247,7 +1168,7 @@ proc_macro.rs: # 7| getMacroCallExpansion(): [MatchExpr] match ... { ... } # 7| getScrutinee(): [CallExpr] ...::parse::<...>(...) # 7| getArgList(): [ArgList] ArgList -# 7| getArg(0): [PathExpr,VariableAccess] item +# 7| getArg(0): [VariableAccess] item # 7| getPath(): [Path] item # 7| getSegment(): [PathSegment] item # 7| getIdentifier(): [NameRef] item @@ -1269,7 +1190,7 @@ proc_macro.rs: # 7| getIdentifier(): [NameRef] parse # 7| getMatchArmList(): [MatchArmList] MatchArmList # 7| getArm(0): [MatchArm] ... => data -# 7| getExpr(): [PathExpr,VariableAccess] data +# 7| getExpr(): [VariableAccess] data # 7| getPath(): [Path] data # 7| getSegment(): [PathSegment] data # 7| getIdentifier(): [NameRef] data @@ -1295,7 +1216,7 @@ proc_macro.rs: # 7| getArg(0): [MethodCallExpr] err.to_compile_error() # 7| getArgList(): [ArgList] ArgList # 7| getIdentifier(): [NameRef] to_compile_error -# 7| getReceiver(): [PathExpr,VariableAccess] err +# 7| getReceiver(): [VariableAccess] err # 7| getPath(): [Path] err # 7| getSegment(): [PathSegment] err # 7| getIdentifier(): [NameRef] err @@ -1352,7 +1273,7 @@ proc_macro.rs: # 10| getInitializer(): [MethodCallExpr] ast.clone() # 10| getArgList(): [ArgList] ArgList # 10| getIdentifier(): [NameRef] clone -# 10| getReceiver(): [PathExpr,VariableAccess] ast +# 10| getReceiver(): [VariableAccess] ast # 10| getPath(): [Path] ast # 10| getSegment(): [PathSegment] ast # 10| getIdentifier(): [NameRef] ast @@ -1362,7 +1283,7 @@ proc_macro.rs: # 11| getExpr(): [AssignmentExpr] ... = ... # 11| getLhs(): [FieldExpr] ... .ident # 11| getContainer(): [FieldExpr] new_ast.sig -# 11| getContainer(): [PathExpr,VariableAccess] new_ast +# 11| getContainer(): [VariableAccess] new_ast # 11| getPath(): [Path] new_ast # 11| getSegment(): [PathSegment] new_ast # 11| getIdentifier(): [NameRef] new_ast @@ -1399,14 +1320,14 @@ proc_macro.rs: # 11| getArg(0): [FormatArgsArg] FormatArgsArg # 11| getExpr(): [FieldExpr] ... .ident # 11| getContainer(): [FieldExpr] ast.sig -# 11| getContainer(): [PathExpr,VariableAccess] ast +# 11| getContainer(): [VariableAccess] ast # 11| getPath(): [Path] ast # 11| getSegment(): [PathSegment] ast # 11| getIdentifier(): [NameRef] ast # 11| getIdentifier(): [NameRef] sig # 11| getIdentifier(): [NameRef] ident # 11| getArg(1): [FormatArgsArg] FormatArgsArg -# 11| getExpr(): [PathExpr,VariableAccess] i +# 11| getExpr(): [VariableAccess] i # 11| getPath(): [Path] i # 11| getSegment(): [PathSegment] i # 11| getIdentifier(): [NameRef] i @@ -1438,7 +1359,7 @@ proc_macro.rs: # 11| getIdentifier(): [NameRef] span # 11| getReceiver(): [FieldExpr] ... .ident # 11| getContainer(): [FieldExpr] ast.sig -# 11| getContainer(): [PathExpr,VariableAccess] ast +# 11| getContainer(): [VariableAccess] ast # 11| getPath(): [Path] ast # 11| getSegment(): [PathSegment] ast # 11| getIdentifier(): [NameRef] ast @@ -1454,14 +1375,14 @@ proc_macro.rs: # 11| getIdentifier(): [NameRef] Ident # 11| getSegment(): [PathSegment] new # 11| getIdentifier(): [NameRef] new -# 12| getTailExpr(): [PathExpr,VariableAccess] new_ast +# 12| getTailExpr(): [VariableAccess] new_ast # 12| getPath(): [Path] new_ast # 12| getSegment(): [PathSegment] new_ast # 12| getIdentifier(): [NameRef] new_ast # 9| getIdentifier(): [NameRef] map # 8| getReceiver(): [ParenExpr] (...) # 8| getExpr(): [RangeExpr] 0..number -# 8| getEnd(): [PathExpr,VariableAccess] number +# 8| getEnd(): [VariableAccess] number # 8| getPath(): [Path] number # 8| getSegment(): [PathSegment] number # 8| getIdentifier(): [NameRef] number @@ -1693,7 +1614,7 @@ proc_macro.rs: # 16| getInitializer(): [MethodCallExpr] items.quote_into_iter() # 15| getArgList(): [ArgList] ArgList # 15| getIdentifier(): [NameRef] quote_into_iter -# 16| getReceiver(): [PathExpr,VariableAccess] items +# 16| getReceiver(): [VariableAccess] items # 16| getPath(): [Path] items # 16| getSegment(): [PathSegment] items # 16| getIdentifier(): [NameRef] items @@ -1704,11 +1625,11 @@ proc_macro.rs: # 15| getName(): [Name] i # 15| getStatement(1): [LetStmt] let ... = ... # 15| getInitializer(): [BinaryExpr] ... | ... -# 15| getLhs(): [PathExpr,VariableAccess] has_iter +# 15| getLhs(): [VariableAccess] has_iter # 15| getPath(): [Path] has_iter # 15| getSegment(): [PathSegment] has_iter # 15| getIdentifier(): [NameRef] has_iter -# 15| getRhs(): [PathExpr,VariableAccess] i +# 15| getRhs(): [VariableAccess] i # 15| getPath(): [Path] i # 15| getSegment(): [PathSegment] i # 15| getIdentifier(): [NameRef] i @@ -1725,7 +1646,7 @@ proc_macro.rs: # 16| getTokenTree(): [TokenTree] TokenTree # 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr # 15| getStatement(3): [LetStmt] let _ = has_iter -# 15| getInitializer(): [PathExpr,VariableAccess] has_iter +# 15| getInitializer(): [VariableAccess] has_iter # 15| getPath(): [Path] has_iter # 15| getSegment(): [PathSegment] has_iter # 15| getIdentifier(): [NameRef] has_iter @@ -1843,7 +1764,7 @@ proc_macro.rs: # 16| getScrutinee(): [MethodCallExpr] items.next() # 15| getArgList(): [ArgList] ArgList # 15| getIdentifier(): [NameRef] next -# 16| getReceiver(): [PathExpr,VariableAccess] items +# 16| getReceiver(): [VariableAccess] items # 16| getPath(): [Path] items # 16| getSegment(): [PathSegment] items # 16| getIdentifier(): [NameRef] items @@ -1851,7 +1772,7 @@ proc_macro.rs: # 15| getArm(0): [MatchArm] ... => ... # 15| getExpr(): [CallExpr] ...::RepInterp(...) # 15| getArgList(): [ArgList] ArgList -# 15| getArg(0): [PathExpr] _x +# 15| getArg(0): [VariableAccess] _x # 15| getPath(): [Path] _x # 15| getSegment(): [PathSegment] _x # 15| getIdentifier(): [NameRef] _x @@ -1955,12 +1876,12 @@ proc_macro.rs: # 16| getExpr(): [CallExpr] ...::to_tokens(...) # 16| getArgList(): [ArgList] ArgList # 16| getArg(0): [RefExpr] &items -# 16| getExpr(): [PathExpr,VariableAccess] items +# 16| getExpr(): [VariableAccess] items # 16| getPath(): [Path] items # 16| getSegment(): [PathSegment] items # 16| getIdentifier(): [NameRef] items # 15| getArg(1): [RefExpr] &mut _s -# 15| getExpr(): [PathExpr] _s +# 15| getExpr(): [VariableAccess] _s # 15| getPath(): [Path] _s # 15| getSegment(): [PathSegment] _s # 15| getIdentifier(): [NameRef] _s @@ -2072,7 +1993,7 @@ proc_macro.rs: # 15| getIdentifier(): [NameRef] quote_token_with_context # 16| getTokenTree(): [TokenTree] TokenTree # 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr -# 15| getTailExpr(): [PathExpr] _s +# 15| getTailExpr(): [VariableAccess] _s # 15| getPath(): [Path] _s # 15| getSegment(): [PathSegment] _s # 15| getIdentifier(): [NameRef] _s @@ -2119,7 +2040,7 @@ proc_macro.rs: # 22| getMacroCallExpansion(): [MatchExpr] match ... { ... } # 22| getScrutinee(): [CallExpr] ...::parse::<...>(...) # 22| getArgList(): [ArgList] ArgList -# 22| getArg(0): [PathExpr,VariableAccess] item +# 22| getArg(0): [VariableAccess] item # 22| getPath(): [Path] item # 22| getSegment(): [PathSegment] item # 22| getIdentifier(): [NameRef] item @@ -2141,7 +2062,7 @@ proc_macro.rs: # 22| getIdentifier(): [NameRef] parse # 22| getMatchArmList(): [MatchArmList] MatchArmList # 22| getArm(0): [MatchArm] ... => data -# 22| getExpr(): [PathExpr,VariableAccess] data +# 22| getExpr(): [VariableAccess] data # 22| getPath(): [Path] data # 22| getSegment(): [PathSegment] data # 22| getIdentifier(): [NameRef] data @@ -2167,7 +2088,7 @@ proc_macro.rs: # 22| getArg(0): [MethodCallExpr] err.to_compile_error() # 22| getArgList(): [ArgList] ArgList # 22| getIdentifier(): [NameRef] to_compile_error -# 22| getReceiver(): [PathExpr,VariableAccess] err +# 22| getReceiver(): [VariableAccess] err # 22| getPath(): [Path] err # 22| getSegment(): [PathSegment] err # 22| getIdentifier(): [NameRef] err @@ -2202,7 +2123,7 @@ proc_macro.rs: # 23| getInitializer(): [MethodCallExpr] ast.clone() # 23| getArgList(): [ArgList] ArgList # 23| getIdentifier(): [NameRef] clone -# 23| getReceiver(): [PathExpr,VariableAccess] ast +# 23| getReceiver(): [VariableAccess] ast # 23| getPath(): [Path] ast # 23| getSegment(): [PathSegment] ast # 23| getIdentifier(): [NameRef] ast @@ -2212,7 +2133,7 @@ proc_macro.rs: # 24| getExpr(): [AssignmentExpr] ... = ... # 24| getLhs(): [FieldExpr] ... .ident # 24| getContainer(): [FieldExpr] new_ast.sig -# 24| getContainer(): [PathExpr,VariableAccess] new_ast +# 24| getContainer(): [VariableAccess] new_ast # 24| getPath(): [Path] new_ast # 24| getSegment(): [PathSegment] new_ast # 24| getIdentifier(): [NameRef] new_ast @@ -2249,7 +2170,7 @@ proc_macro.rs: # 24| getArg(0): [FormatArgsArg] FormatArgsArg # 24| getExpr(): [FieldExpr] ... .ident # 24| getContainer(): [FieldExpr] ast.sig -# 24| getContainer(): [PathExpr,VariableAccess] ast +# 24| getContainer(): [VariableAccess] ast # 24| getPath(): [Path] ast # 24| getSegment(): [PathSegment] ast # 24| getIdentifier(): [NameRef] ast @@ -2282,7 +2203,7 @@ proc_macro.rs: # 24| getIdentifier(): [NameRef] span # 24| getReceiver(): [FieldExpr] ... .ident # 24| getContainer(): [FieldExpr] ast.sig -# 24| getContainer(): [PathExpr,VariableAccess] ast +# 24| getContainer(): [VariableAccess] ast # 24| getPath(): [Path] ast # 24| getSegment(): [PathSegment] ast # 24| getIdentifier(): [NameRef] ast @@ -2396,12 +2317,12 @@ proc_macro.rs: # 26| getExpr(): [CallExpr] ...::to_tokens(...) # 26| getArgList(): [ArgList] ArgList # 26| getArg(0): [RefExpr] &ast -# 26| getExpr(): [PathExpr,VariableAccess] ast +# 26| getExpr(): [VariableAccess] ast # 26| getPath(): [Path] ast # 26| getSegment(): [PathSegment] ast # 26| getIdentifier(): [NameRef] ast # 25| getArg(1): [RefExpr] &mut _s -# 25| getExpr(): [PathExpr] _s +# 25| getExpr(): [VariableAccess] _s # 25| getPath(): [Path] _s # 25| getSegment(): [PathSegment] _s # 25| getIdentifier(): [NameRef] _s @@ -2441,12 +2362,12 @@ proc_macro.rs: # 27| getExpr(): [CallExpr] ...::to_tokens(...) # 27| getArgList(): [ArgList] ArgList # 27| getArg(0): [RefExpr] &new_ast -# 27| getExpr(): [PathExpr,VariableAccess] new_ast +# 27| getExpr(): [VariableAccess] new_ast # 27| getPath(): [Path] new_ast # 27| getSegment(): [PathSegment] new_ast # 27| getIdentifier(): [NameRef] new_ast # 25| getArg(1): [RefExpr] &mut _s -# 25| getExpr(): [PathExpr] _s +# 25| getExpr(): [VariableAccess] _s # 25| getPath(): [Path] _s # 25| getSegment(): [PathSegment] _s # 25| getIdentifier(): [NameRef] _s @@ -2503,7 +2424,7 @@ proc_macro.rs: # 25| getIdentifier(): [NameRef] quote_token_with_context # 27| getTokenTree(): [TokenTree] TokenTree # 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr -# 25| getTailExpr(): [PathExpr] _s +# 25| getTailExpr(): [VariableAccess] _s # 25| getPath(): [Path] _s # 25| getSegment(): [PathSegment] _s # 25| getIdentifier(): [NameRef] _s @@ -2583,7 +2504,7 @@ proc_macro.rs: # 38| getMacroCallExpansion(): [MatchExpr] match ... { ... } # 38| getScrutinee(): [CallExpr] ...::parse::<...>(...) # 38| getArgList(): [ArgList] ArgList -# 38| getArg(0): [PathExpr,VariableAccess] input +# 38| getArg(0): [VariableAccess] input # 38| getPath(): [Path] input # 38| getSegment(): [PathSegment] input # 38| getIdentifier(): [NameRef] input @@ -2605,7 +2526,7 @@ proc_macro.rs: # 38| getIdentifier(): [NameRef] parse # 38| getMatchArmList(): [MatchArmList] MatchArmList # 38| getArm(0): [MatchArm] ... => data -# 38| getExpr(): [PathExpr,VariableAccess] data +# 38| getExpr(): [VariableAccess] data # 38| getPath(): [Path] data # 38| getSegment(): [PathSegment] data # 38| getIdentifier(): [NameRef] data @@ -2631,7 +2552,7 @@ proc_macro.rs: # 38| getArg(0): [MethodCallExpr] err.to_compile_error() # 38| getArgList(): [ArgList] ArgList # 38| getIdentifier(): [NameRef] to_compile_error -# 38| getReceiver(): [PathExpr,VariableAccess] err +# 38| getReceiver(): [VariableAccess] err # 38| getPath(): [Path] err # 38| getSegment(): [PathSegment] err # 38| getIdentifier(): [NameRef] err @@ -2665,7 +2586,7 @@ proc_macro.rs: # 39| getStatement(1): [LetStmt] let ... = ... # 39| getInitializer(): [RefExpr] &... # 39| getExpr(): [FieldExpr] ast.ident -# 39| getContainer(): [PathExpr,VariableAccess] ast +# 39| getContainer(): [VariableAccess] ast # 39| getPath(): [Path] ast # 39| getSegment(): [PathSegment] ast # 39| getIdentifier(): [NameRef] ast @@ -2702,7 +2623,7 @@ proc_macro.rs: # 40| getTokenTree(): [TokenTree] TokenTree # 40| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr # 40| getArg(0): [FormatArgsArg] FormatArgsArg -# 40| getExpr(): [PathExpr,VariableAccess] name +# 40| getExpr(): [VariableAccess] name # 40| getPath(): [Path] name # 40| getSegment(): [PathSegment] name # 40| getIdentifier(): [NameRef] name @@ -2731,7 +2652,7 @@ proc_macro.rs: # 40| getArg(1): [MethodCallExpr] name.span() # 40| getArgList(): [ArgList] ArgList # 40| getIdentifier(): [NameRef] span -# 40| getReceiver(): [PathExpr,VariableAccess] name +# 40| getReceiver(): [VariableAccess] name # 40| getPath(): [Path] name # 40| getSegment(): [PathSegment] name # 40| getIdentifier(): [NameRef] name @@ -2855,7 +2776,7 @@ proc_macro.rs: # 42| getExpr(): [CallExpr] ...::push_ident(...) # 42| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -2891,12 +2812,12 @@ proc_macro.rs: # 42| getExpr(): [CallExpr] ...::to_tokens(...) # 42| getArgList(): [ArgList] ArgList # 42| getArg(0): [RefExpr] &const_ident -# 42| getExpr(): [PathExpr,VariableAccess] const_ident +# 42| getExpr(): [VariableAccess] const_ident # 42| getPath(): [Path] const_ident # 42| getSegment(): [PathSegment] const_ident # 42| getIdentifier(): [NameRef] const_ident # 41| getArg(1): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -2946,7 +2867,7 @@ proc_macro.rs: # 41| getExpr(): [CallExpr] ...::push_colon(...) # 41| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -2985,7 +2906,7 @@ proc_macro.rs: # 42| getExpr(): [CallExpr] ...::push_ident(...) # 42| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3031,7 +2952,7 @@ proc_macro.rs: # 41| getExpr(): [CallExpr] ...::push_eq(...) # 41| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3070,7 +2991,7 @@ proc_macro.rs: # 42| getExpr(): [CallExpr] ...::parse(...) # 42| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3116,7 +3037,7 @@ proc_macro.rs: # 41| getExpr(): [CallExpr] ...::push_semi(...) # 41| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3155,7 +3076,7 @@ proc_macro.rs: # 44| getExpr(): [CallExpr] ...::push_ident(...) # 44| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3201,7 +3122,7 @@ proc_macro.rs: # 44| getExpr(): [CallExpr] ...::push_ident(...) # 44| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3247,7 +3168,7 @@ proc_macro.rs: # 44| getExpr(): [CallExpr] ...::push_ident(...) # 44| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3283,12 +3204,12 @@ proc_macro.rs: # 44| getExpr(): [CallExpr] ...::to_tokens(...) # 44| getArgList(): [ArgList] ArgList # 44| getArg(0): [RefExpr] &name -# 44| getExpr(): [PathExpr,VariableAccess] name +# 44| getExpr(): [VariableAccess] name # 44| getPath(): [Path] name # 44| getSegment(): [PathSegment] name # 44| getIdentifier(): [NameRef] name # 41| getArg(1): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3338,7 +3259,7 @@ proc_macro.rs: # 45| getExpr(): [CallExpr] ...::push_group(...) # 45| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3463,7 +3384,7 @@ proc_macro.rs: # 45| getExpr(): [CallExpr] ...::push_ident(...) # 45| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3509,7 +3430,7 @@ proc_macro.rs: # 45| getExpr(): [CallExpr] ...::push_ident(...) # 45| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3555,7 +3476,7 @@ proc_macro.rs: # 41| getExpr(): [CallExpr] ...::push_group(...) # 41| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3631,7 +3552,7 @@ proc_macro.rs: # 41| getExpr(): [CallExpr] ...::push_rarrow(...) # 41| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3670,7 +3591,7 @@ proc_macro.rs: # 45| getExpr(): [CallExpr] ...::push_ident(...) # 45| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3716,7 +3637,7 @@ proc_macro.rs: # 46| getExpr(): [CallExpr] ...::push_group(...) # 46| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3766,12 +3687,12 @@ proc_macro.rs: # 46| getExpr(): [CallExpr] ...::to_tokens(...) # 46| getArgList(): [ArgList] ArgList # 46| getArg(0): [RefExpr] &const_ident -# 46| getExpr(): [PathExpr,VariableAccess] const_ident +# 46| getExpr(): [VariableAccess] const_ident # 46| getPath(): [Path] const_ident # 46| getSegment(): [PathSegment] const_ident # 46| getIdentifier(): [NameRef] const_ident # 41| getArg(1): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3785,7 +3706,7 @@ proc_macro.rs: # 41| getIdentifier(): [NameRef] ToTokens # 41| getSegment(): [PathSegment] to_tokens # 41| getIdentifier(): [NameRef] to_tokens -# 41| getTailExpr(): [PathExpr] _s +# 41| getTailExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3831,7 +3752,7 @@ proc_macro.rs: # 41| getIdentifier(): [NameRef] quote_token_with_context # 45| getTokenTree(): [TokenTree] TokenTree # 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr -# 41| getTailExpr(): [PathExpr] _s +# 41| getTailExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3877,7 +3798,7 @@ proc_macro.rs: # 41| getIdentifier(): [NameRef] quote_token_with_context # 44| getTokenTree(): [TokenTree] TokenTree # 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr -# 41| getTailExpr(): [PathExpr] _s +# 41| getTailExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s diff --git a/rust/ql/test/extractor-tests/macro-expansion/test.expected b/rust/ql/test/extractor-tests/macro-expansion/test.expected index 930a0f443bd8..5abff30113bc 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/test.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/test.expected @@ -1,19 +1,19 @@ attribute_macros -| macro_expansion.rs:3:1:12:1 | fn foo | 0 | macro_expansion.rs:4:1:12:1 | fn foo | -| macro_expansion.rs:3:1:12:1 | fn foo | 1 | macro_expansion.rs:4:1:12:1 | fn foo_new | -| macro_expansion.rs:7:5:8:17 | fn inner | 0 | macro_expansion.rs:8:5:8:17 | fn inner_0 | -| macro_expansion.rs:7:5:8:17 | fn inner | 0 | macro_expansion.rs:8:5:8:17 | fn inner_0 | -| macro_expansion.rs:7:5:8:17 | fn inner | 1 | macro_expansion.rs:8:5:8:17 | fn inner_1 | -| macro_expansion.rs:7:5:8:17 | fn inner | 1 | macro_expansion.rs:8:5:8:17 | fn inner_1 | -| macro_expansion.rs:14:1:16:15 | fn bar | 0 | macro_expansion.rs:15:1:16:15 | fn bar_0 | -| macro_expansion.rs:14:1:16:15 | fn bar | 1 | macro_expansion.rs:15:1:16:15 | fn bar_1 | -| macro_expansion.rs:15:1:16:15 | fn bar_0 | 0 | macro_expansion.rs:16:1:16:15 | fn bar_0 | -| macro_expansion.rs:15:1:16:15 | fn bar_0 | 1 | macro_expansion.rs:16:1:16:15 | fn bar_0_new | -| macro_expansion.rs:15:1:16:15 | fn bar_1 | 0 | macro_expansion.rs:16:1:16:15 | fn bar_1 | -| macro_expansion.rs:15:1:16:15 | fn bar_1 | 1 | macro_expansion.rs:16:1:16:15 | fn bar_1_new | -| macro_expansion.rs:31:5:34:5 | fn bzz | 0 | macro_expansion.rs:32:5:34:5 | fn bzz_0 | -| macro_expansion.rs:31:5:34:5 | fn bzz | 1 | macro_expansion.rs:32:5:34:5 | fn bzz_1 | -| macro_expansion.rs:31:5:34:5 | fn bzz | 2 | macro_expansion.rs:32:5:34:5 | fn bzz_2 | +| macro_expansion.rs:3:1:12:1 | (item with attribute macro expansion) | 0 | macro_expansion.rs:4:1:12:1 | fn foo | +| macro_expansion.rs:3:1:12:1 | (item with attribute macro expansion) | 1 | macro_expansion.rs:4:1:12:1 | fn foo_new | +| macro_expansion.rs:7:5:8:17 | (item with attribute macro expansion) | 0 | macro_expansion.rs:8:5:8:17 | fn inner_0 | +| macro_expansion.rs:7:5:8:17 | (item with attribute macro expansion) | 0 | macro_expansion.rs:8:5:8:17 | fn inner_0 | +| macro_expansion.rs:7:5:8:17 | (item with attribute macro expansion) | 1 | macro_expansion.rs:8:5:8:17 | fn inner_1 | +| macro_expansion.rs:7:5:8:17 | (item with attribute macro expansion) | 1 | macro_expansion.rs:8:5:8:17 | fn inner_1 | +| macro_expansion.rs:14:1:16:15 | (item with attribute macro expansion) | 0 | macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | +| macro_expansion.rs:14:1:16:15 | (item with attribute macro expansion) | 1 | macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | +| macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | 0 | macro_expansion.rs:16:1:16:15 | fn bar_0 | +| macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | 0 | macro_expansion.rs:16:1:16:15 | fn bar_1 | +| macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | 1 | macro_expansion.rs:16:1:16:15 | fn bar_0_new | +| macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | 1 | macro_expansion.rs:16:1:16:15 | fn bar_1_new | +| macro_expansion.rs:31:5:34:5 | (item with attribute macro expansion) | 0 | macro_expansion.rs:32:5:34:5 | fn bzz_0 | +| macro_expansion.rs:31:5:34:5 | (item with attribute macro expansion) | 1 | macro_expansion.rs:32:5:34:5 | fn bzz_1 | +| macro_expansion.rs:31:5:34:5 | (item with attribute macro expansion) | 2 | macro_expansion.rs:32:5:34:5 | fn bzz_2 | derive_macros | macro_expansion.rs:83:1:86:1 | struct MyDerive | 0 | 0 | macro_expansion.rs:84:8:85:9 | impl ...::Debug for MyDerive::<...> { ... } | | macro_expansion.rs:88:1:92:1 | enum MyDeriveEnum | 0 | 0 | macro_expansion.rs:89:6:91:12 | impl ...::PartialEq for MyDeriveEnum::<...> { ... } | @@ -46,8 +46,6 @@ macro_calls | macro_expansion.rs:79:12:79:20 | my_int!... | macro_expansion.rs:79:12:79:18 | i32 | unexpanded_macro_calls | included/included.rs:2:9:2:39 | concat!... | -| macro_expansion.rs:5:9:5:35 | concat!... | -| macro_expansion.rs:33:9:33:16 | hello!... | | macro_expansion.rs:56:9:56:31 | concat!... | | macro_expansion.rs:63:9:63:32 | include_str!... | warnings diff --git a/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected b/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected index b88537912102..30dbc24103b9 100644 --- a/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected +++ b/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected @@ -5,7 +5,7 @@ lib.rs: # 1| getVisibility(): [Visibility] Visibility macro_in_library.rs: # 1| [SourceFile] SourceFile -# 1| getItem(0): [MacroCall] +# 1| getItem(0): [MacroCall] (item with attribute macro expansion) # 2| getAttributeMacroExpansion(): [MacroItems] MacroItems # 2| getItem(0): [Function] fn foo # 2| getParamList(): [ParamList] ParamList diff --git a/rust/ql/test/library-tests/const_access/Cargo.lock b/rust/ql/test/library-tests/const_access/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/const_access/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/const_access/const_access.expected b/rust/ql/test/library-tests/const_access/const_access.expected new file mode 100644 index 000000000000..83c5022aca84 --- /dev/null +++ b/rust/ql/test/library-tests/const_access/const_access.expected @@ -0,0 +1,8 @@ +testFailures +constAccess +| main.rs:17:13:17:24 | GLOBAL_CONST | main.rs:1:1:1:29 | Const | +| main.rs:19:13:19:24 | STRING_CONST | main.rs:2:1:2:35 | Const | +| main.rs:21:13:21:33 | ...::ASSOC_CONST | main.rs:9:5:9:33 | Const | +| main.rs:23:13:23:35 | ...::MODULE_CONST | main.rs:13:5:13:38 | Const | +| main.rs:25:8:25:19 | GLOBAL_CONST | main.rs:1:1:1:29 | Const | +| main.rs:29:16:29:36 | ...::ASSOC_CONST | main.rs:9:5:9:33 | Const | diff --git a/rust/ql/test/library-tests/const_access/const_access.ql b/rust/ql/test/library-tests/const_access/const_access.ql new file mode 100644 index 000000000000..b3bb73633927 --- /dev/null +++ b/rust/ql/test/library-tests/const_access/const_access.ql @@ -0,0 +1,21 @@ +import rust +import utils.test.InlineExpectationsTest +import TestUtils + +query predicate constAccess(ConstAccess ca, Const c) { toBeTested(ca) and c = ca.getConst() } + +module ConstAccessTest implements TestSig { + string getARelevantTag() { result = "const_access" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(ConstAccess ca | + toBeTested(ca) and + location = ca.getLocation() and + element = ca.toString() and + tag = "const_access" and + value = ca.getConst().getName().getText() + ) + } +} + +import MakeTest diff --git a/rust/ql/test/library-tests/const_access/main.rs b/rust/ql/test/library-tests/const_access/main.rs new file mode 100644 index 000000000000..0cf2467d100a --- /dev/null +++ b/rust/ql/test/library-tests/const_access/main.rs @@ -0,0 +1,34 @@ +const GLOBAL_CONST: i32 = 42; +const STRING_CONST: &str = "hello"; + +struct MyStruct { + value: i32, +} + +impl MyStruct { + const ASSOC_CONST: i32 = 100; +} + +mod my_module { + pub const MODULE_CONST: i32 = 200; +} + +fn use_consts() { + let x = GLOBAL_CONST; // $ const_access=GLOBAL_CONST + + let s = STRING_CONST; // $ const_access=STRING_CONST + + let y = MyStruct::ASSOC_CONST; // $ const_access=ASSOC_CONST + + let z = my_module::MODULE_CONST; // $ const_access=MODULE_CONST + + if GLOBAL_CONST > 0 { // $ const_access=GLOBAL_CONST + println!("positive"); + } + + let arr = [MyStruct::ASSOC_CONST; 5]; // $ const_access=ASSOC_CONST +} + +fn main() { + use_consts(); +} diff --git a/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected b/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected index 266b4c4be8ce..68da00c4312f 100644 --- a/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected @@ -1,7 +1,8 @@ models edges | main.rs:9:13:9:19 | ...: ... | main.rs:10:11:10:11 | s | provenance | | -| main.rs:10:11:10:11 | s | main.rs:9:30:14:1 | { ... } | provenance | | +| main.rs:10:11:10:11 | s | main.rs:12:9:12:9 | s | provenance | | +| main.rs:12:9:12:9 | s | main.rs:9:30:14:1 | { ... } | provenance | | | main.rs:21:9:21:9 | s | main.rs:22:10:22:10 | s | provenance | | | main.rs:21:13:21:21 | source(...) | main.rs:21:9:21:9 | s | provenance | | | main.rs:26:9:26:9 | s | main.rs:27:22:27:22 | s | provenance | | @@ -16,6 +17,7 @@ nodes | main.rs:9:13:9:19 | ...: ... | semmle.label | ...: ... | | main.rs:9:30:14:1 | { ... } | semmle.label | { ... } | | main.rs:10:11:10:11 | s | semmle.label | s | +| main.rs:12:9:12:9 | s | semmle.label | s | | main.rs:17:10:17:18 | source(...) | semmle.label | source(...) | | main.rs:21:9:21:9 | s | semmle.label | s | | main.rs:21:13:21:21 | source(...) | semmle.label | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index a7df3fdf7b3f..36a1c74018ed 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -82,12 +82,14 @@ localStep | main.rs:57:9:57:9 | a | main.rs:57:9:57:9 | [SSA] a | | main.rs:57:9:57:9 | a | main.rs:57:9:57:9 | a | | main.rs:57:13:59:5 | loop { ... } | main.rs:57:9:57:9 | a | +| main.rs:57:18:59:5 | { ... } | main.rs:57:13:59:5 | loop { ... } | | main.rs:58:9:58:15 | break 1 | main.rs:57:13:59:5 | loop { ... } | | main.rs:58:15:58:15 | 1 | main.rs:58:9:58:15 | break 1 | | main.rs:61:9:61:9 | [SSA] b | main.rs:64:10:64:10 | b | | main.rs:61:9:61:9 | b | main.rs:61:9:61:9 | [SSA] b | | main.rs:61:9:61:9 | b | main.rs:61:9:61:9 | b | | main.rs:61:13:63:5 | loop { ... } | main.rs:61:9:61:9 | b | +| main.rs:61:18:63:5 | { ... } | main.rs:61:13:63:5 | loop { ... } | | main.rs:62:9:62:23 | break ... | main.rs:61:13:63:5 | loop { ... } | | main.rs:62:15:62:23 | source(...) | main.rs:62:9:62:23 | break ... | | main.rs:68:9:68:13 | mut i | main.rs:68:13:68:13 | i | @@ -131,6 +133,7 @@ localStep | main.rs:92:9:92:9 | a | main.rs:92:9:92:9 | [SSA] a | | main.rs:92:9:92:9 | a | main.rs:92:9:92:9 | a | | main.rs:92:13:97:5 | 'block: { ... } | main.rs:92:9:92:9 | a | +| main.rs:93:14:95:9 | { ... } | main.rs:93:9:95:9 | if b {...} | | main.rs:94:13:94:26 | break 'block 1 | main.rs:92:13:97:5 | 'block: { ... } | | main.rs:94:26:94:26 | 1 | main.rs:94:13:94:26 | break 'block 1 | | main.rs:96:9:96:9 | 2 | main.rs:92:13:97:5 | 'block: { ... } | @@ -143,6 +146,7 @@ localStep | main.rs:102:9:102:9 | a | main.rs:102:9:102:9 | [SSA] a | | main.rs:102:9:102:9 | a | main.rs:102:9:102:9 | a | | main.rs:102:13:107:5 | 'block: { ... } | main.rs:102:9:102:9 | a | +| main.rs:103:14:105:9 | { ... } | main.rs:103:9:105:9 | if b {...} | | main.rs:104:13:104:26 | break 'block 1 | main.rs:102:13:107:5 | 'block: { ... } | | main.rs:104:26:104:26 | 1 | main.rs:104:13:104:26 | break 'block 1 | | main.rs:106:9:106:22 | break 'block 2 | main.rs:102:13:107:5 | 'block: { ... } | @@ -713,6 +717,7 @@ localStep | main.rs:480:16:480:19 | name | main.rs:480:16:480:19 | [SSA] name | | main.rs:480:16:480:19 | name | main.rs:480:16:480:19 | name | | main.rs:481:9:485:9 | if cond {...} | main.rs:480:31:486:5 | { ... } | +| main.rs:481:17:485:9 | { ... } | main.rs:481:9:485:9 | if cond {...} | | main.rs:482:17:482:17 | [SSA] n | main.rs:483:18:483:18 | n | | main.rs:482:17:482:17 | n | main.rs:482:17:482:17 | [SSA] n | | main.rs:482:17:482:17 | n | main.rs:482:17:482:17 | n | diff --git a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected index 00640ed9aa47..7b6fd011d031 100644 --- a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected @@ -163,8 +163,9 @@ edges | main.rs:352:11:352:12 | s1 [A] | main.rs:356:11:356:12 | s1 [A] | provenance | | | main.rs:353:9:353:25 | ...::A(...) [A] | main.rs:353:24:353:24 | n | provenance | | | main.rs:353:24:353:24 | n | main.rs:353:35:353:35 | n | provenance | | -| main.rs:356:11:356:12 | s1 [A] | main.rs:357:9:357:25 | ...::A(...) [A] | provenance | | +| main.rs:356:11:356:12 | s1 [A] | main.rs:357:9:357:45 | ... \| ... [A] | provenance | | | main.rs:357:9:357:25 | ...::A(...) [A] | main.rs:357:24:357:24 | n | provenance | | +| main.rs:357:9:357:45 | ... \| ... [A] | main.rs:357:9:357:25 | ...::A(...) [A] | provenance | | | main.rs:357:24:357:24 | n | main.rs:357:55:357:55 | n | provenance | | | main.rs:368:9:368:10 | s1 [A] | main.rs:370:11:370:12 | s1 [A] | provenance | | | main.rs:368:14:368:26 | A(...) [A] | main.rs:368:9:368:10 | s1 [A] | provenance | | @@ -173,8 +174,9 @@ edges | main.rs:370:11:370:12 | s1 [A] | main.rs:374:11:374:12 | s1 [A] | provenance | | | main.rs:371:9:371:12 | A(...) [A] | main.rs:371:11:371:11 | n | provenance | | | main.rs:371:11:371:11 | n | main.rs:371:22:371:22 | n | provenance | | -| main.rs:374:11:374:12 | s1 [A] | main.rs:375:9:375:12 | A(...) [A] | provenance | | +| main.rs:374:11:374:12 | s1 [A] | main.rs:375:9:375:19 | ... \| ... [A] | provenance | | | main.rs:375:9:375:12 | A(...) [A] | main.rs:375:11:375:11 | n | provenance | | +| main.rs:375:9:375:19 | ... \| ... [A] | main.rs:375:9:375:12 | A(...) [A] | provenance | | | main.rs:375:11:375:11 | n | main.rs:375:29:375:29 | n | provenance | | | main.rs:389:9:389:10 | s1 [C] | main.rs:393:11:393:12 | s1 [C] | provenance | | | main.rs:389:14:391:5 | ...::C {...} [C] | main.rs:389:9:389:10 | s1 [C] | provenance | | @@ -183,8 +185,9 @@ edges | main.rs:393:11:393:12 | s1 [C] | main.rs:397:11:397:12 | s1 [C] | provenance | | | main.rs:394:9:394:38 | ...::C {...} [C] | main.rs:394:36:394:36 | n | provenance | | | main.rs:394:36:394:36 | n | main.rs:394:48:394:48 | n | provenance | | -| main.rs:397:11:397:12 | s1 [C] | main.rs:398:9:398:38 | ...::C {...} [C] | provenance | | +| main.rs:397:11:397:12 | s1 [C] | main.rs:398:9:398:71 | ... \| ... [C] | provenance | | | main.rs:398:9:398:38 | ...::C {...} [C] | main.rs:398:36:398:36 | n | provenance | | +| main.rs:398:9:398:71 | ... \| ... [C] | main.rs:398:9:398:38 | ...::C {...} [C] | provenance | | | main.rs:398:36:398:36 | n | main.rs:398:81:398:81 | n | provenance | | | main.rs:409:9:409:10 | s1 [C] | main.rs:413:11:413:12 | s1 [C] | provenance | | | main.rs:409:14:411:5 | C {...} [C] | main.rs:409:9:409:10 | s1 [C] | provenance | | @@ -193,8 +196,9 @@ edges | main.rs:413:11:413:12 | s1 [C] | main.rs:417:11:417:12 | s1 [C] | provenance | | | main.rs:414:9:414:24 | C {...} [C] | main.rs:414:22:414:22 | n | provenance | | | main.rs:414:22:414:22 | n | main.rs:414:34:414:34 | n | provenance | | -| main.rs:417:11:417:12 | s1 [C] | main.rs:418:9:418:24 | C {...} [C] | provenance | | +| main.rs:417:11:417:12 | s1 [C] | main.rs:418:9:418:43 | ... \| ... [C] | provenance | | | main.rs:418:9:418:24 | C {...} [C] | main.rs:418:22:418:22 | n | provenance | | +| main.rs:418:9:418:43 | ... \| ... [C] | main.rs:418:9:418:24 | C {...} [C] | provenance | | | main.rs:418:22:418:22 | n | main.rs:418:53:418:53 | n | provenance | | | main.rs:430:9:430:12 | arr1 [element] | main.rs:431:14:431:17 | arr1 [element] | provenance | | | main.rs:430:16:430:33 | [...] [element] | main.rs:430:9:430:12 | arr1 [element] | provenance | | @@ -443,6 +447,7 @@ nodes | main.rs:353:35:353:35 | n | semmle.label | n | | main.rs:356:11:356:12 | s1 [A] | semmle.label | s1 [A] | | main.rs:357:9:357:25 | ...::A(...) [A] | semmle.label | ...::A(...) [A] | +| main.rs:357:9:357:45 | ... \| ... [A] | semmle.label | ... \| ... [A] | | main.rs:357:24:357:24 | n | semmle.label | n | | main.rs:357:55:357:55 | n | semmle.label | n | | main.rs:368:9:368:10 | s1 [A] | semmle.label | s1 [A] | @@ -454,6 +459,7 @@ nodes | main.rs:371:22:371:22 | n | semmle.label | n | | main.rs:374:11:374:12 | s1 [A] | semmle.label | s1 [A] | | main.rs:375:9:375:12 | A(...) [A] | semmle.label | A(...) [A] | +| main.rs:375:9:375:19 | ... \| ... [A] | semmle.label | ... \| ... [A] | | main.rs:375:11:375:11 | n | semmle.label | n | | main.rs:375:29:375:29 | n | semmle.label | n | | main.rs:389:9:389:10 | s1 [C] | semmle.label | s1 [C] | @@ -465,6 +471,7 @@ nodes | main.rs:394:48:394:48 | n | semmle.label | n | | main.rs:397:11:397:12 | s1 [C] | semmle.label | s1 [C] | | main.rs:398:9:398:38 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | +| main.rs:398:9:398:71 | ... \| ... [C] | semmle.label | ... \| ... [C] | | main.rs:398:36:398:36 | n | semmle.label | n | | main.rs:398:81:398:81 | n | semmle.label | n | | main.rs:409:9:409:10 | s1 [C] | semmle.label | s1 [C] | @@ -476,6 +483,7 @@ nodes | main.rs:414:34:414:34 | n | semmle.label | n | | main.rs:417:11:417:12 | s1 [C] | semmle.label | s1 [C] | | main.rs:418:9:418:24 | C {...} [C] | semmle.label | C {...} [C] | +| main.rs:418:9:418:43 | ... \| ... [C] | semmle.label | ... \| ... [C] | | main.rs:418:22:418:22 | n | semmle.label | n | | main.rs:418:53:418:53 | n | semmle.label | n | | main.rs:430:9:430:12 | arr1 [element] | semmle.label | arr1 [element] | diff --git a/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 7db157837813..000000000000 --- a/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -multipleCallTargets -| main.rs:389:14:389:30 | ... .lt(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.ql index 09b4ab5bf908..9e46b7c3ad2b 100644 --- a/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.ql +++ b/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.ql @@ -16,7 +16,7 @@ module MyFlowConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { any(CallExpr call | call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" - ).getArgList().getAnArg() = sink.asExpr().getExpr() + ).getArgList().getAnArg() = sink.asExpr() } predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { diff --git a/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected index d73106fb1cfd..f7687e025d78 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected @@ -4,8 +4,10 @@ | test.rs:17:31:17:38 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:22:22:22:39 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:22:22:22:39 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:26:18:26:29 | ...::read_dir | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:29:22:29:25 | path | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:43:27:43:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:51:52:51:59 | read_dir | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:54:22:54:25 | path | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:55:27:55:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:65:22:65:34 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/test.rs b/rust/ql/test/library-tests/dataflow/sources/file/test.rs index 35a7d2cc1b80..0124d2a094e0 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/file/test.rs @@ -23,7 +23,7 @@ fn test_fs() -> Result<(), Box> { sink(buffer); // $ hasTaintFlow="file.txt" } - for entry in fs::read_dir("directory")? { + for entry in fs::read_dir("directory")? { // $ Alert[rust/summary/taint-sources] let e = entry?; let path = e.path(); // $ Alert[rust/summary/taint-sources] @@ -48,7 +48,7 @@ fn test_fs() -> Result<(), Box> { sink(file_name.clone().as_encoded_bytes()); // $ MISSING: hasTaintFlow sink(file_name); // $ hasTaintFlow } - for entry in std::path::Path::new("directory").read_dir()? { + for entry in std::path::Path::new("directory").read_dir()? { // $ Alert[rust/summary/taint-sources] let e = entry?; let path = e.path(); // $ Alert[rust/summary/taint-sources] diff --git a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected index 352992bf4f2d..ca5c386b720c 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected @@ -7,4 +7,3 @@ multipleCallTargets | test.rs:447:30:447:67 | pinned.poll_read(...) | | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) | | test.rs:519:50:519:66 | ...::from(...) | -| test.rs:519:50:519:66 | ...::from(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected index 190628f93d7d..bfe1ce0e56bc 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected @@ -15,4 +15,3 @@ | test.rs:332:22:332:50 | ...::new | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:373:19:373:36 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:519:16:519:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:519:16:519:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 535b3f339b48..000000000000 --- a/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -multipleCallTargets -| test.rs:31:22:31:72 | ... .read_to_string(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected index e128916f8473..24a0cf78aec0 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected @@ -12,20 +12,12 @@ models | 11 | Summary: ::as_str; Argument[self]; ReturnValue; value | edges | test.rs:11:31:11:31 | a | test.rs:13:14:13:14 | a | provenance | | -| test.rs:11:31:11:31 | a | test.rs:13:14:13:14 | a | provenance | | -| test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | | test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | | test.rs:11:31:11:31 | a | test.rs:14:14:14:14 | a | provenance | | -| test.rs:11:31:11:31 | a | test.rs:14:14:14:14 | a | provenance | | | test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | provenance | | | test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | provenance | | | test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | -| test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | | test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | provenance | | | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | provenance | | | test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() | provenance | MaD:9 | | test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() [tuple.0] | provenance | MaD:6 | @@ -87,37 +79,21 @@ edges | test.rs:139:41:139:42 | to | test.rs:98:9:98:31 | ...: ...::Path::<...> | provenance | Src:MaD:5 | | test.rs:140:45:140:46 | to | test.rs:109:9:109:41 | ...: ...::Path::<...> | provenance | Src:MaD:5 | | test.rs:242:33:242:35 | map | test.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | -| test.rs:242:33:242:35 | map | test.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | | test.rs:242:38:242:46 | ...: String | test.rs:244:18:244:18 | a | provenance | | -| test.rs:242:38:242:46 | ...: String | test.rs:244:18:244:18 | a | provenance | | -| test.rs:250:46:250:49 | then | test.rs:251:25:251:33 | ...: String | provenance | Src:MaD:3 | | test.rs:250:46:250:49 | then | test.rs:251:25:251:33 | ...: String | provenance | Src:MaD:3 | | test.rs:251:25:251:33 | ...: String | test.rs:252:22:252:22 | a | provenance | | -| test.rs:251:25:251:33 | ...: String | test.rs:252:22:252:22 | a | provenance | | -| test.rs:259:50:259:57 | and_then | test.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:1 | | test.rs:259:50:259:57 | and_then | test.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:1 | | test.rs:260:26:260:32 | ...: u64 | test.rs:263:22:263:23 | id | provenance | | -| test.rs:260:26:260:32 | ...: u64 | test.rs:263:22:263:23 | id | provenance | | | test.rs:272:75:272:77 | map | test.rs:273:15:273:23 | ...: String | provenance | Src:MaD:2 | -| test.rs:272:75:272:77 | map | test.rs:273:15:273:23 | ...: String | provenance | Src:MaD:2 | -| test.rs:273:15:273:23 | ...: String | test.rs:275:22:275:22 | a | provenance | | | test.rs:273:15:273:23 | ...: String | test.rs:275:22:275:22 | a | provenance | | nodes | test.rs:11:31:11:31 | a | semmle.label | a | -| test.rs:11:31:11:31 | a | semmle.label | a | | test.rs:13:14:13:14 | a | semmle.label | a | -| test.rs:13:14:13:14 | a | semmle.label | a | -| test.rs:13:14:13:23 | a.as_str() | semmle.label | a.as_str() | | test.rs:13:14:13:23 | a.as_str() | semmle.label | a.as_str() | | test.rs:14:14:14:14 | a | semmle.label | a | -| test.rs:14:14:14:14 | a | semmle.label | a | | test.rs:14:14:14:25 | a.as_bytes() | semmle.label | a.as_bytes() | -| test.rs:14:14:14:25 | a.as_bytes() | semmle.label | a.as_bytes() | -| test.rs:15:14:15:14 | a | semmle.label | a | | test.rs:15:14:15:14 | a | semmle.label | a | | test.rs:68:15:68:15 | a | semmle.label | a | -| test.rs:68:15:68:15 | a | semmle.label | a | -| test.rs:70:14:70:14 | a | semmle.label | a | | test.rs:70:14:70:14 | a | semmle.label | a | | test.rs:98:9:98:31 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | | test.rs:100:13:100:13 | a | semmle.label | a | @@ -162,39 +138,23 @@ nodes | test.rs:139:41:139:42 | to | semmle.label | to | | test.rs:140:45:140:46 | to | semmle.label | to | | test.rs:242:33:242:35 | map | semmle.label | map | -| test.rs:242:33:242:35 | map | semmle.label | map | | test.rs:242:38:242:46 | ...: String | semmle.label | ...: String | -| test.rs:242:38:242:46 | ...: String | semmle.label | ...: String | -| test.rs:244:18:244:18 | a | semmle.label | a | | test.rs:244:18:244:18 | a | semmle.label | a | | test.rs:250:46:250:49 | then | semmle.label | then | -| test.rs:250:46:250:49 | then | semmle.label | then | | test.rs:251:25:251:33 | ...: String | semmle.label | ...: String | -| test.rs:251:25:251:33 | ...: String | semmle.label | ...: String | -| test.rs:252:22:252:22 | a | semmle.label | a | | test.rs:252:22:252:22 | a | semmle.label | a | | test.rs:259:50:259:57 | and_then | semmle.label | and_then | -| test.rs:259:50:259:57 | and_then | semmle.label | and_then | | test.rs:260:26:260:32 | ...: u64 | semmle.label | ...: u64 | -| test.rs:260:26:260:32 | ...: u64 | semmle.label | ...: u64 | -| test.rs:263:22:263:23 | id | semmle.label | id | | test.rs:263:22:263:23 | id | semmle.label | id | | test.rs:272:75:272:77 | map | semmle.label | map | -| test.rs:272:75:272:77 | map | semmle.label | map | -| test.rs:273:15:273:23 | ...: String | semmle.label | ...: String | | test.rs:273:15:273:23 | ...: String | semmle.label | ...: String | | test.rs:275:22:275:22 | a | semmle.label | a | -| test.rs:275:22:275:22 | a | semmle.label | a | subpaths testFailures #select | test.rs:13:14:13:23 | a.as_str() | test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | $@ | test.rs:11:31:11:31 | a | a | -| test.rs:13:14:13:23 | a.as_str() | test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | $@ | test.rs:11:31:11:31 | a | a | -| test.rs:14:14:14:25 | a.as_bytes() | test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | $@ | test.rs:11:31:11:31 | a | a | | test.rs:14:14:14:25 | a.as_bytes() | test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | $@ | test.rs:11:31:11:31 | a | a | | test.rs:15:14:15:14 | a | test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | $@ | test.rs:11:31:11:31 | a | a | -| test.rs:15:14:15:14 | a | test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | $@ | test.rs:11:31:11:31 | a | a | -| test.rs:70:14:70:14 | a | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | $@ | test.rs:68:15:68:15 | a | a | | test.rs:70:14:70:14 | a | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | $@ | test.rs:68:15:68:15 | a | a | | test.rs:101:14:101:23 | a.as_str() | test.rs:139:41:139:42 | to | test.rs:101:14:101:23 | a.as_str() | $@ | test.rs:139:41:139:42 | to | to | | test.rs:102:14:102:25 | a.as_bytes() | test.rs:139:41:139:42 | to | test.rs:102:14:102:25 | a.as_bytes() | $@ | test.rs:139:41:139:42 | to | to | @@ -203,10 +163,6 @@ testFailures | test.rs:114:14:114:14 | b | test.rs:140:45:140:46 | to | test.rs:114:14:114:14 | b | $@ | test.rs:140:45:140:46 | to | to | | test.rs:132:14:132:14 | a | test.rs:127:5:127:20 | to | test.rs:132:14:132:14 | a | $@ | test.rs:127:5:127:20 | to | to | | test.rs:244:18:244:18 | a | test.rs:242:33:242:35 | map | test.rs:244:18:244:18 | a | $@ | test.rs:242:33:242:35 | map | map | -| test.rs:244:18:244:18 | a | test.rs:242:33:242:35 | map | test.rs:244:18:244:18 | a | $@ | test.rs:242:33:242:35 | map | map | -| test.rs:252:22:252:22 | a | test.rs:250:46:250:49 | then | test.rs:252:22:252:22 | a | $@ | test.rs:250:46:250:49 | then | then | | test.rs:252:22:252:22 | a | test.rs:250:46:250:49 | then | test.rs:252:22:252:22 | a | $@ | test.rs:250:46:250:49 | then | then | | test.rs:263:22:263:23 | id | test.rs:259:50:259:57 | and_then | test.rs:263:22:263:23 | id | $@ | test.rs:259:50:259:57 | and_then | and_then | -| test.rs:263:22:263:23 | id | test.rs:259:50:259:57 | and_then | test.rs:263:22:263:23 | id | $@ | test.rs:259:50:259:57 | and_then | and_then | -| test.rs:275:22:275:22 | a | test.rs:272:75:272:77 | map | test.rs:275:22:275:22 | a | $@ | test.rs:272:75:272:77 | map | map | | test.rs:275:22:275:22 | a | test.rs:272:75:272:77 | map | test.rs:275:22:275:22 | a | $@ | test.rs:272:75:272:77 | map | map | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected index 549f9c4ab762..20a20ce3f9b1 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected @@ -1,12 +1,7 @@ | test.rs:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:22:14:22:19 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:22:14:22:19 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:48:14:48:30 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:48:14:48:30 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | @@ -48,20 +43,6 @@ | test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | @@ -70,15 +51,6 @@ | test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | @@ -87,15 +59,6 @@ | test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | diff --git a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected new file mode 100644 index 000000000000..e08eb561b58b --- /dev/null +++ b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected @@ -0,0 +1,36 @@ +| struct Array | | +| struct Ptr | | +| struct PtrMut | | +| struct Ref | | +| struct RefMut | | +| struct Slice | | +| struct Tuple0 | | +| struct Tuple1 | | +| struct Tuple2 | | +| struct Tuple3 | | +| struct Tuple4 | | +| struct Tuple5 | | +| struct Tuple6 | | +| struct Tuple7 | | +| struct Tuple8 | | +| struct Tuple9 | | +| struct Tuple10 | | +| struct Tuple11 | | +| struct Tuple12 | | +| struct bool | | +| struct char | | +| struct f32 | FloatingPointType, NumericType | +| struct f64 | FloatingPointType, NumericType | +| struct i8 | IntegralType, NumericType | +| struct i16 | IntegralType, NumericType | +| struct i32 | IntegralType, NumericType | +| struct i64 | IntegralType, NumericType | +| struct i128 | IntegralType, NumericType | +| struct isize | IntegralType, NumericType | +| struct str | | +| struct u8 | IntegralType, NumericType | +| struct u16 | IntegralType, NumericType | +| struct u32 | IntegralType, NumericType | +| struct u64 | IntegralType, NumericType | +| struct u128 | IntegralType, NumericType | +| struct usize | IntegralType, NumericType | diff --git a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql new file mode 100644 index 000000000000..8dfd49bc1375 --- /dev/null +++ b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql @@ -0,0 +1,13 @@ +import rust +import codeql.rust.frameworks.stdlib.Builtins + +string describe(BuiltinType t) { + t instanceof NumericType and result = "NumericType" + or + t instanceof IntegralType and result = "IntegralType" + or + t instanceof FloatingPointType and result = "FloatingPointType" +} + +from BuiltinType t +select t.toString(), concat(describe(t), ", ") diff --git a/rust/ql/test/library-tests/elements/builtintypes/Cargo.lock b/rust/ql/test/library-tests/elements/builtintypes/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/elements/builtintypes/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/elements/builtintypes/test.rs b/rust/ql/test/library-tests/elements/builtintypes/test.rs new file mode 100644 index 000000000000..a00a4833c4c4 --- /dev/null +++ b/rust/ql/test/library-tests/elements/builtintypes/test.rs @@ -0,0 +1,5 @@ + +// --- tests --- + +fn test_types() { +} diff --git a/rust/ql/test/library-tests/elements/enum/Cargo.lock b/rust/ql/test/library-tests/elements/enum/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/elements/enum/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/elements/enum/Enum.expected b/rust/ql/test/library-tests/elements/enum/Enum.expected new file mode 100644 index 000000000000..f910b240ca74 --- /dev/null +++ b/rust/ql/test/library-tests/elements/enum/Enum.expected @@ -0,0 +1,7 @@ +fieldless +| enums.rs:1:1:5:1 | enum Foo | +| enums.rs:7:1:11:1 | enum Fieldless | +| enums.rs:13:1:18:1 | enum Direction | +unitOnly +| enums.rs:1:1:5:1 | enum Foo | +| enums.rs:13:1:18:1 | enum Direction | diff --git a/rust/ql/test/library-tests/elements/enum/Enum.ql b/rust/ql/test/library-tests/elements/enum/Enum.ql new file mode 100644 index 000000000000..82baa8dffe66 --- /dev/null +++ b/rust/ql/test/library-tests/elements/enum/Enum.ql @@ -0,0 +1,6 @@ +import rust +import TestUtils + +query predicate fieldless(Enum e) { toBeTested(e) and e.isFieldless() } + +query predicate unitOnly(Enum e) { toBeTested(e) and e.isUnitOnly() } diff --git a/rust/ql/test/library-tests/elements/enum/enums.rs b/rust/ql/test/library-tests/elements/enum/enums.rs new file mode 100644 index 000000000000..0f5a964c284f --- /dev/null +++ b/rust/ql/test/library-tests/elements/enum/enums.rs @@ -0,0 +1,24 @@ +enum Foo { + Bar, + Baz, + Qux, +} + +enum Fieldless { + Tuple(), + Struct{}, + Unit, +} + +enum Direction { + North = 0, + East = 90, + South = 180, + West = 270, +} + +enum Color { + Red(u8), + Green(u8), + Blue(u8), +} diff --git a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected index 0b5d376b4d2e..6b5461f37194 100644 --- a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected @@ -1,6 +1,6 @@ multipleCallTargets -| main.rs:125:9:125:11 | f(...) | -| main.rs:365:9:367:16 | ...::f(...) | -| main.rs:368:9:370:16 | ...::f(...) | -| main.rs:447:9:451:16 | ...::f(...) | -| main.rs:452:9:456:16 | ...::f(...) | +| main.rs:126:9:126:11 | f(...) | +| main.rs:366:9:368:16 | ...::f(...) | +| main.rs:369:9:371:16 | ...::f(...) | +| main.rs:448:9:452:16 | ...::f(...) | +| main.rs:453:9:457:16 | ...::f(...) | diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs index 037527c71be3..c0f37bcd18eb 100644 --- a/rust/ql/test/library-tests/path-resolution/main.rs +++ b/rust/ql/test/library-tests/path-resolution/main.rs @@ -1,6 +1,7 @@ mod my; // I1 -use my::*; // $ item=I1 +#[rustfmt::skip] +use {{{my::{{self as my_alias, *}}}}}; // $ item=I1 use my::nested::nested1::nested2::*; // $ item=I3 @@ -789,6 +790,49 @@ mod impl_with_attribute_macro { } // impl_with_attribute_macro::test } +mod patterns { + #[rustfmt::skip] + pub fn test() -> Option { // $ item=Option $ item=i32 + let x = Some(42); // $ item=Some + let y : Option = match x { // $ item=Option $ item=i32 + Some(y) => { // $ item=Some + None // $ item=None + } + None => // $ item=None + None // $ item=None + }; + match y { + N0ne => // local variable + N0ne + } + } // patterns::test + + #[rustfmt::skip] + fn test2() -> Option { // $ item=Option $ item=i32 + let test_alias = test; // $ item=patterns::test + let test = test_alias(); + test + } + + #[rustfmt::skip] + const z: i32 // $ item=i32 + = 0; // constz + + #[rustfmt::skip] + fn test3() { + let x = Some(0); // $ item=Some + match x { + Some(x) // $ item=Some + => x, + _ => 0 + }; + match x { + Some(z) => z, // $ item=Some item=constz + _ => 0 + }; + } +} + fn main() { my::nested::nested1::nested2::f(); // $ item=I4 my::f(); // $ item=I38 @@ -816,6 +860,7 @@ fn main() { nested8::f(); // $ item=I119 my3::f(); // $ item=I200 nested_f(); // $ item=I201 + my_alias::nested_f(); // $ item=I201 m18::m19::m20::g(); // $ item=I103 m23::f(); // $ item=I108 m24::f(); // $ item=I121 @@ -824,4 +869,5 @@ fn main() { AStruct::z_on_type(); // $ item=I124 AStruct {}.z_on_instance(); // $ item=I123 item=I125 impl_with_attribute_macro::test(); // $ item=impl_with_attribute_macro::test + patterns::test(); // $ item=patterns::test } diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.expected b/rust/ql/test/library-tests/path-resolution/path-resolution.expected index bb9a456a42c2..20c7e7799be7 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected @@ -1,37 +1,38 @@ mod | lib.rs:1:1:1:11 | mod my | | main.rs:1:1:1:7 | mod my | -| main.rs:7:1:7:8 | mod my2 | -| main.rs:19:1:43:1 | mod m1 | -| main.rs:24:5:42:5 | mod m2 | -| main.rs:35:9:41:9 | mod m3 | -| main.rs:45:1:52:1 | mod m4 | -| main.rs:109:1:113:1 | mod m5 | -| main.rs:115:1:127:1 | mod m6 | -| main.rs:129:1:148:1 | mod m7 | -| main.rs:150:1:204:1 | mod m8 | -| main.rs:206:1:214:1 | mod m9 | -| main.rs:216:1:235:1 | mod m10 | -| main.rs:237:1:274:1 | mod m11 | -| main.rs:247:5:247:12 | mod f | -| main.rs:276:1:288:1 | mod m12 | -| main.rs:290:1:303:1 | mod m13 | -| main.rs:294:5:302:5 | mod m14 | -| main.rs:305:1:374:1 | mod m15 | -| main.rs:376:1:468:1 | mod m16 | -| main.rs:470:1:520:1 | mod trait_visibility | -| main.rs:471:5:493:5 | mod m | -| main.rs:522:1:552:1 | mod m17 | -| main.rs:554:1:572:1 | mod m18 | -| main.rs:559:5:571:5 | mod m19 | -| main.rs:564:9:570:9 | mod m20 | -| main.rs:574:1:599:1 | mod m21 | -| main.rs:575:5:581:5 | mod m22 | -| main.rs:583:5:598:5 | mod m33 | -| main.rs:601:1:626:1 | mod m23 | -| main.rs:628:1:696:1 | mod m24 | -| main.rs:713:1:765:1 | mod associated_types | -| main.rs:771:1:790:1 | mod impl_with_attribute_macro | +| main.rs:8:1:8:8 | mod my2 | +| main.rs:20:1:44:1 | mod m1 | +| main.rs:25:5:43:5 | mod m2 | +| main.rs:36:9:42:9 | mod m3 | +| main.rs:46:1:53:1 | mod m4 | +| main.rs:110:1:114:1 | mod m5 | +| main.rs:116:1:128:1 | mod m6 | +| main.rs:130:1:149:1 | mod m7 | +| main.rs:151:1:205:1 | mod m8 | +| main.rs:207:1:215:1 | mod m9 | +| main.rs:217:1:236:1 | mod m10 | +| main.rs:238:1:275:1 | mod m11 | +| main.rs:248:5:248:12 | mod f | +| main.rs:277:1:289:1 | mod m12 | +| main.rs:291:1:304:1 | mod m13 | +| main.rs:295:5:303:5 | mod m14 | +| main.rs:306:1:375:1 | mod m15 | +| main.rs:377:1:469:1 | mod m16 | +| main.rs:471:1:521:1 | mod trait_visibility | +| main.rs:472:5:494:5 | mod m | +| main.rs:523:1:553:1 | mod m17 | +| main.rs:555:1:573:1 | mod m18 | +| main.rs:560:5:572:5 | mod m19 | +| main.rs:565:9:571:9 | mod m20 | +| main.rs:575:1:600:1 | mod m21 | +| main.rs:576:5:582:5 | mod m22 | +| main.rs:584:5:599:5 | mod m33 | +| main.rs:602:1:627:1 | mod m23 | +| main.rs:629:1:697:1 | mod m24 | +| main.rs:714:1:766:1 | mod associated_types | +| main.rs:772:1:791:1 | mod impl_with_attribute_macro | +| main.rs:793:1:834:1 | mod patterns | | my2/mod.rs:1:1:1:16 | mod nested2 | | my2/mod.rs:20:1:20:12 | mod my3 | | my2/mod.rs:22:1:23:10 | mod mymod | @@ -47,424 +48,447 @@ mod | my/nested.rs:1:1:17:1 | mod nested1 | | my/nested.rs:2:5:11:5 | mod nested2 | resolvePath -| main.rs:3:5:3:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:5:5:5:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:5:5:5:14 | ...::nested | my.rs:1:1:1:15 | mod nested | -| main.rs:5:5:5:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | -| main.rs:5:5:5:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | -| main.rs:9:5:9:7 | my2 | main.rs:7:1:7:8 | mod my2 | -| main.rs:12:5:12:7 | my2 | main.rs:7:1:7:8 | mod my2 | -| main.rs:12:5:12:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:12:5:12:25 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:12:5:12:34 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:13:5:13:5 | f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:14:5:14:5 | g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:17:5:17:7 | my2 | main.rs:7:1:7:8 | mod my2 | -| main.rs:17:5:17:18 | ...::nested8_f | my2/nested2.rs:23:9:25:9 | fn f | -| main.rs:21:9:21:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:26:13:26:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:30:13:30:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:31:13:31:13 | f | main.rs:25:9:27:9 | fn f | -| main.rs:32:13:32:17 | super | main.rs:19:1:43:1 | mod m1 | -| main.rs:32:13:32:20 | ...::f | main.rs:20:5:22:5 | fn f | -| main.rs:36:17:36:21 | super | main.rs:24:5:42:5 | mod m2 | -| main.rs:36:17:36:24 | ...::f | main.rs:25:9:27:9 | fn f | -| main.rs:38:17:38:23 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:39:17:39:17 | f | main.rs:25:9:27:9 | fn f | -| main.rs:46:9:46:13 | super | main.rs:1:1:827:2 | SourceFile | -| main.rs:46:9:46:17 | ...::m1 | main.rs:19:1:43:1 | mod m1 | -| main.rs:46:9:46:21 | ...::m2 | main.rs:24:5:42:5 | mod m2 | -| main.rs:46:9:46:24 | ...::g | main.rs:29:9:33:9 | fn g | -| main.rs:49:9:49:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:50:9:50:9 | g | main.rs:29:9:33:9 | fn g | -| main.rs:57:5:57:11 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:62:13:62:14 | m1 | main.rs:19:1:43:1 | mod m1 | -| main.rs:62:13:62:18 | ...::m2 | main.rs:24:5:42:5 | mod m2 | -| main.rs:62:13:62:21 | ...::g | main.rs:29:9:33:9 | fn g | -| main.rs:63:9:63:9 | g | main.rs:29:9:33:9 | fn g | -| main.rs:66:9:66:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:67:17:67:19 | Foo | main.rs:65:9:65:21 | struct Foo | -| main.rs:70:13:70:15 | Foo | main.rs:59:5:59:17 | struct Foo | -| main.rs:72:5:72:5 | f | main.rs:61:5:68:5 | fn f | -| main.rs:74:5:74:8 | self | main.rs:1:1:827:2 | SourceFile | -| main.rs:74:5:74:11 | ...::i | main.rs:77:1:89:1 | fn i | -| main.rs:78:5:78:11 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:80:13:80:15 | Foo | main.rs:54:1:54:13 | struct Foo | -| main.rs:84:16:84:18 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:87:17:87:19 | Foo | main.rs:83:9:85:9 | struct Foo | -| main.rs:91:5:91:7 | my2 | main.rs:7:1:7:8 | mod my2 | -| main.rs:91:5:91:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:93:5:93:21 | my2_nested2_alias | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:93:5:93:30 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:93:34:93:40 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:93:34:93:43 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:93:57:93:63 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:93:57:93:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:93:80:93:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:104:5:104:11 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:105:5:105:15 | fn_in_macro | main.rs:95:1:101:1 | MacroRules | -| main.rs:105:18:105:24 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:106:5:106:22 | f_defined_in_macro | main.rs:105:18:105:42 | fn f_defined_in_macro | -| main.rs:111:9:111:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:117:9:117:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:121:9:121:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:124:13:124:17 | super | main.rs:1:1:827:2 | SourceFile | -| main.rs:124:13:124:21 | ...::m5 | main.rs:109:1:113:1 | mod m5 | -| main.rs:125:9:125:9 | f | main.rs:110:5:112:5 | fn f | -| main.rs:125:9:125:9 | f | main.rs:116:5:118:5 | fn f | -| main.rs:132:13:132:15 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:135:16:135:18 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:141:19:141:24 | MyEnum | main.rs:130:5:138:5 | enum MyEnum | -| main.rs:143:9:143:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:144:17:144:22 | MyEnum | main.rs:130:5:138:5 | enum MyEnum | -| main.rs:144:17:144:25 | ...::A | main.rs:131:9:133:9 | A | -| main.rs:145:17:145:22 | MyEnum | main.rs:130:5:138:5 | enum MyEnum | -| main.rs:145:17:145:25 | ...::B | main.rs:133:12:136:9 | B | -| main.rs:146:9:146:14 | MyEnum | main.rs:130:5:138:5 | enum MyEnum | -| main.rs:146:9:146:17 | ...::C | main.rs:136:12:137:9 | C | -| main.rs:155:13:155:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:156:13:156:13 | f | main.rs:163:5:165:5 | fn f | -| main.rs:157:13:157:16 | Self | main.rs:151:5:159:5 | trait MyTrait | -| main.rs:157:13:157:19 | ...::f | main.rs:152:9:152:20 | fn f | -| main.rs:164:9:164:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:168:10:168:16 | MyTrait | main.rs:151:5:159:5 | trait MyTrait | -| main.rs:168:22:168:29 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:170:13:170:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:171:13:171:13 | f | main.rs:163:5:165:5 | fn f | -| main.rs:172:13:172:16 | Self | main.rs:167:5:178:5 | impl MyTrait for MyStruct { ... } | -| main.rs:172:13:172:19 | ...::g | main.rs:175:9:177:9 | fn g | -| main.rs:176:13:176:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:181:10:181:17 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:183:13:183:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:184:13:184:13 | f | main.rs:163:5:165:5 | fn f | -| main.rs:190:17:190:24 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:191:9:191:15 | MyTrait | main.rs:151:5:159:5 | trait MyTrait | -| main.rs:191:9:191:18 | ...::f | main.rs:152:9:152:20 | fn f | -| main.rs:192:9:192:16 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:192:9:192:19 | ...::f | main.rs:168:33:173:9 | fn f | -| main.rs:193:10:193:17 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:194:10:194:16 | MyTrait | main.rs:151:5:159:5 | trait MyTrait | -| main.rs:197:17:197:24 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:199:17:199:24 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:201:9:201:16 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:201:9:201:19 | ...::h | main.rs:181:21:185:9 | fn h | -| main.rs:210:19:210:22 | self | main.rs:206:1:214:1 | mod m9 | -| main.rs:210:19:210:32 | ...::MyStruct | main.rs:207:5:207:26 | struct MyStruct | -| main.rs:211:9:211:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:212:9:212:12 | self | main.rs:206:1:214:1 | mod m9 | -| main.rs:212:9:212:22 | ...::MyStruct | main.rs:207:5:207:26 | struct MyStruct | -| main.rs:222:12:222:12 | T | main.rs:219:7:219:7 | T | -| main.rs:227:12:227:12 | T | main.rs:226:14:226:14 | T | -| main.rs:229:7:231:7 | MyStruct::<...> | main.rs:217:5:223:5 | struct MyStruct | -| main.rs:230:9:230:9 | T | main.rs:226:14:226:14 | T | -| main.rs:233:9:233:16 | MyStruct | main.rs:217:5:223:5 | struct MyStruct | -| main.rs:243:17:243:19 | Foo | main.rs:238:5:238:21 | struct Foo | -| main.rs:244:9:244:11 | Foo | main.rs:240:5:240:15 | fn Foo | -| main.rs:253:9:253:11 | Bar | main.rs:249:5:251:5 | enum Bar | -| main.rs:253:9:253:19 | ...::FooBar | main.rs:250:9:250:17 | FooBar | -| main.rs:258:13:258:15 | Foo | main.rs:238:5:238:21 | struct Foo | -| main.rs:259:17:259:22 | FooBar | main.rs:250:9:250:17 | FooBar | -| main.rs:260:17:260:22 | FooBar | main.rs:255:5:255:18 | fn FooBar | -| main.rs:268:9:268:9 | E | main.rs:263:15:266:5 | enum E | -| main.rs:268:9:268:12 | ...::C | main.rs:265:9:265:9 | C | -| main.rs:271:17:271:17 | S | main.rs:263:5:263:13 | struct S | -| main.rs:272:17:272:17 | C | main.rs:265:9:265:9 | C | -| main.rs:285:16:285:16 | T | main.rs:279:7:279:7 | T | -| main.rs:286:14:286:17 | Self | main.rs:277:5:287:5 | trait MyParamTrait | -| main.rs:286:14:286:33 | ...::AssociatedType | main.rs:281:9:281:28 | type AssociatedType | -| main.rs:295:13:295:16 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:295:13:295:21 | ...::m13 | main.rs:290:1:303:1 | mod m13 | -| main.rs:295:13:295:24 | ...::f | main.rs:291:5:291:17 | fn f | -| main.rs:295:13:295:24 | ...::f | main.rs:291:19:292:19 | struct f | -| main.rs:298:17:298:17 | f | main.rs:291:19:292:19 | struct f | -| main.rs:299:21:299:21 | f | main.rs:291:19:292:19 | struct f | -| main.rs:300:13:300:13 | f | main.rs:291:5:291:17 | fn f | -| main.rs:314:9:314:14 | Trait1 | main.rs:306:5:310:5 | trait Trait1 | -| main.rs:316:13:316:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:317:13:317:16 | Self | main.rs:312:5:320:5 | trait Trait2 | -| main.rs:317:13:317:19 | ...::g | main.rs:309:9:309:20 | fn g | -| main.rs:327:9:327:12 | Self | main.rs:322:5:335:5 | trait Trait3 | -| main.rs:327:15:327:20 | Trait1 | main.rs:306:5:310:5 | trait Trait1 | -| main.rs:328:9:328:10 | TT | main.rs:324:9:324:10 | TT | -| main.rs:328:13:328:18 | Trait1 | main.rs:306:5:310:5 | trait Trait1 | -| main.rs:330:25:330:26 | TT | main.rs:324:9:324:10 | TT | -| main.rs:331:13:331:16 | Self | main.rs:322:5:335:5 | trait Trait3 | -| main.rs:331:13:331:19 | ...::g | main.rs:309:9:309:20 | fn g | -| main.rs:332:13:332:14 | TT | main.rs:324:9:324:10 | TT | -| main.rs:332:13:332:17 | ...::g | main.rs:309:9:309:20 | fn g | -| main.rs:340:10:340:15 | Trait1 | main.rs:306:5:310:5 | trait Trait1 | -| main.rs:341:11:341:11 | S | main.rs:337:5:337:13 | struct S | -| main.rs:343:13:343:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:344:13:344:16 | Self | main.rs:339:5:351:5 | impl Trait1 for S { ... } | -| main.rs:344:13:344:19 | ...::g | main.rs:348:9:350:9 | fn g | -| main.rs:349:13:349:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:354:10:354:15 | Trait2 | main.rs:312:5:320:5 | trait Trait2 | -| main.rs:355:11:355:11 | S | main.rs:337:5:337:13 | struct S | -| main.rs:357:13:357:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:363:9:363:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:364:17:364:17 | S | main.rs:337:5:337:13 | struct S | -| main.rs:365:10:365:10 | S | main.rs:337:5:337:13 | struct S | -| main.rs:366:14:366:19 | Trait1 | main.rs:306:5:310:5 | trait Trait1 | -| main.rs:368:10:368:10 | S | main.rs:337:5:337:13 | struct S | -| main.rs:369:14:369:19 | Trait2 | main.rs:312:5:320:5 | trait Trait2 | -| main.rs:371:9:371:9 | S | main.rs:337:5:337:13 | struct S | -| main.rs:371:9:371:12 | ...::g | main.rs:348:9:350:9 | fn g | -| main.rs:381:24:381:24 | T | main.rs:379:7:379:7 | T | -| main.rs:383:24:383:24 | T | main.rs:379:7:379:7 | T | -| main.rs:386:24:386:24 | T | main.rs:379:7:379:7 | T | -| main.rs:387:13:387:16 | Self | main.rs:377:5:393:5 | trait Trait1 | -| main.rs:387:13:387:19 | ...::g | main.rs:383:9:384:9 | fn g | -| main.rs:391:18:391:18 | T | main.rs:379:7:379:7 | T | -| main.rs:399:9:401:9 | Trait1::<...> | main.rs:377:5:393:5 | trait Trait1 | -| main.rs:400:11:400:11 | T | main.rs:397:7:397:7 | T | -| main.rs:402:24:402:24 | T | main.rs:397:7:397:7 | T | -| main.rs:403:13:403:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:404:13:404:16 | Self | main.rs:395:5:408:5 | trait Trait2 | -| main.rs:404:13:404:19 | ...::g | main.rs:383:9:384:9 | fn g | -| main.rs:406:13:406:16 | Self | main.rs:395:5:408:5 | trait Trait2 | -| main.rs:406:13:406:19 | ...::c | main.rs:391:9:392:9 | Const | -| main.rs:413:10:415:5 | Trait1::<...> | main.rs:377:5:393:5 | trait Trait1 | -| main.rs:414:7:414:7 | S | main.rs:410:5:410:13 | struct S | -| main.rs:416:11:416:11 | S | main.rs:410:5:410:13 | struct S | -| main.rs:417:24:417:24 | S | main.rs:410:5:410:13 | struct S | -| main.rs:418:13:418:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:419:13:419:16 | Self | main.rs:412:5:430:5 | impl Trait1::<...> for S { ... } | -| main.rs:419:13:419:19 | ...::g | main.rs:423:9:426:9 | fn g | -| main.rs:423:24:423:24 | S | main.rs:410:5:410:13 | struct S | -| main.rs:424:13:424:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:425:13:425:16 | Self | main.rs:412:5:430:5 | impl Trait1::<...> for S { ... } | -| main.rs:425:13:425:19 | ...::c | main.rs:428:9:429:9 | Const | -| main.rs:428:18:428:18 | S | main.rs:410:5:410:13 | struct S | -| main.rs:428:22:428:22 | S | main.rs:410:5:410:13 | struct S | -| main.rs:433:10:435:5 | Trait2::<...> | main.rs:395:5:408:5 | trait Trait2 | -| main.rs:434:7:434:7 | S | main.rs:410:5:410:13 | struct S | -| main.rs:436:11:436:11 | S | main.rs:410:5:410:13 | struct S | -| main.rs:437:24:437:24 | S | main.rs:410:5:410:13 | struct S | -| main.rs:438:13:438:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:439:13:439:16 | Self | main.rs:432:5:441:5 | impl Trait2::<...> for S { ... } | -| main.rs:445:9:445:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:446:17:446:17 | S | main.rs:410:5:410:13 | struct S | -| main.rs:447:10:447:10 | S | main.rs:410:5:410:13 | struct S | -| main.rs:448:14:450:11 | Trait1::<...> | main.rs:377:5:393:5 | trait Trait1 | -| main.rs:449:13:449:13 | S | main.rs:410:5:410:13 | struct S | -| main.rs:452:10:452:10 | S | main.rs:410:5:410:13 | struct S | -| main.rs:453:14:455:11 | Trait2::<...> | main.rs:395:5:408:5 | trait Trait2 | -| main.rs:454:13:454:13 | S | main.rs:410:5:410:13 | struct S | -| main.rs:457:9:457:9 | S | main.rs:410:5:410:13 | struct S | -| main.rs:457:9:457:12 | ...::g | main.rs:423:9:426:9 | fn g | -| main.rs:459:9:459:9 | S | main.rs:410:5:410:13 | struct S | -| main.rs:459:9:459:12 | ...::h | main.rs:386:9:389:9 | fn h | -| main.rs:461:9:461:9 | S | main.rs:410:5:410:13 | struct S | -| main.rs:461:9:461:12 | ...::c | main.rs:428:9:429:9 | Const | -| main.rs:462:10:462:10 | S | main.rs:410:5:410:13 | struct S | -| main.rs:463:14:465:11 | Trait1::<...> | main.rs:377:5:393:5 | trait Trait1 | -| main.rs:464:13:464:13 | S | main.rs:410:5:410:13 | struct S | -| main.rs:482:14:482:16 | Foo | main.rs:472:9:474:9 | trait Foo | -| main.rs:482:22:482:22 | X | main.rs:480:9:480:21 | struct X | -| main.rs:484:17:484:23 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:488:14:488:16 | Bar | main.rs:476:9:478:9 | trait Bar | -| main.rs:488:22:488:22 | X | main.rs:480:9:480:21 | struct X | -| main.rs:490:17:490:23 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:495:9:495:9 | m | main.rs:471:5:493:5 | mod m | -| main.rs:495:9:495:12 | ...::X | main.rs:480:9:480:21 | struct X | -| main.rs:498:17:498:17 | X | main.rs:480:9:480:21 | struct X | -| main.rs:501:17:501:17 | m | main.rs:471:5:493:5 | mod m | -| main.rs:501:17:501:22 | ...::Foo | main.rs:472:9:474:9 | trait Foo | -| main.rs:502:13:502:13 | X | main.rs:480:9:480:21 | struct X | -| main.rs:502:13:502:23 | ...::a_method | main.rs:482:26:485:13 | fn a_method | -| main.rs:506:17:506:17 | m | main.rs:471:5:493:5 | mod m | -| main.rs:506:17:506:22 | ...::Bar | main.rs:476:9:478:9 | trait Bar | -| main.rs:507:13:507:13 | X | main.rs:480:9:480:21 | struct X | -| main.rs:507:13:507:23 | ...::a_method | main.rs:488:26:491:13 | fn a_method | -| main.rs:511:17:511:17 | m | main.rs:471:5:493:5 | mod m | -| main.rs:511:17:511:22 | ...::Bar | main.rs:476:9:478:9 | trait Bar | -| main.rs:512:13:512:13 | X | main.rs:480:9:480:21 | struct X | -| main.rs:512:13:512:23 | ...::a_method | main.rs:488:26:491:13 | fn a_method | -| main.rs:517:13:517:13 | m | main.rs:471:5:493:5 | mod m | -| main.rs:517:13:517:18 | ...::Bar | main.rs:476:9:478:9 | trait Bar | -| main.rs:517:13:517:28 | ...::a_method | main.rs:477:13:477:31 | fn a_method | -| main.rs:530:10:530:16 | MyTrait | main.rs:523:5:525:5 | trait MyTrait | -| main.rs:531:9:531:9 | S | main.rs:527:5:527:13 | struct S | -| main.rs:533:13:533:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:539:7:539:13 | MyTrait | main.rs:523:5:525:5 | trait MyTrait | -| main.rs:540:10:540:10 | T | main.rs:538:10:538:10 | T | -| main.rs:542:9:542:9 | T | main.rs:538:10:538:10 | T | -| main.rs:542:9:542:12 | ...::f | main.rs:524:9:524:20 | fn f | -| main.rs:543:9:543:15 | MyTrait | main.rs:523:5:525:5 | trait MyTrait | -| main.rs:543:9:543:18 | ...::f | main.rs:524:9:524:20 | fn f | -| main.rs:548:9:548:9 | g | main.rs:537:5:544:5 | fn g | -| main.rs:549:11:549:11 | S | main.rs:527:5:527:13 | struct S | -| main.rs:556:9:556:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:561:13:561:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:566:17:566:23 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:567:17:567:21 | super | main.rs:559:5:571:5 | mod m19 | -| main.rs:567:17:567:24 | ...::f | main.rs:560:9:562:9 | fn f | -| main.rs:568:17:568:21 | super | main.rs:559:5:571:5 | mod m19 | -| main.rs:568:17:568:28 | ...::super | main.rs:554:1:572:1 | mod m18 | -| main.rs:568:17:568:31 | ...::f | main.rs:555:5:557:5 | fn f | -| main.rs:585:13:585:17 | super | main.rs:574:1:599:1 | mod m21 | -| main.rs:585:13:585:22 | ...::m22 | main.rs:575:5:581:5 | mod m22 | -| main.rs:585:13:585:30 | ...::MyEnum | main.rs:576:9:578:9 | enum MyEnum | -| main.rs:586:13:586:16 | self | main.rs:576:9:578:9 | enum MyEnum | -| main.rs:590:13:590:17 | super | main.rs:574:1:599:1 | mod m21 | -| main.rs:590:13:590:22 | ...::m22 | main.rs:575:5:581:5 | mod m22 | -| main.rs:590:13:590:32 | ...::MyStruct | main.rs:580:9:580:28 | struct MyStruct | -| main.rs:591:13:591:16 | self | main.rs:580:9:580:28 | struct MyStruct | -| main.rs:595:21:595:26 | MyEnum | main.rs:576:9:578:9 | enum MyEnum | -| main.rs:595:21:595:29 | ...::A | main.rs:577:13:577:13 | A | -| main.rs:596:21:596:28 | MyStruct | main.rs:580:9:580:28 | struct MyStruct | -| main.rs:612:10:614:5 | Trait1::<...> | main.rs:602:5:607:5 | trait Trait1 | -| main.rs:613:7:613:10 | Self | main.rs:609:5:609:13 | struct S | -| main.rs:615:11:615:11 | S | main.rs:609:5:609:13 | struct S | -| main.rs:617:13:617:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:623:17:623:17 | S | main.rs:609:5:609:13 | struct S | -| main.rs:639:15:639:15 | T | main.rs:638:26:638:26 | T | -| main.rs:644:9:644:24 | GenericStruct::<...> | main.rs:637:5:640:5 | struct GenericStruct | -| main.rs:644:23:644:23 | T | main.rs:643:10:643:10 | T | -| main.rs:646:9:646:9 | T | main.rs:643:10:643:10 | T | -| main.rs:646:12:646:17 | TraitA | main.rs:629:5:631:5 | trait TraitA | -| main.rs:655:9:655:24 | GenericStruct::<...> | main.rs:637:5:640:5 | struct GenericStruct | -| main.rs:655:23:655:23 | T | main.rs:654:10:654:10 | T | -| main.rs:657:9:657:9 | T | main.rs:654:10:654:10 | T | -| main.rs:657:12:657:17 | TraitB | main.rs:633:5:635:5 | trait TraitB | -| main.rs:658:9:658:9 | T | main.rs:654:10:654:10 | T | -| main.rs:658:12:658:17 | TraitA | main.rs:629:5:631:5 | trait TraitA | -| main.rs:669:10:669:15 | TraitA | main.rs:629:5:631:5 | trait TraitA | -| main.rs:669:21:669:31 | Implementor | main.rs:666:5:666:23 | struct Implementor | -| main.rs:671:13:671:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:676:10:676:15 | TraitB | main.rs:633:5:635:5 | trait TraitB | -| main.rs:676:21:676:31 | Implementor | main.rs:666:5:666:23 | struct Implementor | -| main.rs:678:13:678:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:684:24:684:34 | Implementor | main.rs:666:5:666:23 | struct Implementor | -| main.rs:685:23:685:35 | GenericStruct | main.rs:637:5:640:5 | struct GenericStruct | -| main.rs:691:9:691:36 | GenericStruct::<...> | main.rs:637:5:640:5 | struct GenericStruct | -| main.rs:691:9:691:50 | ...::call_trait_a | main.rs:648:9:650:9 | fn call_trait_a | -| main.rs:691:25:691:35 | Implementor | main.rs:666:5:666:23 | struct Implementor | -| main.rs:694:9:694:36 | GenericStruct::<...> | main.rs:637:5:640:5 | struct GenericStruct | -| main.rs:694:9:694:47 | ...::call_both | main.rs:660:9:663:9 | fn call_both | -| main.rs:694:25:694:35 | Implementor | main.rs:666:5:666:23 | struct Implementor | -| main.rs:700:3:700:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:700:3:700:24 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | -| main.rs:704:6:704:12 | AStruct | main.rs:703:1:703:17 | struct AStruct | -| main.rs:706:7:706:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:706:7:706:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | -| main.rs:709:7:709:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:709:7:709:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | -| main.rs:714:9:714:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:714:9:714:19 | ...::marker | {EXTERNAL LOCATION} | mod marker | -| main.rs:714:9:714:32 | ...::PhantomData | {EXTERNAL LOCATION} | struct PhantomData | +| main.rs:4:8:4:9 | my | main.rs:1:1:1:7 | mod my | +| main.rs:4:14:4:17 | self | main.rs:1:1:1:7 | mod my | +| main.rs:6:5:6:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:6:5:6:14 | ...::nested | my.rs:1:1:1:15 | mod nested | +| main.rs:6:5:6:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | +| main.rs:6:5:6:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | +| main.rs:10:5:10:7 | my2 | main.rs:8:1:8:8 | mod my2 | +| main.rs:13:5:13:7 | my2 | main.rs:8:1:8:8 | mod my2 | +| main.rs:13:5:13:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:13:5:13:25 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:13:5:13:34 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:14:5:14:5 | f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:15:5:15:5 | g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:18:5:18:7 | my2 | main.rs:8:1:8:8 | mod my2 | +| main.rs:18:5:18:18 | ...::nested8_f | my2/nested2.rs:23:9:25:9 | fn f | +| main.rs:22:9:22:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:27:13:27:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:31:13:31:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:32:13:32:13 | f | main.rs:26:9:28:9 | fn f | +| main.rs:33:13:33:17 | super | main.rs:20:1:44:1 | mod m1 | +| main.rs:33:13:33:20 | ...::f | main.rs:21:5:23:5 | fn f | +| main.rs:37:17:37:21 | super | main.rs:25:5:43:5 | mod m2 | +| main.rs:37:17:37:24 | ...::f | main.rs:26:9:28:9 | fn f | +| main.rs:39:17:39:23 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:40:17:40:17 | f | main.rs:26:9:28:9 | fn f | +| main.rs:47:9:47:13 | super | main.rs:1:1:873:2 | SourceFile | +| main.rs:47:9:47:17 | ...::m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:47:9:47:21 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:47:9:47:24 | ...::g | main.rs:30:9:34:9 | fn g | +| main.rs:50:9:50:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:51:9:51:9 | g | main.rs:30:9:34:9 | fn g | +| main.rs:58:5:58:11 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:63:13:63:14 | m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:63:13:63:18 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:63:13:63:21 | ...::g | main.rs:30:9:34:9 | fn g | +| main.rs:64:9:64:9 | g | main.rs:30:9:34:9 | fn g | +| main.rs:67:9:67:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:68:17:68:19 | Foo | main.rs:66:9:66:21 | struct Foo | +| main.rs:71:13:71:15 | Foo | main.rs:60:5:60:17 | struct Foo | +| main.rs:73:5:73:5 | f | main.rs:62:5:69:5 | fn f | +| main.rs:75:5:75:8 | self | main.rs:1:1:873:2 | SourceFile | +| main.rs:75:5:75:11 | ...::i | main.rs:78:1:90:1 | fn i | +| main.rs:79:5:79:11 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:81:13:81:15 | Foo | main.rs:55:1:55:13 | struct Foo | +| main.rs:85:16:85:18 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:88:17:88:19 | Foo | main.rs:84:9:86:9 | struct Foo | +| main.rs:92:5:92:7 | my2 | main.rs:8:1:8:8 | mod my2 | +| main.rs:92:5:92:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:94:5:94:21 | my2_nested2_alias | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:94:5:94:30 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:94:34:94:40 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:94:34:94:43 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:94:57:94:63 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:94:57:94:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:94:80:94:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:105:5:105:11 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:106:5:106:15 | fn_in_macro | main.rs:96:1:102:1 | MacroRules | +| main.rs:106:18:106:24 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:107:5:107:22 | f_defined_in_macro | main.rs:106:18:106:42 | fn f_defined_in_macro | +| main.rs:112:9:112:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:118:9:118:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:122:9:122:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:125:13:125:17 | super | main.rs:1:1:873:2 | SourceFile | +| main.rs:125:13:125:21 | ...::m5 | main.rs:110:1:114:1 | mod m5 | +| main.rs:126:9:126:9 | f | main.rs:111:5:113:5 | fn f | +| main.rs:126:9:126:9 | f | main.rs:117:5:119:5 | fn f | +| main.rs:133:13:133:15 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:136:16:136:18 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:142:19:142:24 | MyEnum | main.rs:131:5:139:5 | enum MyEnum | +| main.rs:144:9:144:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:145:17:145:22 | MyEnum | main.rs:131:5:139:5 | enum MyEnum | +| main.rs:145:17:145:25 | ...::A | main.rs:132:9:134:9 | A | +| main.rs:146:17:146:22 | MyEnum | main.rs:131:5:139:5 | enum MyEnum | +| main.rs:146:17:146:25 | ...::B | main.rs:134:12:137:9 | B | +| main.rs:147:9:147:14 | MyEnum | main.rs:131:5:139:5 | enum MyEnum | +| main.rs:147:9:147:17 | ...::C | main.rs:137:12:138:9 | C | +| main.rs:156:13:156:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:157:13:157:13 | f | main.rs:164:5:166:5 | fn f | +| main.rs:158:13:158:16 | Self | main.rs:152:5:160:5 | trait MyTrait | +| main.rs:158:13:158:19 | ...::f | main.rs:153:9:153:20 | fn f | +| main.rs:165:9:165:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:169:10:169:16 | MyTrait | main.rs:152:5:160:5 | trait MyTrait | +| main.rs:169:22:169:29 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:171:13:171:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:172:13:172:13 | f | main.rs:164:5:166:5 | fn f | +| main.rs:173:13:173:16 | Self | main.rs:168:5:179:5 | impl MyTrait for MyStruct { ... } | +| main.rs:173:13:173:19 | ...::g | main.rs:176:9:178:9 | fn g | +| main.rs:177:13:177:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:182:10:182:17 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:184:13:184:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:185:13:185:13 | f | main.rs:164:5:166:5 | fn f | +| main.rs:191:17:191:24 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:192:9:192:15 | MyTrait | main.rs:152:5:160:5 | trait MyTrait | +| main.rs:192:9:192:18 | ...::f | main.rs:153:9:153:20 | fn f | +| main.rs:193:9:193:16 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:193:9:193:19 | ...::f | main.rs:169:33:174:9 | fn f | +| main.rs:194:10:194:17 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:195:10:195:16 | MyTrait | main.rs:152:5:160:5 | trait MyTrait | +| main.rs:198:17:198:24 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:200:17:200:24 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:202:9:202:16 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:202:9:202:19 | ...::h | main.rs:182:21:186:9 | fn h | +| main.rs:211:19:211:22 | self | main.rs:207:1:215:1 | mod m9 | +| main.rs:211:19:211:32 | ...::MyStruct | main.rs:208:5:208:26 | struct MyStruct | +| main.rs:212:9:212:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:213:9:213:12 | self | main.rs:207:1:215:1 | mod m9 | +| main.rs:213:9:213:22 | ...::MyStruct | main.rs:208:5:208:26 | struct MyStruct | +| main.rs:223:12:223:12 | T | main.rs:220:7:220:7 | T | +| main.rs:228:12:228:12 | T | main.rs:227:14:227:14 | T | +| main.rs:230:7:232:7 | MyStruct::<...> | main.rs:218:5:224:5 | struct MyStruct | +| main.rs:231:9:231:9 | T | main.rs:227:14:227:14 | T | +| main.rs:234:9:234:16 | MyStruct | main.rs:218:5:224:5 | struct MyStruct | +| main.rs:244:17:244:19 | Foo | main.rs:239:5:239:21 | struct Foo | +| main.rs:245:9:245:11 | Foo | main.rs:241:5:241:15 | fn Foo | +| main.rs:254:9:254:11 | Bar | main.rs:250:5:252:5 | enum Bar | +| main.rs:254:9:254:19 | ...::FooBar | main.rs:251:9:251:17 | FooBar | +| main.rs:259:13:259:15 | Foo | main.rs:239:5:239:21 | struct Foo | +| main.rs:260:17:260:22 | FooBar | main.rs:251:9:251:17 | FooBar | +| main.rs:261:17:261:22 | FooBar | main.rs:256:5:256:18 | fn FooBar | +| main.rs:269:9:269:9 | E | main.rs:264:15:267:5 | enum E | +| main.rs:269:9:269:12 | ...::C | main.rs:266:9:266:9 | C | +| main.rs:272:17:272:17 | S | main.rs:264:5:264:13 | struct S | +| main.rs:273:17:273:17 | C | main.rs:266:9:266:9 | C | +| main.rs:286:16:286:16 | T | main.rs:280:7:280:7 | T | +| main.rs:287:14:287:17 | Self | main.rs:278:5:288:5 | trait MyParamTrait | +| main.rs:287:14:287:33 | ...::AssociatedType | main.rs:282:9:282:28 | type AssociatedType | +| main.rs:296:13:296:16 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:296:13:296:21 | ...::m13 | main.rs:291:1:304:1 | mod m13 | +| main.rs:296:13:296:24 | ...::f | main.rs:292:5:292:17 | fn f | +| main.rs:296:13:296:24 | ...::f | main.rs:292:19:293:19 | struct f | +| main.rs:299:17:299:17 | f | main.rs:292:19:293:19 | struct f | +| main.rs:300:21:300:21 | f | main.rs:292:19:293:19 | struct f | +| main.rs:301:13:301:13 | f | main.rs:292:5:292:17 | fn f | +| main.rs:315:9:315:14 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | +| main.rs:317:13:317:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:318:13:318:16 | Self | main.rs:313:5:321:5 | trait Trait2 | +| main.rs:318:13:318:19 | ...::g | main.rs:310:9:310:20 | fn g | +| main.rs:328:9:328:12 | Self | main.rs:323:5:336:5 | trait Trait3 | +| main.rs:328:15:328:20 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | +| main.rs:329:9:329:10 | TT | main.rs:325:9:325:10 | TT | +| main.rs:329:13:329:18 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | +| main.rs:331:25:331:26 | TT | main.rs:325:9:325:10 | TT | +| main.rs:332:13:332:16 | Self | main.rs:323:5:336:5 | trait Trait3 | +| main.rs:332:13:332:19 | ...::g | main.rs:310:9:310:20 | fn g | +| main.rs:333:13:333:14 | TT | main.rs:325:9:325:10 | TT | +| main.rs:333:13:333:17 | ...::g | main.rs:310:9:310:20 | fn g | +| main.rs:341:10:341:15 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | +| main.rs:342:11:342:11 | S | main.rs:338:5:338:13 | struct S | +| main.rs:344:13:344:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:345:13:345:16 | Self | main.rs:340:5:352:5 | impl Trait1 for S { ... } | +| main.rs:345:13:345:19 | ...::g | main.rs:349:9:351:9 | fn g | +| main.rs:350:13:350:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:355:10:355:15 | Trait2 | main.rs:313:5:321:5 | trait Trait2 | +| main.rs:356:11:356:11 | S | main.rs:338:5:338:13 | struct S | +| main.rs:358:13:358:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:364:9:364:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:365:17:365:17 | S | main.rs:338:5:338:13 | struct S | +| main.rs:366:10:366:10 | S | main.rs:338:5:338:13 | struct S | +| main.rs:367:14:367:19 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | +| main.rs:369:10:369:10 | S | main.rs:338:5:338:13 | struct S | +| main.rs:370:14:370:19 | Trait2 | main.rs:313:5:321:5 | trait Trait2 | +| main.rs:372:9:372:9 | S | main.rs:338:5:338:13 | struct S | +| main.rs:372:9:372:12 | ...::g | main.rs:349:9:351:9 | fn g | +| main.rs:382:24:382:24 | T | main.rs:380:7:380:7 | T | +| main.rs:384:24:384:24 | T | main.rs:380:7:380:7 | T | +| main.rs:387:24:387:24 | T | main.rs:380:7:380:7 | T | +| main.rs:388:13:388:16 | Self | main.rs:378:5:394:5 | trait Trait1 | +| main.rs:388:13:388:19 | ...::g | main.rs:384:9:385:9 | fn g | +| main.rs:392:18:392:18 | T | main.rs:380:7:380:7 | T | +| main.rs:400:9:402:9 | Trait1::<...> | main.rs:378:5:394:5 | trait Trait1 | +| main.rs:401:11:401:11 | T | main.rs:398:7:398:7 | T | +| main.rs:403:24:403:24 | T | main.rs:398:7:398:7 | T | +| main.rs:404:13:404:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:405:13:405:16 | Self | main.rs:396:5:409:5 | trait Trait2 | +| main.rs:405:13:405:19 | ...::g | main.rs:384:9:385:9 | fn g | +| main.rs:407:13:407:16 | Self | main.rs:396:5:409:5 | trait Trait2 | +| main.rs:407:13:407:19 | ...::c | main.rs:392:9:393:9 | Const | +| main.rs:414:10:416:5 | Trait1::<...> | main.rs:378:5:394:5 | trait Trait1 | +| main.rs:415:7:415:7 | S | main.rs:411:5:411:13 | struct S | +| main.rs:417:11:417:11 | S | main.rs:411:5:411:13 | struct S | +| main.rs:418:24:418:24 | S | main.rs:411:5:411:13 | struct S | +| main.rs:419:13:419:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:420:13:420:16 | Self | main.rs:413:5:431:5 | impl Trait1::<...> for S { ... } | +| main.rs:420:13:420:19 | ...::g | main.rs:424:9:427:9 | fn g | +| main.rs:424:24:424:24 | S | main.rs:411:5:411:13 | struct S | +| main.rs:425:13:425:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:426:13:426:16 | Self | main.rs:413:5:431:5 | impl Trait1::<...> for S { ... } | +| main.rs:426:13:426:19 | ...::c | main.rs:429:9:430:9 | Const | +| main.rs:429:18:429:18 | S | main.rs:411:5:411:13 | struct S | +| main.rs:429:22:429:22 | S | main.rs:411:5:411:13 | struct S | +| main.rs:434:10:436:5 | Trait2::<...> | main.rs:396:5:409:5 | trait Trait2 | +| main.rs:435:7:435:7 | S | main.rs:411:5:411:13 | struct S | +| main.rs:437:11:437:11 | S | main.rs:411:5:411:13 | struct S | +| main.rs:438:24:438:24 | S | main.rs:411:5:411:13 | struct S | +| main.rs:439:13:439:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:440:13:440:16 | Self | main.rs:433:5:442:5 | impl Trait2::<...> for S { ... } | +| main.rs:446:9:446:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:447:17:447:17 | S | main.rs:411:5:411:13 | struct S | +| main.rs:448:10:448:10 | S | main.rs:411:5:411:13 | struct S | +| main.rs:449:14:451:11 | Trait1::<...> | main.rs:378:5:394:5 | trait Trait1 | +| main.rs:450:13:450:13 | S | main.rs:411:5:411:13 | struct S | +| main.rs:453:10:453:10 | S | main.rs:411:5:411:13 | struct S | +| main.rs:454:14:456:11 | Trait2::<...> | main.rs:396:5:409:5 | trait Trait2 | +| main.rs:455:13:455:13 | S | main.rs:411:5:411:13 | struct S | +| main.rs:458:9:458:9 | S | main.rs:411:5:411:13 | struct S | +| main.rs:458:9:458:12 | ...::g | main.rs:424:9:427:9 | fn g | +| main.rs:460:9:460:9 | S | main.rs:411:5:411:13 | struct S | +| main.rs:460:9:460:12 | ...::h | main.rs:387:9:390:9 | fn h | +| main.rs:462:9:462:9 | S | main.rs:411:5:411:13 | struct S | +| main.rs:462:9:462:12 | ...::c | main.rs:429:9:430:9 | Const | +| main.rs:463:10:463:10 | S | main.rs:411:5:411:13 | struct S | +| main.rs:464:14:466:11 | Trait1::<...> | main.rs:378:5:394:5 | trait Trait1 | +| main.rs:465:13:465:13 | S | main.rs:411:5:411:13 | struct S | +| main.rs:483:14:483:16 | Foo | main.rs:473:9:475:9 | trait Foo | +| main.rs:483:22:483:22 | X | main.rs:481:9:481:21 | struct X | +| main.rs:485:17:485:23 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:489:14:489:16 | Bar | main.rs:477:9:479:9 | trait Bar | +| main.rs:489:22:489:22 | X | main.rs:481:9:481:21 | struct X | +| main.rs:491:17:491:23 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:496:9:496:9 | m | main.rs:472:5:494:5 | mod m | +| main.rs:496:9:496:12 | ...::X | main.rs:481:9:481:21 | struct X | +| main.rs:499:17:499:17 | X | main.rs:481:9:481:21 | struct X | +| main.rs:502:17:502:17 | m | main.rs:472:5:494:5 | mod m | +| main.rs:502:17:502:22 | ...::Foo | main.rs:473:9:475:9 | trait Foo | +| main.rs:503:13:503:13 | X | main.rs:481:9:481:21 | struct X | +| main.rs:503:13:503:23 | ...::a_method | main.rs:483:26:486:13 | fn a_method | +| main.rs:507:17:507:17 | m | main.rs:472:5:494:5 | mod m | +| main.rs:507:17:507:22 | ...::Bar | main.rs:477:9:479:9 | trait Bar | +| main.rs:508:13:508:13 | X | main.rs:481:9:481:21 | struct X | +| main.rs:508:13:508:23 | ...::a_method | main.rs:489:26:492:13 | fn a_method | +| main.rs:512:17:512:17 | m | main.rs:472:5:494:5 | mod m | +| main.rs:512:17:512:22 | ...::Bar | main.rs:477:9:479:9 | trait Bar | +| main.rs:513:13:513:13 | X | main.rs:481:9:481:21 | struct X | +| main.rs:513:13:513:23 | ...::a_method | main.rs:489:26:492:13 | fn a_method | +| main.rs:518:13:518:13 | m | main.rs:472:5:494:5 | mod m | +| main.rs:518:13:518:18 | ...::Bar | main.rs:477:9:479:9 | trait Bar | +| main.rs:518:13:518:28 | ...::a_method | main.rs:478:13:478:31 | fn a_method | +| main.rs:531:10:531:16 | MyTrait | main.rs:524:5:526:5 | trait MyTrait | +| main.rs:532:9:532:9 | S | main.rs:528:5:528:13 | struct S | +| main.rs:534:13:534:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:540:7:540:13 | MyTrait | main.rs:524:5:526:5 | trait MyTrait | +| main.rs:541:10:541:10 | T | main.rs:539:10:539:10 | T | +| main.rs:543:9:543:9 | T | main.rs:539:10:539:10 | T | +| main.rs:543:9:543:12 | ...::f | main.rs:525:9:525:20 | fn f | +| main.rs:544:9:544:15 | MyTrait | main.rs:524:5:526:5 | trait MyTrait | +| main.rs:544:9:544:18 | ...::f | main.rs:525:9:525:20 | fn f | +| main.rs:549:9:549:9 | g | main.rs:538:5:545:5 | fn g | +| main.rs:550:11:550:11 | S | main.rs:528:5:528:13 | struct S | +| main.rs:557:9:557:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:562:13:562:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:567:17:567:23 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:568:17:568:21 | super | main.rs:560:5:572:5 | mod m19 | +| main.rs:568:17:568:24 | ...::f | main.rs:561:9:563:9 | fn f | +| main.rs:569:17:569:21 | super | main.rs:560:5:572:5 | mod m19 | +| main.rs:569:17:569:28 | ...::super | main.rs:555:1:573:1 | mod m18 | +| main.rs:569:17:569:31 | ...::f | main.rs:556:5:558:5 | fn f | +| main.rs:586:13:586:17 | super | main.rs:575:1:600:1 | mod m21 | +| main.rs:586:13:586:22 | ...::m22 | main.rs:576:5:582:5 | mod m22 | +| main.rs:586:13:586:30 | ...::MyEnum | main.rs:577:9:579:9 | enum MyEnum | +| main.rs:587:13:587:16 | self | main.rs:577:9:579:9 | enum MyEnum | +| main.rs:591:13:591:17 | super | main.rs:575:1:600:1 | mod m21 | +| main.rs:591:13:591:22 | ...::m22 | main.rs:576:5:582:5 | mod m22 | +| main.rs:591:13:591:32 | ...::MyStruct | main.rs:581:9:581:28 | struct MyStruct | +| main.rs:592:13:592:16 | self | main.rs:581:9:581:28 | struct MyStruct | +| main.rs:596:21:596:26 | MyEnum | main.rs:577:9:579:9 | enum MyEnum | +| main.rs:596:21:596:29 | ...::A | main.rs:578:13:578:13 | A | +| main.rs:597:21:597:28 | MyStruct | main.rs:581:9:581:28 | struct MyStruct | +| main.rs:613:10:615:5 | Trait1::<...> | main.rs:603:5:608:5 | trait Trait1 | +| main.rs:614:7:614:10 | Self | main.rs:610:5:610:13 | struct S | +| main.rs:616:11:616:11 | S | main.rs:610:5:610:13 | struct S | +| main.rs:618:13:618:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:624:17:624:17 | S | main.rs:610:5:610:13 | struct S | +| main.rs:640:15:640:15 | T | main.rs:639:26:639:26 | T | +| main.rs:645:9:645:24 | GenericStruct::<...> | main.rs:638:5:641:5 | struct GenericStruct | +| main.rs:645:23:645:23 | T | main.rs:644:10:644:10 | T | +| main.rs:647:9:647:9 | T | main.rs:644:10:644:10 | T | +| main.rs:647:12:647:17 | TraitA | main.rs:630:5:632:5 | trait TraitA | +| main.rs:656:9:656:24 | GenericStruct::<...> | main.rs:638:5:641:5 | struct GenericStruct | +| main.rs:656:23:656:23 | T | main.rs:655:10:655:10 | T | +| main.rs:658:9:658:9 | T | main.rs:655:10:655:10 | T | +| main.rs:658:12:658:17 | TraitB | main.rs:634:5:636:5 | trait TraitB | +| main.rs:659:9:659:9 | T | main.rs:655:10:655:10 | T | +| main.rs:659:12:659:17 | TraitA | main.rs:630:5:632:5 | trait TraitA | +| main.rs:670:10:670:15 | TraitA | main.rs:630:5:632:5 | trait TraitA | +| main.rs:670:21:670:31 | Implementor | main.rs:667:5:667:23 | struct Implementor | +| main.rs:672:13:672:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:677:10:677:15 | TraitB | main.rs:634:5:636:5 | trait TraitB | +| main.rs:677:21:677:31 | Implementor | main.rs:667:5:667:23 | struct Implementor | +| main.rs:679:13:679:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:685:24:685:34 | Implementor | main.rs:667:5:667:23 | struct Implementor | +| main.rs:686:23:686:35 | GenericStruct | main.rs:638:5:641:5 | struct GenericStruct | +| main.rs:692:9:692:36 | GenericStruct::<...> | main.rs:638:5:641:5 | struct GenericStruct | +| main.rs:692:9:692:50 | ...::call_trait_a | main.rs:649:9:651:9 | fn call_trait_a | +| main.rs:692:25:692:35 | Implementor | main.rs:667:5:667:23 | struct Implementor | +| main.rs:695:9:695:36 | GenericStruct::<...> | main.rs:638:5:641:5 | struct GenericStruct | +| main.rs:695:9:695:47 | ...::call_both | main.rs:661:9:664:9 | fn call_both | +| main.rs:695:25:695:35 | Implementor | main.rs:667:5:667:23 | struct Implementor | +| main.rs:701:3:701:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:701:3:701:24 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | +| main.rs:705:6:705:12 | AStruct | main.rs:704:1:704:17 | struct AStruct | +| main.rs:707:7:707:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:707:7:707:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | +| main.rs:710:7:710:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:710:7:710:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | | main.rs:715:9:715:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:715:9:715:19 | ...::result | {EXTERNAL LOCATION} | mod result | -| main.rs:715:9:715:27 | ...::Result | {EXTERNAL LOCATION} | enum Result | -| main.rs:723:19:723:22 | Self | main.rs:717:5:725:5 | trait Reduce | -| main.rs:723:19:723:29 | ...::Input | main.rs:718:9:718:19 | type Input | -| main.rs:724:14:724:46 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:724:21:724:24 | Self | main.rs:717:5:725:5 | trait Reduce | -| main.rs:724:21:724:32 | ...::Output | main.rs:719:21:720:20 | type Output | -| main.rs:724:35:724:38 | Self | main.rs:717:5:725:5 | trait Reduce | -| main.rs:724:35:724:45 | ...::Error | main.rs:718:21:719:19 | type Error | -| main.rs:728:17:728:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | -| main.rs:728:29:728:33 | Input | main.rs:727:19:727:23 | Input | +| main.rs:715:9:715:19 | ...::marker | {EXTERNAL LOCATION} | mod marker | +| main.rs:715:9:715:32 | ...::PhantomData | {EXTERNAL LOCATION} | struct PhantomData | +| main.rs:716:9:716:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:716:9:716:19 | ...::result | {EXTERNAL LOCATION} | mod result | +| main.rs:716:9:716:27 | ...::Result | {EXTERNAL LOCATION} | enum Result | +| main.rs:724:19:724:22 | Self | main.rs:718:5:726:5 | trait Reduce | +| main.rs:724:19:724:29 | ...::Input | main.rs:719:9:719:19 | type Input | +| main.rs:725:14:725:46 | Result::<...> | {EXTERNAL LOCATION} | enum Result | +| main.rs:725:21:725:24 | Self | main.rs:718:5:726:5 | trait Reduce | +| main.rs:725:21:725:32 | ...::Output | main.rs:720:21:721:20 | type Output | +| main.rs:725:35:725:38 | Self | main.rs:718:5:726:5 | trait Reduce | +| main.rs:725:35:725:45 | ...::Error | main.rs:719:21:720:19 | type Error | | main.rs:729:17:729:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | -| main.rs:729:29:729:33 | Error | main.rs:727:26:727:30 | Error | -| main.rs:736:11:736:16 | Reduce | main.rs:717:5:725:5 | trait Reduce | -| main.rs:737:13:740:9 | MyImpl::<...> | main.rs:727:5:730:5 | struct MyImpl | -| main.rs:738:13:738:17 | Input | main.rs:734:13:734:17 | Input | -| main.rs:739:13:739:17 | Error | main.rs:735:13:735:17 | Error | -| main.rs:742:22:745:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:743:13:743:17 | Input | main.rs:734:13:734:17 | Input | -| main.rs:744:13:744:16 | Self | main.rs:732:5:764:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:744:13:744:23 | ...::Error | main.rs:746:11:750:9 | type Error | -| main.rs:747:22:749:9 | Option::<...> | {EXTERNAL LOCATION} | enum Option | -| main.rs:748:11:748:15 | Error | main.rs:735:13:735:17 | Error | -| main.rs:752:13:752:17 | Input | main.rs:734:13:734:17 | Input | -| main.rs:757:19:757:22 | Self | main.rs:732:5:764:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:757:19:757:29 | ...::Input | main.rs:742:9:746:9 | type Input | -| main.rs:758:14:761:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:759:13:759:16 | Self | main.rs:732:5:764:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:759:13:759:24 | ...::Output | main.rs:750:11:753:9 | type Output | -| main.rs:760:13:760:16 | Self | main.rs:732:5:764:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:760:13:760:23 | ...::Error | main.rs:746:11:750:9 | type Error | -| main.rs:767:5:767:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:767:11:767:14 | self | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:769:15:769:17 | ztd | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:769:15:769:25 | ...::string | {EXTERNAL LOCATION} | mod string | -| main.rs:769:15:769:33 | ...::String | {EXTERNAL LOCATION} | struct String | -| main.rs:779:7:779:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:779:7:779:26 | ...::identity | proc_macro.rs:15:1:18:1 | fn identity | -| main.rs:780:10:780:15 | ATrait | main.rs:775:5:777:5 | trait ATrait | -| main.rs:780:21:780:23 | i64 | {EXTERNAL LOCATION} | struct i64 | -| main.rs:782:11:782:13 | i64 | {EXTERNAL LOCATION} | struct i64 | -| main.rs:788:17:788:19 | Foo | main.rs:773:5:773:15 | struct Foo | -| main.rs:793:5:793:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:793:5:793:14 | ...::nested | my.rs:1:1:1:15 | mod nested | -| main.rs:793:5:793:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | -| main.rs:793:5:793:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | -| main.rs:793:5:793:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | -| main.rs:794:5:794:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:794:5:794:9 | ...::f | my.rs:5:1:7:1 | fn f | -| main.rs:795:5:795:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:795:5:795:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:795:5:795:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:795:5:795:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:796:5:796:5 | f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:797:5:797:5 | g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:798:5:798:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:798:5:798:12 | ...::h | main.rs:56:1:75:1 | fn h | -| main.rs:799:5:799:6 | m1 | main.rs:19:1:43:1 | mod m1 | -| main.rs:799:5:799:10 | ...::m2 | main.rs:24:5:42:5 | mod m2 | -| main.rs:799:5:799:13 | ...::g | main.rs:29:9:33:9 | fn g | -| main.rs:800:5:800:6 | m1 | main.rs:19:1:43:1 | mod m1 | -| main.rs:800:5:800:10 | ...::m2 | main.rs:24:5:42:5 | mod m2 | -| main.rs:800:5:800:14 | ...::m3 | main.rs:35:9:41:9 | mod m3 | -| main.rs:800:5:800:17 | ...::h | main.rs:36:27:40:13 | fn h | -| main.rs:801:5:801:6 | m4 | main.rs:45:1:52:1 | mod m4 | -| main.rs:801:5:801:9 | ...::i | main.rs:48:5:51:5 | fn i | -| main.rs:802:5:802:5 | h | main.rs:56:1:75:1 | fn h | -| main.rs:803:5:803:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:804:5:804:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:805:5:805:5 | j | main.rs:103:1:107:1 | fn j | -| main.rs:806:5:806:6 | m6 | main.rs:115:1:127:1 | mod m6 | -| main.rs:806:5:806:9 | ...::g | main.rs:120:5:126:5 | fn g | -| main.rs:807:5:807:6 | m7 | main.rs:129:1:148:1 | mod m7 | -| main.rs:807:5:807:9 | ...::f | main.rs:140:5:147:5 | fn f | -| main.rs:808:5:808:6 | m8 | main.rs:150:1:204:1 | mod m8 | -| main.rs:808:5:808:9 | ...::g | main.rs:188:5:203:5 | fn g | -| main.rs:809:5:809:6 | m9 | main.rs:206:1:214:1 | mod m9 | -| main.rs:809:5:809:9 | ...::f | main.rs:209:5:213:5 | fn f | -| main.rs:810:5:810:7 | m11 | main.rs:237:1:274:1 | mod m11 | -| main.rs:810:5:810:10 | ...::f | main.rs:242:5:245:5 | fn f | -| main.rs:811:5:811:7 | m15 | main.rs:305:1:374:1 | mod m15 | -| main.rs:811:5:811:10 | ...::f | main.rs:361:5:373:5 | fn f | -| main.rs:812:5:812:7 | m16 | main.rs:376:1:468:1 | mod m16 | -| main.rs:812:5:812:10 | ...::f | main.rs:443:5:467:5 | fn f | -| main.rs:813:5:813:20 | trait_visibility | main.rs:470:1:520:1 | mod trait_visibility | -| main.rs:813:5:813:23 | ...::f | main.rs:497:5:519:5 | fn f | -| main.rs:814:5:814:7 | m17 | main.rs:522:1:552:1 | mod m17 | -| main.rs:814:5:814:10 | ...::f | main.rs:546:5:551:5 | fn f | -| main.rs:815:5:815:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | -| main.rs:815:5:815:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | -| main.rs:816:5:816:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | -| main.rs:816:5:816:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | -| main.rs:817:5:817:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 | -| main.rs:817:5:817:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | -| main.rs:818:5:818:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | -| main.rs:819:5:819:7 | m18 | main.rs:554:1:572:1 | mod m18 | -| main.rs:819:5:819:12 | ...::m19 | main.rs:559:5:571:5 | mod m19 | -| main.rs:819:5:819:17 | ...::m20 | main.rs:564:9:570:9 | mod m20 | -| main.rs:819:5:819:20 | ...::g | main.rs:565:13:569:13 | fn g | -| main.rs:820:5:820:7 | m23 | main.rs:601:1:626:1 | mod m23 | -| main.rs:820:5:820:10 | ...::f | main.rs:621:5:625:5 | fn f | -| main.rs:821:5:821:7 | m24 | main.rs:628:1:696:1 | mod m24 | -| main.rs:821:5:821:10 | ...::f | main.rs:682:5:695:5 | fn f | -| main.rs:822:5:822:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:822:5:822:11 | ...::h | main.rs:56:1:75:1 | fn h | -| main.rs:823:5:823:13 | z_changed | main.rs:701:1:701:9 | fn z_changed | -| main.rs:824:5:824:11 | AStruct | main.rs:703:1:703:17 | struct AStruct | -| main.rs:824:5:824:22 | ...::z_on_type | main.rs:707:5:707:17 | fn z_on_type | -| main.rs:825:5:825:11 | AStruct | main.rs:703:1:703:17 | struct AStruct | -| main.rs:826:5:826:29 | impl_with_attribute_macro | main.rs:771:1:790:1 | mod impl_with_attribute_macro | -| main.rs:826:5:826:35 | ...::test | main.rs:786:5:789:5 | fn test | +| main.rs:729:29:729:33 | Input | main.rs:728:19:728:23 | Input | +| main.rs:730:17:730:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | +| main.rs:730:29:730:33 | Error | main.rs:728:26:728:30 | Error | +| main.rs:737:11:737:16 | Reduce | main.rs:718:5:726:5 | trait Reduce | +| main.rs:738:13:741:9 | MyImpl::<...> | main.rs:728:5:731:5 | struct MyImpl | +| main.rs:739:13:739:17 | Input | main.rs:735:13:735:17 | Input | +| main.rs:740:13:740:17 | Error | main.rs:736:13:736:17 | Error | +| main.rs:743:22:746:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | +| main.rs:744:13:744:17 | Input | main.rs:735:13:735:17 | Input | +| main.rs:745:13:745:16 | Self | main.rs:733:5:765:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:745:13:745:23 | ...::Error | main.rs:747:11:751:9 | type Error | +| main.rs:748:22:750:9 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:749:11:749:15 | Error | main.rs:736:13:736:17 | Error | +| main.rs:753:13:753:17 | Input | main.rs:735:13:735:17 | Input | +| main.rs:758:19:758:22 | Self | main.rs:733:5:765:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:758:19:758:29 | ...::Input | main.rs:743:9:747:9 | type Input | +| main.rs:759:14:762:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | +| main.rs:760:13:760:16 | Self | main.rs:733:5:765:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:760:13:760:24 | ...::Output | main.rs:751:11:754:9 | type Output | +| main.rs:761:13:761:16 | Self | main.rs:733:5:765:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:761:13:761:23 | ...::Error | main.rs:747:11:751:9 | type Error | +| main.rs:768:5:768:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:768:11:768:14 | self | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:770:15:770:17 | ztd | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:770:15:770:25 | ...::string | {EXTERNAL LOCATION} | mod string | +| main.rs:770:15:770:33 | ...::String | {EXTERNAL LOCATION} | struct String | +| main.rs:780:7:780:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:780:7:780:26 | ...::identity | proc_macro.rs:15:1:18:1 | fn identity | +| main.rs:781:10:781:15 | ATrait | main.rs:776:5:778:5 | trait ATrait | +| main.rs:781:21:781:23 | i64 | {EXTERNAL LOCATION} | struct i64 | +| main.rs:783:11:783:13 | i64 | {EXTERNAL LOCATION} | struct i64 | +| main.rs:789:17:789:19 | Foo | main.rs:774:5:774:15 | struct Foo | +| main.rs:795:22:795:32 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:795:29:795:31 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:796:17:796:20 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:797:17:797:27 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:797:24:797:26 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:798:13:798:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:799:17:799:20 | None | {EXTERNAL LOCATION} | None | +| main.rs:801:13:801:16 | None | {EXTERNAL LOCATION} | None | +| main.rs:802:17:802:20 | None | {EXTERNAL LOCATION} | None | +| main.rs:811:19:811:29 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:811:26:811:28 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:812:26:812:29 | test | main.rs:794:5:808:5 | fn test | +| main.rs:818:14:818:16 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:823:17:823:20 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:825:13:825:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:830:13:830:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:830:18:830:18 | z | main.rs:817:5:819:12 | Const | +| main.rs:830:24:830:24 | z | main.rs:817:5:819:12 | Const | +| main.rs:837:5:837:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:837:5:837:14 | ...::nested | my.rs:1:1:1:15 | mod nested | +| main.rs:837:5:837:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | +| main.rs:837:5:837:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | +| main.rs:837:5:837:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | +| main.rs:838:5:838:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:838:5:838:9 | ...::f | my.rs:5:1:7:1 | fn f | +| main.rs:839:5:839:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:839:5:839:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:839:5:839:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:839:5:839:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:840:5:840:5 | f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:841:5:841:5 | g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:842:5:842:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:842:5:842:12 | ...::h | main.rs:57:1:76:1 | fn h | +| main.rs:843:5:843:6 | m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:843:5:843:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:843:5:843:13 | ...::g | main.rs:30:9:34:9 | fn g | +| main.rs:844:5:844:6 | m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:844:5:844:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:844:5:844:14 | ...::m3 | main.rs:36:9:42:9 | mod m3 | +| main.rs:844:5:844:17 | ...::h | main.rs:37:27:41:13 | fn h | +| main.rs:845:5:845:6 | m4 | main.rs:46:1:53:1 | mod m4 | +| main.rs:845:5:845:9 | ...::i | main.rs:49:5:52:5 | fn i | +| main.rs:846:5:846:5 | h | main.rs:57:1:76:1 | fn h | +| main.rs:847:5:847:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:848:5:848:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:849:5:849:5 | j | main.rs:104:1:108:1 | fn j | +| main.rs:850:5:850:6 | m6 | main.rs:116:1:128:1 | mod m6 | +| main.rs:850:5:850:9 | ...::g | main.rs:121:5:127:5 | fn g | +| main.rs:851:5:851:6 | m7 | main.rs:130:1:149:1 | mod m7 | +| main.rs:851:5:851:9 | ...::f | main.rs:141:5:148:5 | fn f | +| main.rs:852:5:852:6 | m8 | main.rs:151:1:205:1 | mod m8 | +| main.rs:852:5:852:9 | ...::g | main.rs:189:5:204:5 | fn g | +| main.rs:853:5:853:6 | m9 | main.rs:207:1:215:1 | mod m9 | +| main.rs:853:5:853:9 | ...::f | main.rs:210:5:214:5 | fn f | +| main.rs:854:5:854:7 | m11 | main.rs:238:1:275:1 | mod m11 | +| main.rs:854:5:854:10 | ...::f | main.rs:243:5:246:5 | fn f | +| main.rs:855:5:855:7 | m15 | main.rs:306:1:375:1 | mod m15 | +| main.rs:855:5:855:10 | ...::f | main.rs:362:5:374:5 | fn f | +| main.rs:856:5:856:7 | m16 | main.rs:377:1:469:1 | mod m16 | +| main.rs:856:5:856:10 | ...::f | main.rs:444:5:468:5 | fn f | +| main.rs:857:5:857:20 | trait_visibility | main.rs:471:1:521:1 | mod trait_visibility | +| main.rs:857:5:857:23 | ...::f | main.rs:498:5:520:5 | fn f | +| main.rs:858:5:858:7 | m17 | main.rs:523:1:553:1 | mod m17 | +| main.rs:858:5:858:10 | ...::f | main.rs:547:5:552:5 | fn f | +| main.rs:859:5:859:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | +| main.rs:859:5:859:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | +| main.rs:860:5:860:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | +| main.rs:860:5:860:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | +| main.rs:861:5:861:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 | +| main.rs:861:5:861:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | +| main.rs:862:5:862:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | +| main.rs:863:5:863:12 | my_alias | main.rs:1:1:1:7 | mod my | +| main.rs:863:5:863:22 | ...::nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | +| main.rs:864:5:864:7 | m18 | main.rs:555:1:573:1 | mod m18 | +| main.rs:864:5:864:12 | ...::m19 | main.rs:560:5:572:5 | mod m19 | +| main.rs:864:5:864:17 | ...::m20 | main.rs:565:9:571:9 | mod m20 | +| main.rs:864:5:864:20 | ...::g | main.rs:566:13:570:13 | fn g | +| main.rs:865:5:865:7 | m23 | main.rs:602:1:627:1 | mod m23 | +| main.rs:865:5:865:10 | ...::f | main.rs:622:5:626:5 | fn f | +| main.rs:866:5:866:7 | m24 | main.rs:629:1:697:1 | mod m24 | +| main.rs:866:5:866:10 | ...::f | main.rs:683:5:696:5 | fn f | +| main.rs:867:5:867:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:867:5:867:11 | ...::h | main.rs:57:1:76:1 | fn h | +| main.rs:868:5:868:13 | z_changed | main.rs:702:1:702:9 | fn z_changed | +| main.rs:869:5:869:11 | AStruct | main.rs:704:1:704:17 | struct AStruct | +| main.rs:869:5:869:22 | ...::z_on_type | main.rs:708:5:708:17 | fn z_on_type | +| main.rs:870:5:870:11 | AStruct | main.rs:704:1:704:17 | struct AStruct | +| main.rs:871:5:871:29 | impl_with_attribute_macro | main.rs:772:1:791:1 | mod impl_with_attribute_macro | +| main.rs:871:5:871:35 | ...::test | main.rs:787:5:790:5 | fn test | +| main.rs:872:5:872:12 | patterns | main.rs:793:1:834:1 | mod patterns | +| main.rs:872:5:872:18 | ...::test | main.rs:794:5:808:5 | fn test | | my2/mod.rs:4:5:4:11 | println | {EXTERNAL LOCATION} | MacroRules | | my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | | my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | @@ -488,10 +512,10 @@ resolvePath | my2/mod.rs:25:9:25:16 | ...::f | my2/renamed.rs:1:1:1:13 | fn f | | my2/my3/mod.rs:2:5:2:11 | println | {EXTERNAL LOCATION} | MacroRules | | my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g | -| my2/my3/mod.rs:4:5:4:5 | h | main.rs:56:1:75:1 | fn h | +| my2/my3/mod.rs:4:5:4:5 | h | main.rs:57:1:76:1 | fn h | | my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | -| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:827:2 | SourceFile | -| my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:56:1:75:1 | fn h | +| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:873:2 | SourceFile | +| my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:57:1:76:1 | fn h | | my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | | my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g | | my2/my3/mod.rs:10:5:10:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.ql b/rust/ql/test/library-tests/path-resolution/path-resolution.ql index 0fe49a8e386b..f7955929b839 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.ql +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.ql @@ -5,7 +5,7 @@ import TestUtils query predicate mod(Module m) { toBeTested(m) } -query predicate resolvePath(Path p, ItemNode i) { +query predicate resolvePath(PathExt p, ItemNode i) { toBeTested(p) and not p.isFromMacroExpansion() and i = resolvePath(p) diff --git a/rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..ce79c75327ab --- /dev/null +++ b/rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,2 @@ +multipleCallTargets +| test.rs:288:7:288:36 | ... .as_str() | diff --git a/rust/ql/test/library-tests/sensitivedata/SensitiveData.ql b/rust/ql/test/library-tests/sensitivedata/SensitiveData.ql index 0d5e748f80eb..6372e81555d9 100644 --- a/rust/ql/test/library-tests/sensitivedata/SensitiveData.ql +++ b/rust/ql/test/library-tests/sensitivedata/SensitiveData.ql @@ -13,7 +13,7 @@ module SensitiveDataConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { any(CallExpr call | call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" - ).getArgList().getAnArg() = sink.asExpr().getExpr() + ).getArgList().getAnArg() = sink.asExpr() } } diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected index e1585e2e0d34..7ee176a136f8 100644 --- a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -5,13 +5,10 @@ multipleCallTargets | dereference.rs:184:17:184:30 | ... .foo() | | dereference.rs:186:17:186:25 | S.bar(...) | | dereference.rs:187:17:187:29 | S.bar(...) | -| main.rs:589:9:589:14 | S4.m() | | main.rs:590:9:590:18 | ...::m(...) | -| main.rs:591:9:591:20 | ... .m() | -| main.rs:592:9:592:24 | ...::m(...) | -| main.rs:2524:13:2524:31 | ...::from(...) | -| main.rs:2525:13:2525:31 | ...::from(...) | -| main.rs:2526:13:2526:31 | ...::from(...) | -| main.rs:2532:13:2532:31 | ...::from(...) | -| main.rs:2533:13:2533:31 | ...::from(...) | -| main.rs:2534:13:2534:31 | ...::from(...) | +| main.rs:2634:13:2634:31 | ...::from(...) | +| main.rs:2635:13:2635:31 | ...::from(...) | +| main.rs:2636:13:2636:31 | ...::from(...) | +| main.rs:2642:13:2642:31 | ...::from(...) | +| main.rs:2643:13:2643:31 | ...::from(...) | +| main.rs:2644:13:2644:31 | ...::from(...) | diff --git a/rust/ql/test/library-tests/type-inference/dereference.rs b/rust/ql/test/library-tests/type-inference/dereference.rs index bdc42180a63d..f84d03a3a4e6 100644 --- a/rust/ql/test/library-tests/type-inference/dereference.rs +++ b/rust/ql/test/library-tests/type-inference/dereference.rs @@ -38,7 +38,7 @@ impl S { fn explicit_monomorphic_dereference() { // Dereference with method call let a1 = MyIntPointer { value: 34i64 }; - let _b1 = a1.deref(); // $ target=MyIntPointer::deref type=_b1:&T.i64 + let _b1 = a1.deref(); // $ target=MyIntPointer::deref type=_b1:TRef.i64 // Dereference with overloaded dereference operator let a2 = MyIntPointer { value: 34i64 }; @@ -52,7 +52,7 @@ fn explicit_monomorphic_dereference() { fn explicit_polymorphic_dereference() { // Explicit dereference with type parameter let c1 = MySmartPointer { value: 'a' }; - let _d1 = c1.deref(); // $ target=MySmartPointer::deref type=_d1:&T.char + let _d1 = c1.deref(); // $ target=MySmartPointer::deref type=_d1:TRef.char // Explicit dereference with type parameter let c2 = MySmartPointer { value: 'a' }; @@ -66,7 +66,7 @@ fn explicit_polymorphic_dereference() { fn explicit_ref_dereference() { // Explicit dereference with type parameter let e1 = &'a'; - let _f1 = e1.deref(); // $ target=deref type=_f1:&T.char + let _f1 = e1.deref(); // $ target=deref type=_f1:TRef.char // Explicit dereference with type parameter let e2 = &'a'; @@ -80,7 +80,7 @@ fn explicit_ref_dereference() { fn explicit_box_dereference() { // Explicit dereference with type parameter let g1: Box = Box::new('a'); // $ target=new - let _h1 = g1.deref(); // $ target=deref type=_h1:&T.char + let _h1 = g1.deref(); // $ target=deref type=_h1:TRef.char // Explicit dereference with type parameter let g2: Box = Box::new('a'); // $ target=new @@ -101,7 +101,7 @@ fn implicit_dereference() { let _y = x.is_positive(); // $ MISSING: target=is_positive type=_y:bool let z = MySmartPointer { value: S(0i64) }; - let z_ = z.foo(); // $ MISSING: target=foo type=z_:&T.i64 + let z_ = z.foo(); // $ MISSING: target=foo type=z_:TRef.i64 } mod implicit_deref_coercion_cycle { diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index d99d178ba8d0..bf53c4906e30 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -586,10 +586,10 @@ mod impl_overlap { println!("{:?}", w.m(x)); // $ target=S3::m println!("{:?}", S3::m(&w, x)); // $ target=S3::m - S4.m(); // $ target=::m $ SPURIOUS: target=MyTrait1::m + S4.m(); // $ target=::m S4::m(&S4); // $ target=::m $ SPURIOUS: target=MyTrait1::m - S5(0i32).m(); // $ target=_as_MyTrait1>::m $ SPURIOUS: target=MyTrait1::m - S5::m(&S5(0i32)); // $ target=_as_MyTrait1>::m $ SPURIOUS: target=MyTrait1::m + S5(0i32).m(); // $ target=_as_MyTrait1>::m + S5::m(&S5(0i32)); // $ target=_as_MyTrait1>::m S5(true).m(); // $ target=MyTrait1::m S5::m(&S5(true)); // $ target=MyTrait1::m } @@ -758,6 +758,26 @@ mod function_trait_bounds { fn assoc(x: Self) -> A; } + impl MyTrait for S2 { + fn m1(self) -> T { + Default::default() // $ target=default + } + + fn assoc(x: Self) -> T { + Default::default() // $ target=default + } + } + + impl MyTrait for S1 { + fn m1(self) -> i32 { + 0 + } + + fn assoc(x: Self) -> i32 { + 0 + } + } + // Type parameter with bound occurs in the root of a parameter type. fn call_trait_m1 + Copy>(x: T2) -> T1 { @@ -863,6 +883,8 @@ mod function_trait_bounds { println!("{:?}", b); let b = call_trait_thing_m1_3(y3); // $ type=b:S2 target=call_trait_thing_m1_3 println!("{:?}", b); + let x = S1::m2(S1); // $ target=m2 $ type=x:i32 + let y: i32 = S2::m2(S2); // $ target=m2 } } @@ -1520,7 +1542,7 @@ mod method_call_type_conversion { let x7 = S(&S2); // Non-implicit dereference with nested borrow in order to test that the // implicit dereference handling doesn't affect nested borrows. - let t = x7.m1(); // $ target=m1 type=t:& type=t:&T.S2 + let t = x7.m1(); // $ target=m1 type=t:& type=t:TRef.S2 println!("{:?}", x7); let x9: String = "Hello".to_string(); // $ certainType=x9:String target=to_string @@ -1576,11 +1598,18 @@ mod implicit_self_borrow { fn foo(&self) -> &Self { self } + + fn bar(&self, x: &Self) -> &Self { + self + } } pub fn f() { let x = MyStruct(S); x.foo(); // $ target=foo + let x = MyStruct(S); + // `&&x` below is Deref coerced to `&x` (see https://doc.rust-lang.org/std/ops/trait.Deref.html#deref-coercion) + x.bar(&&x); // $ target=bar } } @@ -1703,10 +1732,91 @@ mod builtins { let z = x + y; // $ type=z:i32 target=add let z = x.abs(); // $ target=abs $ type=z:i32 let c = 'c'; // $ certainType=c:char - let hello = "Hello"; // $ certainType=hello:&T.str + let hello = "Hello"; // $ certainType=hello:TRef.str let f = 123.0f64; // $ certainType=f:f64 let t = true; // $ certainType=t:bool let f = false; // $ certainType=f:bool + + trait MyTrait { + fn my_method(&self) -> &T; + + fn my_func() -> T; + } + + impl MyTrait for [T; N] { + fn my_method(&self) -> &T { + self.get(0).unwrap() // $ MISSING: target=get target=unwrap + } + + fn my_func() -> T { + T::default() // $ target=default + } + } + + let x = [1, 2, 3].my_method(); // $ target=my_method type=x:TRef.i32 + let x = <[_; 3]>::my_method(&[1, 2, 3]); // $ target=my_method type=x:TRef.i32 + let x = <[i32; 3]>::my_func(); // $ target=my_func type=x:i32 + + impl MyTrait for [T] { + fn my_method(&self) -> &T { + self.get(0).unwrap() // $ target=get target=unwrap + } + + fn my_func() -> T { + T::default() // $ target=default + } + } + + let s: &[i32] = &[1, 2, 3]; + let x = s.my_method(); // $ target=my_method type=x:TRef.i32 + let x = <[_]>::my_method(s); // $ target=my_method type=x:TRef.i32 + let x = <[i32]>::my_func(); // $ target=my_func type=x:i32 + + impl MyTrait for (T, i32) { + fn my_method(&self) -> &T { + &self.0 // $ fieldof=Tuple2 + } + + fn my_func() -> T { + T::default() // $ target=default + } + } + + let p = (42, 7); + let x = p.my_method(); // $ target=my_method type=x:TRef.i32 + let x = <(_, _)>::my_method(&p); // $ target=my_method type=x:TRef.i32 + let x = <(i32, i32)>::my_func(); // $ target=my_func type=x:i32 + + impl MyTrait for &T { + fn my_method(&self) -> &T { + *self // $ target=deref + } + + fn my_func() -> T { + T::default() // $ target=default + } + } + + let r = &42; + let x = r.my_method(); // $ target=my_method type=x:TRef.i32 + let x = <&_>::my_method(&r); // $ target=my_method type=x:TRef.i32 + let x = <&i32>::my_func(); // $ target=my_func type=x:i32 + + impl MyTrait for *mut T { + fn my_method(&self) -> &T { + unsafe { &**self } // $ target=deref target=deref + } + + fn my_func() -> T { + T::default() // $ target=default + } + } + + let mut v = 42; + let p: *mut i32 = &mut v; + let x = unsafe { p.my_method() }; // $ target=my_method type=x:TRef.i32 + let x = unsafe { <*mut _>::my_method(&p) }; // $ target=my_method type=x:TRef.i32 + let x = <*mut i32>::my_func(); // $ target=my_func type=x:i32 } } @@ -2234,7 +2344,7 @@ mod impl_trait { // For this function the `impl` type does not appear in the root of the return type let f = get_a_my_trait3(S1).unwrap().get_a(); // $ target=get_a_my_trait3 target=unwrap target=MyTrait::get_a type=f:S1 - let g = get_a_my_trait4(S1).0.get_a(); // $ target=get_a_my_trait4 target=MyTrait::get_a type=g:S1 + let g = get_a_my_trait4(S1).0.get_a(); // $ target=get_a_my_trait4 target=MyTrait::get_a type=g:S1 fieldof=Tuple2 } } @@ -2502,24 +2612,24 @@ mod loops { for i in [1, 2, 3].map(|x| x + 1) {} // $ target=map MISSING: type=i:i32 for i in [1, 2, 3].into_iter() {} // $ target=into_iter type=i:i32 - let vals1 = [1u8, 2, 3]; // $ type=vals1:[T;...].u8 + let vals1 = [1u8, 2, 3]; // $ type=vals1:TArray.u8 for u in vals1 {} // $ type=u:u8 - let vals2 = [1u16; 3]; // $ type=vals2:[T;...].u16 + let vals2 = [1u16; 3]; // $ type=vals2:TArray.u16 for u in vals2 {} // $ type=u:u16 - let vals3: [u32; 3] = [1, 2, 3]; // $ certainType=vals3:[T;...].u32 + let vals3: [u32; 3] = [1, 2, 3]; // $ certainType=vals3:TArray.u32 for u in vals3 {} // $ type=u:u32 - let vals4: [u64; 3] = [1; 3]; // $ certainType=vals4:[T;...].u64 + let vals4: [u64; 3] = [1; 3]; // $ certainType=vals4:TArray.u64 for u in vals4 {} // $ type=u:u64 - let mut strings1 = ["foo", "bar", "baz"]; // $ type=strings1:[T;...].&T.str - for s in &strings1 {} // $ type=s:&T.&T.str - for s in &mut strings1 {} // $ type=s:&T.&T.str - for s in strings1 {} // $ type=s:&T.str + let mut strings1 = ["foo", "bar", "baz"]; // $ type=strings1:TArray.TRef.str + for s in &strings1 {} // $ type=s:TRef.TRef.str + for s in &mut strings1 {} // $ type=s:TRef.TRef.str + for s in strings1 {} // $ type=s:TRef.str - let strings2 = // $ type=strings2:[T;...].String + let strings2 = // $ type=strings2:TArray.String [ String::from("foo"), // $ target=from String::from("bar"), // $ target=from @@ -2527,15 +2637,15 @@ mod loops { ]; for s in strings2 {} // $ type=s:String - let strings3 = // $ type=strings3:&T.[T;...].String + let strings3 = // $ type=strings3:TRef.TArray.String &[ String::from("foo"), // $ target=from String::from("bar"), // $ target=from String::from("baz"), // $ target=from ]; - for s in strings3 {} // $ type=s:&T.String + for s in strings3 {} // $ type=s:TRef.String - let callables = [MyCallable::new(), MyCallable::new(), MyCallable::new()]; // $ target=new $ type=callables:[T;...].MyCallable + let callables = [MyCallable::new(), MyCallable::new(), MyCallable::new()]; // $ target=new $ type=callables:TArray.MyCallable for c // $ type=c:MyCallable in callables { @@ -2549,7 +2659,7 @@ mod loops { let range = 0..10; // $ certainType=range:Range type=range:Idx.i32 for i in range {} // $ type=i:i32 let range_full = ..; // $ certainType=range_full:RangeFull - for i in &[1i64, 2i64, 3i64][range_full] {} // $ target=index MISSING: type=i:&T.i64 + for i in &[1i64, 2i64, 3i64][range_full] {} // $ target=index MISSING: type=i:TRef.i64 let range1 = // $ certainType=range1:Range type=range1:Idx.u16 std::ops::Range { @@ -2560,7 +2670,7 @@ mod loops { // for loops with containers - let vals3 = vec![1, 2, 3]; // $ MISSING: type=vals3:Vec type=vals3:T.i32 + let vals3 = vec![1, 2, 3]; // $ type=vals3:Vec $ MISSING: type=vals3:T.i32 for i in vals3 {} // $ MISSING: type=i:i32 let vals4a: Vec = [1u16, 2, 3].to_vec(); // $ certainType=vals4a:Vec certainType=vals4a:T.u16 @@ -2572,27 +2682,27 @@ mod loops { let vals5 = Vec::from([1u32, 2, 3]); // $ certainType=vals5:Vec target=from type=vals5:T.u32 for u in vals5 {} // $ type=u:u32 - let vals6: Vec<&u64> = [1u64, 2, 3].iter().collect(); // $ certainType=vals6:Vec certainType=vals6:T.&T.u64 - for u in vals6 {} // $ type=u:&T.u64 + let vals6: Vec<&u64> = [1u64, 2, 3].iter().collect(); // $ certainType=vals6:Vec certainType=vals6:T.TRef.u64 + for u in vals6 {} // $ type=u:TRef.u64 let mut vals7 = Vec::new(); // $ target=new certainType=vals7:Vec type=vals7:T.u8 vals7.push(1u8); // $ target=push for u in vals7 {} // $ type=u:u8 - let matrix1 = vec![vec![1, 2], vec![3, 4]]; // $ MISSING: type=matrix1:Vec type=matrix1:T.Vec type=matrix1:T.T.i32 + let matrix1 = vec![vec![1, 2], vec![3, 4]]; // $ type=matrix1:Vec $ MISSING: type=matrix1:T.Vec type=matrix1:T.T.i32 #[rustfmt::skip] let _ = for row in matrix1 { // $ MISSING: type=row:Vec type=row:T.i32 for cell in row { // $ MISSING: type=cell:i32 } }; - let mut map1 = std::collections::HashMap::new(); // $ target=new type=map1:K.i32 type=map1:V.Box $ MISSING: type=map1:Hashmap type1=map1:V.T.&T.str + let mut map1 = std::collections::HashMap::new(); // $ target=new type=map1:K.i32 type=map1:V.Box $ MISSING: type=map1:Hashmap type1=map1:V.T.TRef.str map1.insert(1, Box::new("one")); // $ target=insert target=new map1.insert(2, Box::new("two")); // $ target=insert target=new - for key in map1.keys() {} // $ target=keys type=key:&T.i32 - for value in map1.values() {} // $ target=values type=value:&T.Box type=value:&T.T.&T.str - for (key, value) in map1.iter() {} // $ target=iter type=key:&T.i32 type=value:&T.Box type=value:&T.T.&T.str - for (key, value) in &map1 {} // $ type=key:&T.i32 type=value:&T.Box type=value:&T.T.&T.str + for key in map1.keys() {} // $ target=keys type=key:TRef.i32 + for value in map1.values() {} // $ target=values type=value:TRef.Box type=value:TRef.T.TRef.str + for (key, value) in map1.iter() {} // $ target=iter type=key:TRef.i32 type=value:TRef.Box type=value:TRef.T.TRef.str + for (key, value) in &map1 {} // $ type=key:TRef.i32 type=value:TRef.Box type=value:TRef.T.TRef.str // while loops @@ -2680,8 +2790,8 @@ mod tuples { let (mut e, f) = S1::get_pair(); // $ target=get_pair type=e:S1 type=f:S1 let (mut g, mut h) = S1::get_pair(); // $ target=get_pair type=g:S1 type=h:S1 - a.0.foo(); // $ target=foo - b.1.foo(); // $ target=foo + a.0.foo(); // $ target=foo fieldof=Tuple2 + b.1.foo(); // $ target=foo fieldof=Tuple2 c.foo(); // $ target=foo d.foo(); // $ target=foo e.foo(); // $ target=foo @@ -2694,19 +2804,19 @@ mod tuples { // `a` and `b` to be inferred. let a = Default::default(); // $ target=default type=a:i64 let b = Default::default(); // $ target=default type=b:bool - let pair = (a, b); // $ type=pair:0(2).i64 type=pair:1(2).bool - let i: i64 = pair.0; - let j: bool = pair.1; + let pair = (a, b); // $ type=pair:T0.i64 type=pair:T1.bool + let i: i64 = pair.0; // $ fieldof=Tuple2 + let j: bool = pair.1; // $ fieldof=Tuple2 - let pair = [1, 1].into(); // $ type=pair:(T_2) type=pair:0(2).i32 type=pair:1(2).i32 MISSING: target=into + let pair = [1, 1].into(); // $ type=pair:(T_2) type=pair:T0.i32 type=pair:T1.i32 MISSING: target=into match pair { (0, 0) => print!("unexpected"), _ => print!("expected"), } - let x = pair.0; // $ type=x:i32 + let x = pair.0; // $ type=x:i32 fieldof=Tuple2 let y = &S1::get_pair(); // $ target=get_pair - y.0.foo(); // $ target=foo + y.0.foo(); // $ target=foo fieldof=Tuple2 } } @@ -2875,6 +2985,57 @@ mod block_types { } } +mod context_typed { + pub fn f() { + let x = None; // $ type=x:T.i32 + let x: Option = x; + let x = Option::::None; // $ type=x:T.i32 + let x = Option::None::; // $ type=x:T.i32 + + fn pin_option(opt: Option, x: T) {} + + let x = None; // $ type=x:T.i32 + pin_option(x, 0); // $ target=pin_option + + enum MyEither { + A { left: T1 }, + B { right: T2 }, + } + + let x = MyEither::A { left: 0 }; // $ type=x:T1.i32 type=x:T2.String + let x: MyEither = x; + let x = MyEither::<_, String>::A { left: 0 }; // $ type=x:T1.i32 certainType=x:T2.String + #[rustfmt::skip] + let x = MyEither::B:: { // $ certainType=x:T1.i32 type=x:T2.String + right: String::new(), // $ target=new + }; + + fn pin_my_either(e: MyEither, x: T) {} + + #[rustfmt::skip] + let x = MyEither::B { // $ type=x:T1.i32 type=x:T2.String + right: String::new(), // $ target=new + }; + pin_my_either(x, 0); // $ target=pin_my_either + + let x = Result::Ok(0); // $ type=x:E.String + let x: Result = x; + let x = Result::::Ok(0); // $ type=x:E.String + let x = Result::Ok::(0); // $ type=x:E.String + + fn pin_result(res: Result, x: E) {} + + let x = Result::Ok(0); // $ type=x:T.i32 type=x:E.bool + pin_result(x, false); // $ target=pin_result + + let mut x = Vec::new(); // $ type=x:T.i32 target=new + x.push(0); // $ target=push + + let y = Default::default(); // $ type=y:i32 target=default + x.push(y); // $ target=push + } +} + mod blanket_impl; mod closure; mod dereference; diff --git a/rust/ql/test/library-tests/type-inference/pattern_matching.rs b/rust/ql/test/library-tests/type-inference/pattern_matching.rs index 569b06ab9a7e..b7f96cd555b0 100755 --- a/rust/ql/test/library-tests/type-inference/pattern_matching.rs +++ b/rust/ql/test/library-tests/type-inference/pattern_matching.rs @@ -37,18 +37,18 @@ pub fn f() -> Option<()> { let value3 = 42; if let ref mesg = value3 { - let mesg = mesg; // $ type=mesg:&T.i32 + let mesg = mesg; // $ type=mesg:TRef.i32 println!("{mesg}"); } let value4 = Some(42); if let Some(ref mesg) = value4 { - let mesg = mesg; // $ type=mesg:&T.i32 + let mesg = mesg; // $ type=mesg:TRef.i32 println!("{mesg}"); } let ref value5 = 42; - let x = value5; // $ type=x:&T.i32 + let x = value5; // $ type=x:TRef.i32 let my_record_struct = MyRecordStruct { value1: 42, @@ -102,7 +102,7 @@ pub fn f() -> Option<()> { ) => { let a = value1; // $ type=a:bool let b = x; // $ type=b:i32 - let c = y; // $ type=c:&T.str + let c = y; // $ type=c:TRef.str (); } _ => (), @@ -197,7 +197,7 @@ pub fn literal_patterns() { let string_val = "hello"; match string_val { "hello" => { - let hello_match = string_val; // $ certainType=hello_match:&T.str + let hello_match = string_val; // $ certainType=hello_match:TRef.str println!("String literal: {}", hello_match); } _ => {} @@ -230,7 +230,7 @@ pub fn identifier_patterns() { // IdentPat with ref match &value { ref x => { - let ref_bound = x; // $ type=ref_bound:&T.&T.i32 + let ref_bound = x; // $ type=ref_bound:TRef.TRef.i32 println!("Reference identifier: {:?}", ref_bound); } } @@ -269,7 +269,7 @@ pub fn identifier_patterns() { let mut ref_mut_val = 5i32; match &mut ref_mut_val { ref mut x => { - let ref_mut_bound = x; // $ type=ref_mut_bound:&T.&T.i32 + let ref_mut_bound = x; // $ type=ref_mut_bound:TRef.TRef.i32 **ref_mut_bound += 1; // $ target=deref target=add_assign println!("Ref mut pattern"); } @@ -341,14 +341,14 @@ pub fn reference_patterns() { match &mut mutable_value { &mut ref x => { - let mut_ref_bound = x; // $ type=mut_ref_bound:&T.i32 + let mut_ref_bound = x; // $ type=mut_ref_bound:TRef.i32 println!("Mutable ref pattern: {}", mut_ref_bound); } } match &value { ref x => { - let ref_pattern = x; // $ type=ref_pattern:&T.&T.i32 + let ref_pattern = x; // $ type=ref_pattern:TRef.TRef.i32 println!("Reference pattern: {}", ref_pattern); } } @@ -525,7 +525,7 @@ pub fn slice_patterns() { // SlicePat - Slice patterns match slice { [] => { - let empty_slice = slice; // $ certainType=empty_slice:&T.[T].i32 + let empty_slice = slice; // $ certainType=empty_slice:TRef.TSlice.i32 println!("Empty slice: {:?}", empty_slice); } [x] => { @@ -540,7 +540,7 @@ pub fn slice_patterns() { [first, middle @ .., last] => { let slice_start = *first; // $ MISSING: type=slice_start:i32 let slice_end = *last; // $ MISSING: type=slice_end:i32 - let slice_middle = middle; // $ MISSING: type=slice_middle:&T.[T].i32 + let slice_middle = middle; // $ MISSING: type=slice_middle:TRef.TSlice.i32 println!( "First: {}, last: {}, middle len: {}", slice_start, @@ -717,7 +717,7 @@ pub fn complex_nested_patterns() { } // Catch-all with identifier pattern other => { - let other_complex = other; // $ type=other_complex:0(2).Point type=other_complex:1(2).MyOption + let other_complex = other; // $ type=other_complex:T0.Point type=other_complex:T1.MyOption println!("Other complex data: {:?}", other_complex); } } @@ -750,7 +750,7 @@ pub fn patterns_in_let_statements() { // Let with reference pattern let value = 42i32; let ref ref_val = value; - let let_ref = ref_val; // $ certainType=let_ref:&T.i32 + let let_ref = ref_val; // $ certainType=let_ref:TRef.i32 // Let with mutable pattern let mut mut_val = 10i32; @@ -779,13 +779,13 @@ pub fn patterns_in_function_parameters() { // Call the functions to use them let point = Point { x: 5, y: 10 }; - let extracted = extract_point(point); // $ target=extract_point certainType=extracted:0(2).i32 certainType=extracted:1(2).i32 + let extracted = extract_point(point); // $ target=extract_point certainType=extracted:T0.i32 certainType=extracted:T1.i32 let color = Color(200, 100, 50); let red = extract_color(color); // $ target=extract_color certainType=red:u8 let tuple = (42i32, 3.14f64, true); - let tuple_extracted = extract_tuple(tuple); // $ target=extract_tuple certainType=tuple_extracted:0(2).i32 certainType=tuple_extracted:1(2).bool + let tuple_extracted = extract_tuple(tuple); // $ target=extract_tuple certainType=tuple_extracted:T0.i32 certainType=tuple_extracted:T1.bool } #[rustfmt::skip] diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index d9b5e5782abf..6e8901b73490 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1,106 +1,92 @@ inferType -| blanket_impl.rs:15:18:15:22 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:15:18:15:22 | SelfParam | &T | blanket_impl.rs:9:5:10:14 | S2 | -| blanket_impl.rs:15:42:17:9 | { ... } | | file://:0:0:0:0 | & | -| blanket_impl.rs:15:42:17:9 | { ... } | &T | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:16:13:16:15 | &S1 | | file://:0:0:0:0 | & | -| blanket_impl.rs:16:13:16:15 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:15:18:15:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:15:18:15:22 | SelfParam | TRef | blanket_impl.rs:9:5:10:14 | S2 | +| blanket_impl.rs:15:42:17:9 | { ... } | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:15:42:17:9 | { ... } | TRef | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:16:13:16:15 | &S1 | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:16:13:16:15 | &S1 | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:16:14:16:15 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:21:19:21:23 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:21:19:21:23 | SelfParam | &T | blanket_impl.rs:20:5:22:5 | Self [trait Clone1] | -| blanket_impl.rs:25:22:25:26 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:25:22:25:26 | SelfParam | &T | blanket_impl.rs:24:5:28:5 | Self [trait Duplicatable] | -| blanket_impl.rs:32:19:32:23 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:32:19:32:23 | SelfParam | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:21:19:21:23 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:21:19:21:23 | SelfParam | TRef | blanket_impl.rs:20:5:22:5 | Self [trait Clone1] | +| blanket_impl.rs:25:22:25:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:25:22:25:26 | SelfParam | TRef | blanket_impl.rs:24:5:28:5 | Self [trait Duplicatable] | +| blanket_impl.rs:32:19:32:23 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:32:19:32:23 | SelfParam | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:32:34:34:9 | { ... } | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:33:13:33:17 | * ... | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:33:14:33:17 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:33:14:33:17 | self | &T | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:40:22:40:26 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:40:22:40:26 | SelfParam | &T | blanket_impl.rs:38:10:38:18 | T | +| blanket_impl.rs:33:14:33:17 | self | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:33:14:33:17 | self | TRef | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:40:22:40:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:40:22:40:26 | SelfParam | TRef | blanket_impl.rs:38:10:38:18 | T | | blanket_impl.rs:40:37:42:9 | { ... } | | blanket_impl.rs:38:10:38:18 | T | -| blanket_impl.rs:41:13:41:16 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:41:13:41:16 | self | &T | blanket_impl.rs:38:10:38:18 | T | +| blanket_impl.rs:41:13:41:16 | self | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:41:13:41:16 | self | TRef | blanket_impl.rs:38:10:38:18 | T | | blanket_impl.rs:41:13:41:25 | self.clone1() | | blanket_impl.rs:38:10:38:18 | T | -| blanket_impl.rs:45:33:60:5 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:45:33:60:5 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:46:13:46:14 | x1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:46:18:46:19 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:46:18:46:28 | S1.clone1() | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:47:18:47:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:47:18:47:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:47:18:47:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:47:18:47:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:47:18:47:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:47:18:47:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:47:20:47:21 | x1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:48:13:48:14 | x2 | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:48:18:48:22 | (...) | | file://:0:0:0:0 | & | -| blanket_impl.rs:48:18:48:22 | (...) | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:48:18:48:22 | (...) | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:48:18:48:22 | (...) | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:48:18:48:31 | ... .clone1() | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:48:19:48:21 | &S1 | | file://:0:0:0:0 | & | -| blanket_impl.rs:48:19:48:21 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:48:19:48:21 | &S1 | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:48:19:48:21 | &S1 | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:48:20:48:21 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:49:18:49:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:49:18:49:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:49:18:49:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:49:18:49:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:49:18:49:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:49:18:49:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:49:20:49:21 | x2 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:50:13:50:14 | x3 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:50:18:50:19 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:50:18:50:31 | S1.duplicate() | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:51:18:51:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:51:18:51:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:51:18:51:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:51:18:51:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:51:18:51:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:51:18:51:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:51:20:51:21 | x3 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:52:13:52:14 | x4 | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:52:18:52:22 | (...) | | file://:0:0:0:0 | & | -| blanket_impl.rs:52:18:52:22 | (...) | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:52:18:52:22 | (...) | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:52:18:52:22 | (...) | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:52:18:52:34 | ... .duplicate() | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:52:19:52:21 | &S1 | | file://:0:0:0:0 | & | -| blanket_impl.rs:52:19:52:21 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:52:19:52:21 | &S1 | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:52:19:52:21 | &S1 | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:52:20:52:21 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:53:18:53:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:53:18:53:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:53:18:53:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:53:18:53:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:53:18:53:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:53:18:53:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:53:20:53:21 | x4 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:54:13:54:14 | x5 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:54:18:54:35 | ...::duplicate(...) | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:54:32:54:34 | &S1 | | file://:0:0:0:0 | & | -| blanket_impl.rs:54:32:54:34 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:54:32:54:34 | &S1 | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:54:32:54:34 | &S1 | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:54:33:54:34 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:55:18:55:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:55:18:55:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:55:18:55:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:55:18:55:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:55:18:55:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:55:18:55:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:55:20:55:21 | x5 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:56:18:56:19 | S2 | | blanket_impl.rs:9:5:10:14 | S2 | -| blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:57:18:57:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:57:18:57:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:57:18:57:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:57:18:57:25 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:58:18:58:22 | (...) | | file://:0:0:0:0 | & | -| blanket_impl.rs:58:18:58:22 | (...) | &T | blanket_impl.rs:9:5:10:14 | S2 | -| blanket_impl.rs:58:19:58:21 | &S2 | | file://:0:0:0:0 | & | -| blanket_impl.rs:58:19:58:21 | &S2 | &T | blanket_impl.rs:9:5:10:14 | S2 | +| blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:57:18:57:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:57:18:57:25 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:58:18:58:22 | (...) | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:58:18:58:22 | (...) | TRef | blanket_impl.rs:9:5:10:14 | S2 | +| blanket_impl.rs:58:19:58:21 | &S2 | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:58:19:58:21 | &S2 | TRef | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:58:20:58:21 | S2 | | blanket_impl.rs:9:5:10:14 | S2 | -| blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:59:18:59:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:59:18:59:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:59:18:59:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:59:18:59:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:59:18:59:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:59:18:59:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:68:24:68:24 | x | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:68:32:68:32 | y | | blanket_impl.rs:67:5:69:5 | Self [trait Trait1] | | blanket_impl.rs:72:24:72:24 | x | | {EXTERNAL LOCATION} | i64 | @@ -115,103 +101,91 @@ inferType | blanket_impl.rs:85:13:85:32 | ...::assoc_func1(...) | | blanket_impl.rs:82:10:82:18 | T | | blanket_impl.rs:85:28:85:28 | x | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:85:31:85:31 | y | | blanket_impl.rs:82:10:82:18 | T | -| blanket_impl.rs:89:33:98:5 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:89:33:98:5 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:90:13:90:14 | x1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:90:18:90:39 | ...::assoc_func1(...) | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:90:34:90:34 | 1 | | {EXTERNAL LOCATION} | i32 | -| blanket_impl.rs:90:34:90:34 | 1 | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:90:37:90:38 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | -| blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:91:18:91:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:91:18:91:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:91:18:91:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:91:18:91:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:91:18:91:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:91:18:91:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:91:20:91:21 | x1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:92:13:92:14 | x2 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:92:18:92:43 | ...::assoc_func1(...) | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:92:38:92:38 | 1 | | {EXTERNAL LOCATION} | i32 | -| blanket_impl.rs:92:38:92:38 | 1 | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:92:41:92:42 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | -| blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:93:18:93:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:93:18:93:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:93:18:93:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:93:18:93:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:93:18:93:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:93:18:93:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:93:20:93:21 | x2 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:94:13:94:14 | x3 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:94:18:94:39 | ...::assoc_func2(...) | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:94:34:94:34 | 1 | | {EXTERNAL LOCATION} | i32 | -| blanket_impl.rs:94:34:94:34 | 1 | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:94:37:94:38 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | -| blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:95:18:95:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:95:18:95:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:95:18:95:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:95:18:95:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:95:18:95:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:95:18:95:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:95:20:95:21 | x3 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:96:13:96:14 | x4 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:96:18:96:43 | ...::assoc_func2(...) | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:96:38:96:38 | 1 | | {EXTERNAL LOCATION} | i32 | -| blanket_impl.rs:96:38:96:38 | 1 | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:96:41:96:42 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | -| blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:97:18:97:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:97:18:97:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:97:18:97:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:97:18:97:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:97:18:97:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:97:18:97:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:97:20:97:21 | x4 | | blanket_impl.rs:64:5:65:14 | S1 | -| blanket_impl.rs:108:22:108:26 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:108:22:108:26 | SelfParam | &T | blanket_impl.rs:107:5:109:5 | Self [trait Flag] | -| blanket_impl.rs:112:26:112:30 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:112:26:112:30 | SelfParam | &T | blanket_impl.rs:111:5:113:5 | Self [trait TryFlag] | -| blanket_impl.rs:119:26:119:30 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:119:26:119:30 | SelfParam | &T | blanket_impl.rs:115:10:115:11 | Fl | +| blanket_impl.rs:108:22:108:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:108:22:108:26 | SelfParam | TRef | blanket_impl.rs:107:5:109:5 | Self [trait Flag] | +| blanket_impl.rs:112:26:112:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:112:26:112:30 | SelfParam | TRef | blanket_impl.rs:111:5:113:5 | Self [trait TryFlag] | +| blanket_impl.rs:119:26:119:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:119:26:119:30 | SelfParam | TRef | blanket_impl.rs:115:10:115:11 | Fl | | blanket_impl.rs:119:49:121:9 | { ... } | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:119:49:121:9 | { ... } | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:120:13:120:34 | Some(...) | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:120:13:120:34 | Some(...) | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:120:18:120:21 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:120:18:120:21 | self | &T | blanket_impl.rs:115:10:115:11 | Fl | +| blanket_impl.rs:120:18:120:21 | self | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:120:18:120:21 | self | TRef | blanket_impl.rs:115:10:115:11 | Fl | | blanket_impl.rs:120:18:120:33 | self.read_flag() | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:126:32:126:36 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:126:32:126:36 | SelfParam | &T | blanket_impl.rs:124:5:129:5 | Self [trait TryFlagExt] | +| blanket_impl.rs:126:32:126:36 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:126:32:126:36 | SelfParam | TRef | blanket_impl.rs:124:5:129:5 | Self [trait TryFlagExt] | | blanket_impl.rs:126:55:128:9 | { ... } | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:126:55:128:9 | { ... } | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:127:13:127:16 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:127:13:127:16 | self | &T | blanket_impl.rs:124:5:129:5 | Self [trait TryFlagExt] | +| blanket_impl.rs:127:13:127:16 | self | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:127:13:127:16 | self | TRef | blanket_impl.rs:124:5:129:5 | Self [trait TryFlagExt] | | blanket_impl.rs:127:13:127:32 | self.try_read_flag() | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:127:13:127:32 | self.try_read_flag() | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:135:32:135:36 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:135:32:135:36 | SelfParam | &T | blanket_impl.rs:133:5:136:5 | Self [trait AnotherTryFlag] | -| blanket_impl.rs:144:26:144:30 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:144:26:144:30 | SelfParam | &T | blanket_impl.rs:138:5:140:5 | MyTryFlag | +| blanket_impl.rs:135:32:135:36 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:135:32:135:36 | SelfParam | TRef | blanket_impl.rs:133:5:136:5 | Self [trait AnotherTryFlag] | +| blanket_impl.rs:144:26:144:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:144:26:144:30 | SelfParam | TRef | blanket_impl.rs:138:5:140:5 | MyTryFlag | | blanket_impl.rs:144:49:146:9 | { ... } | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:144:49:146:9 | { ... } | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:145:13:145:27 | Some(...) | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:145:13:145:27 | Some(...) | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:145:18:145:21 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:145:18:145:21 | self | &T | blanket_impl.rs:138:5:140:5 | MyTryFlag | +| blanket_impl.rs:145:18:145:21 | self | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:145:18:145:21 | self | TRef | blanket_impl.rs:138:5:140:5 | MyTryFlag | | blanket_impl.rs:145:18:145:26 | self.flag | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:155:22:155:26 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:155:22:155:26 | SelfParam | &T | blanket_impl.rs:149:5:151:5 | MyFlag | +| blanket_impl.rs:155:22:155:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:155:22:155:26 | SelfParam | TRef | blanket_impl.rs:149:5:151:5 | MyFlag | | blanket_impl.rs:155:37:157:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:156:13:156:16 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:156:13:156:16 | self | &T | blanket_impl.rs:149:5:151:5 | MyFlag | +| blanket_impl.rs:156:13:156:16 | self | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:156:13:156:16 | self | TRef | blanket_impl.rs:149:5:151:5 | MyFlag | | blanket_impl.rs:156:13:156:21 | self.flag | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:166:32:166:36 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:166:32:166:36 | SelfParam | &T | blanket_impl.rs:160:5:162:5 | MyOtherFlag | +| blanket_impl.rs:166:32:166:36 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:166:32:166:36 | SelfParam | TRef | blanket_impl.rs:160:5:162:5 | MyOtherFlag | | blanket_impl.rs:166:55:168:9 | { ... } | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:166:55:168:9 | { ... } | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:167:13:167:27 | Some(...) | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:167:13:167:27 | Some(...) | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:167:18:167:21 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:167:18:167:21 | self | &T | blanket_impl.rs:160:5:162:5 | MyOtherFlag | +| blanket_impl.rs:167:18:167:21 | self | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:167:18:167:21 | self | TRef | blanket_impl.rs:160:5:162:5 | MyOtherFlag | | blanket_impl.rs:167:18:167:26 | self.flag | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:171:15:184:5 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:171:15:184:5 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:172:13:172:23 | my_try_flag | | blanket_impl.rs:138:5:140:5 | MyTryFlag | | blanket_impl.rs:172:27:172:50 | MyTryFlag {...} | | blanket_impl.rs:138:5:140:5 | MyTryFlag | | blanket_impl.rs:172:45:172:48 | true | | {EXTERNAL LOCATION} | bool | @@ -238,135 +212,131 @@ inferType | blanket_impl.rs:211:15:211:18 | SelfParam | | blanket_impl.rs:209:5:212:5 | Self [trait MyTrait4a] | | blanket_impl.rs:216:15:216:18 | SelfParam | | blanket_impl.rs:214:5:217:5 | Self [trait MyTrait4b] | | blanket_impl.rs:221:15:221:18 | SelfParam | | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:221:21:221:22 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:221:21:221:22 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:226:15:226:18 | SelfParam | | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:226:21:226:22 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:231:15:231:18 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:231:15:231:18 | SelfParam | &T | blanket_impl.rs:229:10:229:27 | T | -| blanket_impl.rs:231:21:233:9 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:232:13:232:16 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:232:13:232:16 | self | &T | blanket_impl.rs:229:10:229:27 | T | -| blanket_impl.rs:232:13:232:21 | self.m1() | | file://:0:0:0:0 | () | -| blanket_impl.rs:238:15:238:18 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:238:15:238:18 | SelfParam | &T | file://:0:0:0:0 | & | -| blanket_impl.rs:238:15:238:18 | SelfParam | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:238:21:240:9 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:239:13:239:16 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:239:13:239:16 | self | &T | file://:0:0:0:0 | & | -| blanket_impl.rs:239:13:239:16 | self | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:239:13:239:21 | self.m1() | | file://:0:0:0:0 | () | +| blanket_impl.rs:226:21:226:22 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:231:15:231:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:231:15:231:18 | SelfParam | TRef | blanket_impl.rs:229:10:229:27 | T | +| blanket_impl.rs:231:21:233:9 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:232:13:232:16 | self | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:232:13:232:16 | self | TRef | blanket_impl.rs:229:10:229:27 | T | +| blanket_impl.rs:232:13:232:21 | self.m1() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:238:15:238:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:238:15:238:18 | SelfParam | TRef | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:238:15:238:18 | SelfParam | TRef.TRef | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:238:21:240:9 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:239:13:239:16 | self | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:239:13:239:16 | self | TRef | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:239:13:239:16 | self | TRef.TRef | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:239:13:239:21 | self.m1() | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:245:15:245:18 | SelfParam | | blanket_impl.rs:243:10:243:20 | T | -| blanket_impl.rs:245:21:247:9 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:245:21:247:9 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:246:13:246:16 | self | | blanket_impl.rs:243:10:243:20 | T | -| blanket_impl.rs:246:13:246:21 | self.m3() | | file://:0:0:0:0 | () | -| blanket_impl.rs:252:15:252:18 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:252:15:252:18 | SelfParam | &T | blanket_impl.rs:250:10:250:10 | T | -| blanket_impl.rs:252:21:252:22 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:255:33:263:5 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:256:13:256:14 | x1 | | file://:0:0:0:0 | () | +| blanket_impl.rs:246:13:246:21 | self.m3() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:252:15:252:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:252:15:252:18 | SelfParam | TRef | blanket_impl.rs:250:10:250:10 | T | +| blanket_impl.rs:252:21:252:22 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:255:33:263:5 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:256:13:256:14 | x1 | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:256:18:256:19 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:256:18:256:24 | S1.m1() | | file://:0:0:0:0 | () | -| blanket_impl.rs:257:13:257:14 | x2 | | file://:0:0:0:0 | () | -| blanket_impl.rs:257:18:257:22 | (...) | | file://:0:0:0:0 | & | -| blanket_impl.rs:257:18:257:22 | (...) | &T | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:257:18:257:27 | ... .m2() | | file://:0:0:0:0 | () | -| blanket_impl.rs:257:19:257:21 | &S1 | | file://:0:0:0:0 | & | -| blanket_impl.rs:257:19:257:21 | &S1 | &T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:256:18:256:24 | S1.m1() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:257:13:257:14 | x2 | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:257:18:257:22 | (...) | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:257:18:257:22 | (...) | TRef | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:257:18:257:27 | ... .m2() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:257:19:257:21 | &S1 | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:257:19:257:21 | &S1 | TRef | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:257:20:257:21 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:258:13:258:14 | x3 | | file://:0:0:0:0 | () | -| blanket_impl.rs:258:18:258:23 | (...) | | file://:0:0:0:0 | & | -| blanket_impl.rs:258:18:258:23 | (...) | &T | file://:0:0:0:0 | & | -| blanket_impl.rs:258:18:258:23 | (...) | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:258:18:258:28 | ... .m2() | | file://:0:0:0:0 | () | -| blanket_impl.rs:258:19:258:22 | &... | | file://:0:0:0:0 | & | -| blanket_impl.rs:258:19:258:22 | &... | &T | file://:0:0:0:0 | & | -| blanket_impl.rs:258:19:258:22 | &... | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:258:20:258:22 | &S1 | | file://:0:0:0:0 | & | -| blanket_impl.rs:258:20:258:22 | &S1 | &T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:258:13:258:14 | x3 | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:258:18:258:23 | (...) | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:258:18:258:23 | (...) | TRef | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:258:18:258:23 | (...) | TRef.TRef | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:258:18:258:28 | ... .m2() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:258:19:258:22 | &... | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:258:19:258:22 | &... | TRef | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:258:19:258:22 | &... | TRef.TRef | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:258:20:258:22 | &S1 | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:258:20:258:22 | &S1 | TRef | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:258:21:258:22 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:259:13:259:14 | x4 | | file://:0:0:0:0 | () | +| blanket_impl.rs:259:13:259:14 | x4 | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:259:18:259:19 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:259:18:259:24 | S1.m4() | | file://:0:0:0:0 | () | -| blanket_impl.rs:260:13:260:14 | x5 | | file://:0:0:0:0 | () | -| blanket_impl.rs:260:18:260:22 | (...) | | file://:0:0:0:0 | & | -| blanket_impl.rs:260:18:260:22 | (...) | &T | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:260:18:260:27 | ... .m4() | | file://:0:0:0:0 | () | -| blanket_impl.rs:260:19:260:21 | &S1 | | file://:0:0:0:0 | & | -| blanket_impl.rs:260:19:260:21 | &S1 | &T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:259:18:259:24 | S1.m4() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:260:13:260:14 | x5 | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:260:18:260:22 | (...) | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:260:18:260:22 | (...) | TRef | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:260:18:260:27 | ... .m4() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:260:19:260:21 | &S1 | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:260:19:260:21 | &S1 | TRef | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:260:20:260:21 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:261:13:261:14 | x6 | | file://:0:0:0:0 | () | +| blanket_impl.rs:261:13:261:14 | x6 | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:261:18:261:19 | S2 | | blanket_impl.rs:191:5:192:14 | S2 | -| blanket_impl.rs:261:18:261:24 | S2.m4() | | file://:0:0:0:0 | () | -| blanket_impl.rs:262:13:262:14 | x7 | | file://:0:0:0:0 | () | -| blanket_impl.rs:262:18:262:22 | (...) | | file://:0:0:0:0 | & | -| blanket_impl.rs:262:18:262:22 | (...) | &T | blanket_impl.rs:191:5:192:14 | S2 | -| blanket_impl.rs:262:18:262:27 | ... .m4() | | file://:0:0:0:0 | () | -| blanket_impl.rs:262:19:262:21 | &S2 | | file://:0:0:0:0 | & | -| blanket_impl.rs:262:19:262:21 | &S2 | &T | blanket_impl.rs:191:5:192:14 | S2 | +| blanket_impl.rs:261:18:261:24 | S2.m4() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:262:13:262:14 | x7 | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:262:18:262:22 | (...) | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:262:18:262:22 | (...) | TRef | blanket_impl.rs:191:5:192:14 | S2 | +| blanket_impl.rs:262:18:262:27 | ... .m4() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:262:19:262:21 | &S2 | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:262:19:262:21 | &S2 | TRef | blanket_impl.rs:191:5:192:14 | S2 | | blanket_impl.rs:262:20:262:21 | S2 | | blanket_impl.rs:191:5:192:14 | S2 | -| blanket_impl.rs:272:21:272:25 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:272:21:272:25 | SelfParam | &T | blanket_impl.rs:271:5:274:5 | Self [trait Executor] | -| blanket_impl.rs:273:24:273:28 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:273:24:273:28 | SelfParam | &T | blanket_impl.rs:271:5:274:5 | Self [trait Executor] | +| blanket_impl.rs:272:21:272:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:272:21:272:25 | SelfParam | TRef | blanket_impl.rs:271:5:274:5 | Self [trait Executor] | +| blanket_impl.rs:273:24:273:28 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:273:24:273:28 | SelfParam | TRef | blanket_impl.rs:271:5:274:5 | Self [trait Executor] | | blanket_impl.rs:273:31:273:35 | query | | blanket_impl.rs:273:21:273:21 | E | -| blanket_impl.rs:277:21:277:25 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:277:21:277:25 | SelfParam | &T | blanket_impl.rs:276:10:276:22 | T | -| blanket_impl.rs:277:28:279:9 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:278:22:278:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:278:22:278:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:278:22:278:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:278:22:278:41 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:281:24:281:28 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:281:24:281:28 | SelfParam | &T | blanket_impl.rs:276:10:276:22 | T | +| blanket_impl.rs:277:21:277:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:277:21:277:25 | SelfParam | TRef | blanket_impl.rs:276:10:276:22 | T | +| blanket_impl.rs:277:28:279:9 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | TRef | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:278:22:278:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:278:22:278:41 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:281:24:281:28 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:281:24:281:28 | SelfParam | TRef | blanket_impl.rs:276:10:276:22 | T | | blanket_impl.rs:281:31:281:36 | _query | | blanket_impl.rs:281:21:281:21 | E | -| blanket_impl.rs:281:42:283:9 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:282:22:282:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:282:22:282:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:282:22:282:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:282:22:282:41 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:290:16:300:5 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:281:42:283:9 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | TRef | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:282:22:282:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:282:22:282:41 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:290:16:300:5 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:291:13:291:13 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:291:17:291:34 | MySqlConnection {...} | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:293:9:293:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | -| blanket_impl.rs:293:9:293:20 | c.execute1() | | file://:0:0:0:0 | () | -| blanket_impl.rs:294:9:294:37 | ...::execute1(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:294:35:294:36 | &c | | file://:0:0:0:0 | & | -| blanket_impl.rs:294:35:294:36 | &c | &T | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:293:9:293:20 | c.execute1() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:294:9:294:37 | ...::execute1(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:294:35:294:36 | &c | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:294:35:294:36 | &c | TRef | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:294:36:294:36 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:296:9:296:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | -| blanket_impl.rs:296:9:296:41 | c.execute2(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:296:20:296:40 | "SELECT * FROM users" | | file://:0:0:0:0 | & | -| blanket_impl.rs:296:20:296:40 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:296:9:296:41 | c.execute2(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:296:20:296:40 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:296:20:296:40 | "SELECT * FROM users" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:297:9:297:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | -| blanket_impl.rs:297:9:297:49 | c.execute2(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | | file://:0:0:0:0 | & | -| blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:298:9:298:60 | ...::execute2(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:298:35:298:36 | &c | | file://:0:0:0:0 | & | -| blanket_impl.rs:298:35:298:36 | &c | &T | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:297:9:297:49 | c.execute2(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | TRef | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:298:9:298:60 | ...::execute2(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:298:35:298:36 | &c | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:298:35:298:36 | &c | TRef | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:298:36:298:36 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | -| blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | | file://:0:0:0:0 | & | -| blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:299:9:299:68 | ...::execute2::<...>(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:299:43:299:44 | &c | | file://:0:0:0:0 | & | -| blanket_impl.rs:299:43:299:44 | &c | &T | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | TRef | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:299:9:299:68 | ...::execute2::<...>(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:299:43:299:44 | &c | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:299:43:299:44 | &c | TRef | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:299:44:299:44 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | -| blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | | file://:0:0:0:0 | & | -| blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | -| closure.rs:4:19:31:5 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | TRef | {EXTERNAL LOCATION} | str | +| closure.rs:4:19:31:5 | { ... } | | {EXTERNAL LOCATION} | () | | closure.rs:6:13:6:22 | my_closure | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:6:13:6:22 | my_closure | dyn(Args) | file://:0:0:0:0 | (T_2) | -| closure.rs:6:13:6:22 | my_closure | dyn(Args).0(2) | {EXTERNAL LOCATION} | bool | -| closure.rs:6:13:6:22 | my_closure | dyn(Args).1(2) | {EXTERNAL LOCATION} | bool | +| closure.rs:6:13:6:22 | my_closure | dyn(Args) | {EXTERNAL LOCATION} | (T_2) | +| closure.rs:6:13:6:22 | my_closure | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:6:13:6:22 | my_closure | dyn(Args).T1 | {EXTERNAL LOCATION} | bool | | closure.rs:6:13:6:22 | my_closure | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:6:26:6:38 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:6:26:6:38 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_2) | -| closure.rs:6:26:6:38 | \|...\| ... | dyn(Args).0(2) | {EXTERNAL LOCATION} | bool | -| closure.rs:6:26:6:38 | \|...\| ... | dyn(Args).1(2) | {EXTERNAL LOCATION} | bool | +| closure.rs:6:26:6:38 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_2) | +| closure.rs:6:26:6:38 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:6:26:6:38 | \|...\| ... | dyn(Args).T1 | {EXTERNAL LOCATION} | bool | | closure.rs:6:26:6:38 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:6:27:6:27 | a | | {EXTERNAL LOCATION} | bool | | closure.rs:6:30:6:30 | b | | {EXTERNAL LOCATION} | bool | @@ -376,12 +346,12 @@ inferType | closure.rs:8:13:8:13 | x | | {EXTERNAL LOCATION} | i64 | | closure.rs:8:22:8:25 | 1i64 | | {EXTERNAL LOCATION} | i64 | | closure.rs:9:13:9:19 | add_one | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:9:13:9:19 | add_one | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:9:13:9:19 | add_one | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:9:13:9:19 | add_one | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:9:13:9:19 | add_one | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:9:13:9:19 | add_one | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:9:23:9:34 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:9:23:9:34 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:9:23:9:34 | \|...\| ... | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:9:23:9:34 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:9:23:9:34 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:9:23:9:34 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:9:24:9:24 | n | | {EXTERNAL LOCATION} | i64 | | closure.rs:9:27:9:27 | n | | {EXTERNAL LOCATION} | i64 | @@ -389,64 +359,64 @@ inferType | closure.rs:9:31:9:34 | 1i64 | | {EXTERNAL LOCATION} | i64 | | closure.rs:10:13:10:14 | _y | | {EXTERNAL LOCATION} | i64 | | closure.rs:10:18:10:24 | add_one | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:10:18:10:24 | add_one | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:10:18:10:24 | add_one | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:10:18:10:24 | add_one | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:10:18:10:24 | add_one | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:10:18:10:24 | add_one | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:10:18:10:27 | add_one(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:10:26:10:26 | x | | {EXTERNAL LOCATION} | i64 | | closure.rs:13:13:13:13 | x | | {EXTERNAL LOCATION} | i64 | | closure.rs:13:17:13:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:14:13:14:20 | add_zero | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:14:13:14:20 | add_zero | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:14:13:14:20 | add_zero | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:14:13:14:20 | add_zero | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:14:13:14:20 | add_zero | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:14:13:14:20 | add_zero | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:14:24:14:33 | \|...\| n | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:14:24:14:33 | \|...\| n | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:14:24:14:33 | \|...\| n | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:14:24:14:33 | \|...\| n | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:14:24:14:33 | \|...\| n | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:14:24:14:33 | \|...\| n | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:14:25:14:25 | n | | {EXTERNAL LOCATION} | i64 | | closure.rs:14:33:14:33 | n | | {EXTERNAL LOCATION} | i64 | | closure.rs:15:13:15:14 | _y | | {EXTERNAL LOCATION} | i64 | | closure.rs:15:18:15:25 | add_zero | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:15:18:15:25 | add_zero | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:15:18:15:25 | add_zero | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:15:18:15:25 | add_zero | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:15:18:15:25 | add_zero | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:15:18:15:25 | add_zero | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:15:18:15:28 | add_zero(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:15:27:15:27 | x | | {EXTERNAL LOCATION} | i64 | | closure.rs:17:13:17:21 | _get_bool | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:17:13:17:21 | _get_bool | dyn(Args) | file://:0:0:0:0 | () | +| closure.rs:17:13:17:21 | _get_bool | dyn(Args) | {EXTERNAL LOCATION} | () | | closure.rs:17:13:17:21 | _get_bool | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:17:25:21:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:17:25:21:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | () | +| closure.rs:17:25:21:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | () | | closure.rs:17:25:21:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:17:36:21:9 | { ... } | | {EXTERNAL LOCATION} | bool | | closure.rs:19:17:19:17 | b | | {EXTERNAL LOCATION} | bool | | closure.rs:19:21:19:38 | ...::default(...) | | {EXTERNAL LOCATION} | bool | | closure.rs:20:13:20:13 | b | | {EXTERNAL LOCATION} | bool | | closure.rs:24:13:24:14 | id | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:24:13:24:14 | id | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:24:13:24:14 | id | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:24:13:24:14 | id | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:24:13:24:14 | id | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:24:13:24:14 | id | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:24:18:24:22 | \|...\| b | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:24:18:24:22 | \|...\| b | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:24:18:24:22 | \|...\| b | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:24:18:24:22 | \|...\| b | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:24:18:24:22 | \|...\| b | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:24:18:24:22 | \|...\| b | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:24:19:24:19 | b | | {EXTERNAL LOCATION} | bool | | closure.rs:24:22:24:22 | b | | {EXTERNAL LOCATION} | bool | | closure.rs:25:13:25:14 | _b | | {EXTERNAL LOCATION} | bool | | closure.rs:25:18:25:19 | id | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:25:18:25:19 | id | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:25:18:25:19 | id | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:25:18:25:19 | id | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:25:18:25:19 | id | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:25:18:25:19 | id | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:25:18:25:25 | id(...) | | {EXTERNAL LOCATION} | bool | | closure.rs:25:21:25:24 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:28:13:28:15 | id2 | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:28:13:28:15 | id2 | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:28:13:28:15 | id2 | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:28:13:28:15 | id2 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:28:13:28:15 | id2 | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:28:13:28:15 | id2 | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:28:19:28:23 | \|...\| b | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:28:19:28:23 | \|...\| b | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:28:19:28:23 | \|...\| b | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:28:19:28:23 | \|...\| b | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:28:19:28:23 | \|...\| b | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:28:19:28:23 | \|...\| b | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:28:20:28:20 | b | | {EXTERNAL LOCATION} | bool | | closure.rs:28:23:28:23 | b | | {EXTERNAL LOCATION} | bool | @@ -454,19 +424,19 @@ inferType | closure.rs:29:19:29:36 | ...::default(...) | | {EXTERNAL LOCATION} | bool | | closure.rs:30:13:30:15 | _b2 | | {EXTERNAL LOCATION} | bool | | closure.rs:30:25:30:27 | id2 | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:30:25:30:27 | id2 | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:30:25:30:27 | id2 | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:30:25:30:27 | id2 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:30:25:30:27 | id2 | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:30:25:30:27 | id2 | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:30:25:30:32 | id2(...) | | {EXTERNAL LOCATION} | bool | | closure.rs:30:29:30:31 | arg | | {EXTERNAL LOCATION} | bool | | closure.rs:35:44:35:44 | f | | closure.rs:35:20:35:41 | F | -| closure.rs:35:50:37:5 | { ... } | | file://:0:0:0:0 | () | +| closure.rs:35:50:37:5 | { ... } | | {EXTERNAL LOCATION} | () | | closure.rs:36:13:36:19 | _return | | {EXTERNAL LOCATION} | i64 | | closure.rs:36:23:36:23 | f | | closure.rs:35:20:35:41 | F | | closure.rs:36:23:36:29 | f(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:36:25:36:28 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:39:46:39:46 | f | | closure.rs:39:22:39:43 | F | -| closure.rs:39:52:42:5 | { ... } | | file://:0:0:0:0 | () | +| closure.rs:39:52:42:5 | { ... } | | {EXTERNAL LOCATION} | () | | closure.rs:40:13:40:15 | arg | | {EXTERNAL LOCATION} | bool | | closure.rs:40:19:40:36 | ...::default(...) | | {EXTERNAL LOCATION} | bool | | closure.rs:41:9:41:9 | f | | closure.rs:39:22:39:43 | F | @@ -484,15 +454,15 @@ inferType | closure.rs:49:9:49:12 | f(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:49:11:49:11 | 2 | | {EXTERNAL LOCATION} | i32 | | closure.rs:49:11:49:11 | 2 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:52:15:64:5 | { ... } | | file://:0:0:0:0 | () | +| closure.rs:52:15:64:5 | { ... } | | {EXTERNAL LOCATION} | () | | closure.rs:53:13:53:13 | f | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:53:13:53:13 | f | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:53:13:53:13 | f | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:53:13:53:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:53:13:53:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:53:13:53:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i32 | | closure.rs:53:13:53:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:53:17:59:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:53:17:59:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:53:17:59:9 | \|...\| ... | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:53:17:59:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:53:17:59:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:53:17:59:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i32 | | closure.rs:53:17:59:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:53:18:53:18 | x | | {EXTERNAL LOCATION} | bool | @@ -514,20 +484,20 @@ inferType | closure.rs:60:18:60:31 | apply(...) | | {EXTERNAL LOCATION} | i32 | | closure.rs:60:18:60:31 | apply(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:60:24:60:24 | f | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:60:24:60:24 | f | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:60:24:60:24 | f | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:60:24:60:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:60:24:60:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:60:24:60:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i32 | | closure.rs:60:24:60:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:60:27:60:30 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:62:13:62:13 | f | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:62:13:62:13 | f | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:62:13:62:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:62:17:62:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:62:17:62:25 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:62:17:62:25 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:62:25:62:25 | 1 | | {EXTERNAL LOCATION} | i32 | | closure.rs:63:13:63:15 | _r2 | | {EXTERNAL LOCATION} | i64 | | closure.rs:63:19:63:30 | apply_two(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:63:29:63:29 | f | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:63:29:63:29 | f | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:63:29:63:29 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:68:54:68:54 | f | | {EXTERNAL LOCATION} | Box | | closure.rs:68:54:68:54 | f | A | {EXTERNAL LOCATION} | Global | | closure.rs:68:54:68:54 | f | T | closure.rs:68:26:68:51 | F | @@ -541,18 +511,18 @@ inferType | closure.rs:72:30:72:30 | f | | {EXTERNAL LOCATION} | Box | | closure.rs:72:30:72:30 | f | A | {EXTERNAL LOCATION} | Global | | closure.rs:72:30:72:30 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:72:30:72:30 | f | T.dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:72:30:72:30 | f | T.dyn(Args).0(1) | closure.rs:72:24:72:24 | A | +| closure.rs:72:30:72:30 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:72:30:72:30 | f | T.dyn(Args).T0 | closure.rs:72:24:72:24 | A | | closure.rs:72:30:72:30 | f | T.dyn(Output) | closure.rs:72:27:72:27 | B | | closure.rs:72:58:72:60 | arg | | closure.rs:72:24:72:24 | A | -| closure.rs:72:66:75:5 | { ... } | | file://:0:0:0:0 | () | +| closure.rs:72:66:75:5 | { ... } | | {EXTERNAL LOCATION} | () | | closure.rs:73:13:73:15 | _r1 | | closure.rs:72:27:72:27 | B | | closure.rs:73:19:73:37 | apply_boxed(...) | | closure.rs:72:27:72:27 | B | | closure.rs:73:31:73:31 | f | | {EXTERNAL LOCATION} | Box | | closure.rs:73:31:73:31 | f | A | {EXTERNAL LOCATION} | Global | | closure.rs:73:31:73:31 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:73:31:73:31 | f | T.dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:73:31:73:31 | f | T.dyn(Args).0(1) | closure.rs:72:24:72:24 | A | +| closure.rs:73:31:73:31 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:73:31:73:31 | f | T.dyn(Args).T0 | closure.rs:72:24:72:24 | A | | closure.rs:73:31:73:31 | f | T.dyn(Output) | closure.rs:72:27:72:27 | B | | closure.rs:73:34:73:36 | arg | | closure.rs:72:24:72:24 | A | | closure.rs:74:13:74:15 | _r2 | | {EXTERNAL LOCATION} | bool | @@ -560,57 +530,56 @@ inferType | closure.rs:74:31:74:53 | ...::new(...) | | {EXTERNAL LOCATION} | Box | | closure.rs:74:31:74:53 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | closure.rs:74:31:74:53 | ...::new(...) | T | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:74:40:74:52 | \|...\| true | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:74:40:74:52 | \|...\| true | dyn(Args) | file://:0:0:0:0 | (T_1) | -| closure.rs:74:40:74:52 | \|...\| true | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:74:40:74:52 | \|...\| true | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:74:40:74:52 | \|...\| true | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:74:40:74:52 | \|...\| true | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:74:41:74:41 | _ | | {EXTERNAL LOCATION} | i64 | | closure.rs:74:49:74:52 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:74:56:74:56 | 3 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:74:56:74:56 | 3 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:12:14:12:18 | SelfParam | | file://:0:0:0:0 | & | -| dereference.rs:12:14:12:18 | SelfParam | &T | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:12:29:14:5 | { ... } | | file://:0:0:0:0 | & | -| dereference.rs:12:29:14:5 | { ... } | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:13:9:13:19 | &... | | file://:0:0:0:0 | & | -| dereference.rs:13:9:13:19 | &... | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:13:10:13:13 | self | | file://:0:0:0:0 | & | -| dereference.rs:13:10:13:13 | self | &T | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:12:14:12:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:12:14:12:18 | SelfParam | TRef | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:12:29:14:5 | { ... } | | {EXTERNAL LOCATION} | & | +| dereference.rs:12:29:14:5 | { ... } | TRef | {EXTERNAL LOCATION} | i64 | +| dereference.rs:13:9:13:19 | &... | | {EXTERNAL LOCATION} | & | +| dereference.rs:13:9:13:19 | &... | TRef | {EXTERNAL LOCATION} | i64 | +| dereference.rs:13:10:13:13 | self | | {EXTERNAL LOCATION} | & | +| dereference.rs:13:10:13:13 | self | TRef | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:13:10:13:19 | self.value | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:25:14:25:18 | SelfParam | | file://:0:0:0:0 | & | -| dereference.rs:25:14:25:18 | SelfParam | &T | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:25:14:25:18 | SelfParam | &T.T | dereference.rs:21:6:21:6 | T | -| dereference.rs:25:27:27:5 | { ... } | | file://:0:0:0:0 | & | -| dereference.rs:25:27:27:5 | { ... } | &T | dereference.rs:21:6:21:6 | T | -| dereference.rs:26:9:26:19 | &... | | file://:0:0:0:0 | & | -| dereference.rs:26:9:26:19 | &... | &T | dereference.rs:21:6:21:6 | T | -| dereference.rs:26:10:26:13 | self | | file://:0:0:0:0 | & | -| dereference.rs:26:10:26:13 | self | &T | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:26:10:26:13 | self | &T.T | dereference.rs:21:6:21:6 | T | +| dereference.rs:25:14:25:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:25:14:25:18 | SelfParam | TRef | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:25:14:25:18 | SelfParam | TRef.T | dereference.rs:21:6:21:6 | T | +| dereference.rs:25:27:27:5 | { ... } | | {EXTERNAL LOCATION} | & | +| dereference.rs:25:27:27:5 | { ... } | TRef | dereference.rs:21:6:21:6 | T | +| dereference.rs:26:9:26:19 | &... | | {EXTERNAL LOCATION} | & | +| dereference.rs:26:9:26:19 | &... | TRef | dereference.rs:21:6:21:6 | T | +| dereference.rs:26:10:26:13 | self | | {EXTERNAL LOCATION} | & | +| dereference.rs:26:10:26:13 | self | TRef | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:26:10:26:13 | self | TRef.T | dereference.rs:21:6:21:6 | T | | dereference.rs:26:10:26:19 | self.value | | dereference.rs:21:6:21:6 | T | -| dereference.rs:33:12:33:16 | SelfParam | | file://:0:0:0:0 | & | -| dereference.rs:33:12:33:16 | SelfParam | &T | dereference.rs:30:1:30:15 | S | -| dereference.rs:33:12:33:16 | SelfParam | &T.T | dereference.rs:32:6:32:6 | T | -| dereference.rs:33:25:35:5 | { ... } | | file://:0:0:0:0 | & | -| dereference.rs:33:25:35:5 | { ... } | &T | dereference.rs:32:6:32:6 | T | -| dereference.rs:34:9:34:15 | &... | | file://:0:0:0:0 | & | -| dereference.rs:34:9:34:15 | &... | &T | dereference.rs:32:6:32:6 | T | -| dereference.rs:34:10:34:13 | self | | file://:0:0:0:0 | & | -| dereference.rs:34:10:34:13 | self | &T | dereference.rs:30:1:30:15 | S | -| dereference.rs:34:10:34:13 | self | &T.T | dereference.rs:32:6:32:6 | T | +| dereference.rs:33:12:33:16 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:33:12:33:16 | SelfParam | TRef | dereference.rs:30:1:30:15 | S | +| dereference.rs:33:12:33:16 | SelfParam | TRef.T | dereference.rs:32:6:32:6 | T | +| dereference.rs:33:25:35:5 | { ... } | | {EXTERNAL LOCATION} | & | +| dereference.rs:33:25:35:5 | { ... } | TRef | dereference.rs:32:6:32:6 | T | +| dereference.rs:34:9:34:15 | &... | | {EXTERNAL LOCATION} | & | +| dereference.rs:34:9:34:15 | &... | TRef | dereference.rs:32:6:32:6 | T | +| dereference.rs:34:10:34:13 | self | | {EXTERNAL LOCATION} | & | +| dereference.rs:34:10:34:13 | self | TRef | dereference.rs:30:1:30:15 | S | +| dereference.rs:34:10:34:13 | self | TRef.T | dereference.rs:32:6:32:6 | T | | dereference.rs:34:10:34:15 | self.0 | | dereference.rs:32:6:32:6 | T | -| dereference.rs:38:39:50:1 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:38:39:50:1 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:40:9:40:10 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:40:14:40:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:40:36:40:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:41:9:41:11 | _b1 | | file://:0:0:0:0 | & | -| dereference.rs:41:9:41:11 | _b1 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:41:9:41:11 | _b1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:41:9:41:11 | _b1 | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:41:15:41:16 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:41:15:41:24 | a1.deref() | | file://:0:0:0:0 | & | -| dereference.rs:41:15:41:24 | a1.deref() | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:41:15:41:24 | a1.deref() | | {EXTERNAL LOCATION} | & | +| dereference.rs:41:15:41:24 | a1.deref() | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:44:9:44:10 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:44:14:44:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:44:36:44:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | @@ -625,18 +594,18 @@ inferType | dereference.rs:49:15:49:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | | dereference.rs:49:16:49:18 | * ... | | {EXTERNAL LOCATION} | i64 | | dereference.rs:49:17:49:18 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:52:39:64:1 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:52:39:64:1 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:54:9:54:10 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:54:9:54:10 | c1 | T | {EXTERNAL LOCATION} | char | | dereference.rs:54:14:54:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:54:14:54:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | | dereference.rs:54:38:54:40 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:55:9:55:11 | _d1 | | file://:0:0:0:0 | & | -| dereference.rs:55:9:55:11 | _d1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:55:9:55:11 | _d1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:55:9:55:11 | _d1 | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:55:15:55:16 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:55:15:55:16 | c1 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:55:15:55:24 | c1.deref() | | file://:0:0:0:0 | & | -| dereference.rs:55:15:55:24 | c1.deref() | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:55:15:55:24 | c1.deref() | | {EXTERNAL LOCATION} | & | +| dereference.rs:55:15:55:24 | c1.deref() | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:58:9:58:10 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:58:9:58:10 | c2 | T | {EXTERNAL LOCATION} | char | | dereference.rs:58:14:58:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | @@ -657,39 +626,39 @@ inferType | dereference.rs:63:16:63:18 | * ... | | {EXTERNAL LOCATION} | i64 | | dereference.rs:63:17:63:18 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:63:17:63:18 | c3 | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:66:31:78:1 | { ... } | | file://:0:0:0:0 | () | -| dereference.rs:68:9:68:10 | e1 | | file://:0:0:0:0 | & | -| dereference.rs:68:9:68:10 | e1 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:68:14:68:17 | &'a' | | file://:0:0:0:0 | & | -| dereference.rs:68:14:68:17 | &'a' | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:66:31:78:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:68:9:68:10 | e1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:68:9:68:10 | e1 | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:68:14:68:17 | &'a' | | {EXTERNAL LOCATION} | & | +| dereference.rs:68:14:68:17 | &'a' | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:68:15:68:17 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:69:9:69:11 | _f1 | | file://:0:0:0:0 | & | -| dereference.rs:69:9:69:11 | _f1 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:69:15:69:16 | e1 | | file://:0:0:0:0 | & | -| dereference.rs:69:15:69:16 | e1 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:69:15:69:24 | e1.deref() | | file://:0:0:0:0 | & | -| dereference.rs:69:15:69:24 | e1.deref() | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:72:9:72:10 | e2 | | file://:0:0:0:0 | & | -| dereference.rs:72:9:72:10 | e2 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:72:14:72:17 | &'a' | | file://:0:0:0:0 | & | -| dereference.rs:72:14:72:17 | &'a' | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:69:9:69:11 | _f1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:69:9:69:11 | _f1 | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:69:15:69:16 | e1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:69:15:69:16 | e1 | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:69:15:69:24 | e1.deref() | | {EXTERNAL LOCATION} | & | +| dereference.rs:69:15:69:24 | e1.deref() | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:72:9:72:10 | e2 | | {EXTERNAL LOCATION} | & | +| dereference.rs:72:9:72:10 | e2 | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:72:14:72:17 | &'a' | | {EXTERNAL LOCATION} | & | +| dereference.rs:72:14:72:17 | &'a' | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:72:15:72:17 | 'a' | | {EXTERNAL LOCATION} | char | | dereference.rs:73:9:73:11 | _f2 | | {EXTERNAL LOCATION} | char | | dereference.rs:73:15:73:17 | * ... | | {EXTERNAL LOCATION} | char | -| dereference.rs:73:16:73:17 | e2 | | file://:0:0:0:0 | & | -| dereference.rs:73:16:73:17 | e2 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:76:9:76:10 | e3 | | file://:0:0:0:0 | & | -| dereference.rs:76:9:76:10 | e3 | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:76:14:76:19 | &34i64 | | file://:0:0:0:0 | & | -| dereference.rs:76:14:76:19 | &34i64 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:73:16:73:17 | e2 | | {EXTERNAL LOCATION} | & | +| dereference.rs:73:16:73:17 | e2 | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:76:9:76:10 | e3 | | {EXTERNAL LOCATION} | & | +| dereference.rs:76:9:76:10 | e3 | TRef | {EXTERNAL LOCATION} | i64 | +| dereference.rs:76:14:76:19 | &34i64 | | {EXTERNAL LOCATION} | & | +| dereference.rs:76:14:76:19 | &34i64 | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:76:15:76:19 | 34i64 | | {EXTERNAL LOCATION} | i64 | | dereference.rs:77:9:77:11 | _f3 | | {EXTERNAL LOCATION} | bool | | dereference.rs:77:15:77:19 | (...) | | {EXTERNAL LOCATION} | i64 | | dereference.rs:77:15:77:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | | dereference.rs:77:16:77:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:77:17:77:18 | e3 | | file://:0:0:0:0 | & | -| dereference.rs:77:17:77:18 | e3 | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:80:31:92:1 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:77:17:77:18 | e3 | | {EXTERNAL LOCATION} | & | +| dereference.rs:77:17:77:18 | e3 | TRef | {EXTERNAL LOCATION} | i64 | +| dereference.rs:80:31:92:1 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:82:9:82:10 | g1 | | {EXTERNAL LOCATION} | Box | | dereference.rs:82:9:82:10 | g1 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:82:9:82:10 | g1 | T | {EXTERNAL LOCATION} | char | @@ -697,13 +666,13 @@ inferType | dereference.rs:82:25:82:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | dereference.rs:82:25:82:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | | dereference.rs:82:34:82:36 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:83:9:83:11 | _h1 | | file://:0:0:0:0 | & | -| dereference.rs:83:9:83:11 | _h1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:83:9:83:11 | _h1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:83:9:83:11 | _h1 | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:83:15:83:16 | g1 | | {EXTERNAL LOCATION} | Box | | dereference.rs:83:15:83:16 | g1 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:83:15:83:16 | g1 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:83:15:83:24 | g1.deref() | | file://:0:0:0:0 | & | -| dereference.rs:83:15:83:24 | g1.deref() | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:83:15:83:24 | g1.deref() | | {EXTERNAL LOCATION} | & | +| dereference.rs:83:15:83:24 | g1.deref() | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:86:9:86:10 | g2 | | {EXTERNAL LOCATION} | Box | | dereference.rs:86:9:86:10 | g2 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:86:9:86:10 | g2 | T | {EXTERNAL LOCATION} | char | @@ -730,7 +699,7 @@ inferType | dereference.rs:91:17:91:18 | g3 | | {EXTERNAL LOCATION} | Box | | dereference.rs:91:17:91:18 | g3 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:91:17:91:18 | g3 | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:94:27:105:1 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:94:27:105:1 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:96:9:96:9 | x | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:96:13:96:41 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:96:35:96:39 | 34i64 | | {EXTERNAL LOCATION} | i64 | @@ -754,114 +723,114 @@ inferType | dereference.rs:104:14:104:14 | z | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:104:14:104:14 | z | T | dereference.rs:30:1:30:15 | S | | dereference.rs:104:14:104:14 | z | T.T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:131:19:139:5 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:131:19:139:5 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:132:17:132:26 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:132:17:132:26 | key_to_key | K | file://:0:0:0:0 | & | -| dereference.rs:132:17:132:26 | key_to_key | K.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:132:17:132:26 | key_to_key | K | {EXTERNAL LOCATION} | & | +| dereference.rs:132:17:132:26 | key_to_key | K.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:132:17:132:26 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:132:17:132:26 | key_to_key | V | file://:0:0:0:0 | & | -| dereference.rs:132:17:132:26 | key_to_key | V.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:132:17:132:26 | key_to_key | V | {EXTERNAL LOCATION} | & | +| dereference.rs:132:17:132:26 | key_to_key | V.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:132:30:132:57 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:132:30:132:57 | ...::new(...) | K | file://:0:0:0:0 | & | -| dereference.rs:132:30:132:57 | ...::new(...) | K.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:132:30:132:57 | ...::new(...) | K | {EXTERNAL LOCATION} | & | +| dereference.rs:132:30:132:57 | ...::new(...) | K.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:132:30:132:57 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:132:30:132:57 | ...::new(...) | V | file://:0:0:0:0 | & | -| dereference.rs:132:30:132:57 | ...::new(...) | V.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:17:133:19 | key | | file://:0:0:0:0 | & | -| dereference.rs:133:17:133:19 | key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:17:133:19 | key | &T | file://:0:0:0:0 | & | -| dereference.rs:133:17:133:19 | key | &T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:23:133:29 | &... | | file://:0:0:0:0 | & | -| dereference.rs:133:23:133:29 | &... | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:23:133:29 | &... | &T | file://:0:0:0:0 | & | -| dereference.rs:133:23:133:29 | &... | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:132:30:132:57 | ...::new(...) | V | {EXTERNAL LOCATION} | & | +| dereference.rs:132:30:132:57 | ...::new(...) | V.TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:133:17:133:19 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:133:17:133:19 | key | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:133:17:133:19 | key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:133:17:133:19 | key | TRef.TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:133:23:133:29 | &... | | {EXTERNAL LOCATION} | & | +| dereference.rs:133:23:133:29 | &... | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:133:23:133:29 | &... | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:133:23:133:29 | &... | TRef.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:133:24:133:29 | Key {...} | | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:9:137:9 | if ... {...} | | file://:0:0:0:0 | () | +| dereference.rs:134:9:137:9 | if ... {...} | | {EXTERNAL LOCATION} | () | | dereference.rs:134:16:134:28 | Some(...) | | {EXTERNAL LOCATION} | Option | -| dereference.rs:134:16:134:28 | Some(...) | T | file://:0:0:0:0 | & | -| dereference.rs:134:16:134:28 | Some(...) | T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:16:134:28 | Some(...) | T.&T | file://:0:0:0:0 | & | -| dereference.rs:134:16:134:28 | Some(...) | T.&T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:21:134:27 | ref_key | | file://:0:0:0:0 | & | -| dereference.rs:134:21:134:27 | ref_key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:21:134:27 | ref_key | &T | file://:0:0:0:0 | & | -| dereference.rs:134:21:134:27 | ref_key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:16:134:28 | Some(...) | T | {EXTERNAL LOCATION} | & | +| dereference.rs:134:16:134:28 | Some(...) | T.TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:16:134:28 | Some(...) | T.TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:134:16:134:28 | Some(...) | T.TRef.TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:21:134:27 | ref_key | | {EXTERNAL LOCATION} | & | +| dereference.rs:134:21:134:27 | ref_key | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:21:134:27 | ref_key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:134:21:134:27 | ref_key | TRef.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:134:32:134:41 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:134:32:134:41 | key_to_key | K | file://:0:0:0:0 | & | -| dereference.rs:134:32:134:41 | key_to_key | K.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:32:134:41 | key_to_key | K | {EXTERNAL LOCATION} | & | +| dereference.rs:134:32:134:41 | key_to_key | K.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:134:32:134:41 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:134:32:134:41 | key_to_key | V | file://:0:0:0:0 | & | -| dereference.rs:134:32:134:41 | key_to_key | V.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:32:134:41 | key_to_key | V | {EXTERNAL LOCATION} | & | +| dereference.rs:134:32:134:41 | key_to_key | V.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:134:32:134:50 | key_to_key.get(...) | | {EXTERNAL LOCATION} | Option | -| dereference.rs:134:32:134:50 | key_to_key.get(...) | T | file://:0:0:0:0 | & | -| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.&T | file://:0:0:0:0 | & | -| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.&T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:47:134:49 | key | | file://:0:0:0:0 | & | -| dereference.rs:134:47:134:49 | key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:47:134:49 | key | &T | file://:0:0:0:0 | & | -| dereference.rs:134:47:134:49 | key | &T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:52:137:9 | { ... } | | file://:0:0:0:0 | () | -| dereference.rs:136:13:136:15 | key | | file://:0:0:0:0 | & | -| dereference.rs:136:13:136:15 | key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:136:13:136:15 | key | &T | file://:0:0:0:0 | & | -| dereference.rs:136:13:136:15 | key | &T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:136:13:136:25 | ... = ... | | file://:0:0:0:0 | () | -| dereference.rs:136:19:136:25 | ref_key | | file://:0:0:0:0 | & | -| dereference.rs:136:19:136:25 | ref_key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:136:19:136:25 | ref_key | &T | file://:0:0:0:0 | & | -| dereference.rs:136:19:136:25 | ref_key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:32:134:50 | key_to_key.get(...) | T | {EXTERNAL LOCATION} | & | +| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.TRef.TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:47:134:49 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:134:47:134:49 | key | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:47:134:49 | key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:134:47:134:49 | key | TRef.TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:52:137:9 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:136:13:136:15 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:136:13:136:15 | key | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:136:13:136:15 | key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:136:13:136:15 | key | TRef.TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:136:13:136:25 | ... = ... | | {EXTERNAL LOCATION} | () | +| dereference.rs:136:19:136:25 | ref_key | | {EXTERNAL LOCATION} | & | +| dereference.rs:136:19:136:25 | ref_key | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:136:19:136:25 | ref_key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:136:19:136:25 | ref_key | TRef.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:138:9:138:18 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:138:9:138:18 | key_to_key | K | file://:0:0:0:0 | & | -| dereference.rs:138:9:138:18 | key_to_key | K.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:9:138:18 | key_to_key | K | {EXTERNAL LOCATION} | & | +| dereference.rs:138:9:138:18 | key_to_key | K.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:138:9:138:18 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:138:9:138:18 | key_to_key | V | file://:0:0:0:0 | & | -| dereference.rs:138:9:138:18 | key_to_key | V.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:9:138:18 | key_to_key | V | {EXTERNAL LOCATION} | & | +| dereference.rs:138:9:138:18 | key_to_key | V.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:138:9:138:35 | key_to_key.insert(...) | | {EXTERNAL LOCATION} | Option | -| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T | file://:0:0:0:0 | & | -| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.&T | file://:0:0:0:0 | & | -| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.&T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:27:138:29 | key | | file://:0:0:0:0 | & | -| dereference.rs:138:27:138:29 | key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:27:138:29 | key | &T | file://:0:0:0:0 | & | -| dereference.rs:138:27:138:29 | key | &T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:32:138:34 | key | | file://:0:0:0:0 | & | -| dereference.rs:138:32:138:34 | key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:32:138:34 | key | &T | file://:0:0:0:0 | & | -| dereference.rs:138:32:138:34 | key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T | {EXTERNAL LOCATION} | & | +| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.TRef.TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:27:138:29 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:138:27:138:29 | key | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:27:138:29 | key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:138:27:138:29 | key | TRef.TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:32:138:34 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:138:32:138:34 | key | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:32:138:34 | key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:138:32:138:34 | key | TRef.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:144:16:144:19 | SelfParam | | dereference.rs:143:5:145:5 | Self [trait MyTrait1] | -| dereference.rs:151:16:151:19 | SelfParam | | file://:0:0:0:0 | & | -| dereference.rs:151:16:151:19 | SelfParam | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:151:16:151:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:151:16:151:19 | SelfParam | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:151:27:153:9 | { ... } | | dereference.rs:147:5:147:13 | S | | dereference.rs:152:13:152:13 | S | | dereference.rs:147:5:147:13 | S | -| dereference.rs:158:16:158:19 | SelfParam | | file://:0:0:0:0 | & | -| dereference.rs:158:16:158:19 | SelfParam | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:158:16:158:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:158:16:158:19 | SelfParam | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:158:29:160:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | dereference.rs:159:13:159:14 | 42 | | {EXTERNAL LOCATION} | i32 | | dereference.rs:159:13:159:14 | 42 | | {EXTERNAL LOCATION} | i64 | | dereference.rs:164:16:164:19 | SelfParam | | dereference.rs:163:5:165:5 | Self [trait MyTrait2] | | dereference.rs:164:22:164:24 | arg | | dereference.rs:163:20:163:21 | T1 | | dereference.rs:169:16:169:19 | SelfParam | | dereference.rs:147:5:147:13 | S | -| dereference.rs:169:22:169:24 | arg | | file://:0:0:0:0 | & | -| dereference.rs:169:22:169:24 | arg | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:169:22:169:24 | arg | | {EXTERNAL LOCATION} | & | +| dereference.rs:169:22:169:24 | arg | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:169:36:171:9 | { ... } | | dereference.rs:147:5:147:13 | S | | dereference.rs:170:13:170:13 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:176:16:176:19 | SelfParam | | dereference.rs:147:5:147:13 | S | -| dereference.rs:176:22:176:24 | arg | | file://:0:0:0:0 | & | -| dereference.rs:176:22:176:24 | arg | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:176:22:176:24 | arg | | {EXTERNAL LOCATION} | & | +| dereference.rs:176:22:176:24 | arg | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:176:42:178:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | dereference.rs:177:13:177:14 | 42 | | {EXTERNAL LOCATION} | i32 | | dereference.rs:177:13:177:14 | 42 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:181:19:188:5 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:181:19:188:5 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:182:13:182:13 | x | | dereference.rs:147:5:147:13 | S | | dereference.rs:182:13:182:13 | x | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:182:17:182:20 | (...) | | file://:0:0:0:0 | & | -| dereference.rs:182:17:182:20 | (...) | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:182:17:182:20 | (...) | | {EXTERNAL LOCATION} | & | +| dereference.rs:182:17:182:20 | (...) | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:182:17:182:26 | ... .foo() | | dereference.rs:147:5:147:13 | S | | dereference.rs:182:17:182:26 | ... .foo() | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:182:18:182:19 | &S | | file://:0:0:0:0 | & | -| dereference.rs:182:18:182:19 | &S | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:182:18:182:19 | &S | | {EXTERNAL LOCATION} | & | +| dereference.rs:182:18:182:19 | &S | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:182:19:182:19 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:183:13:183:13 | y | | dereference.rs:147:5:147:13 | S | | dereference.rs:183:13:183:13 | y | | {EXTERNAL LOCATION} | i64 | @@ -870,117 +839,111 @@ inferType | dereference.rs:183:17:183:23 | S.foo() | | {EXTERNAL LOCATION} | i64 | | dereference.rs:184:13:184:13 | z | | dereference.rs:147:5:147:13 | S | | dereference.rs:184:13:184:13 | z | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:184:17:184:24 | (...) | | file://:0:0:0:0 | & | -| dereference.rs:184:17:184:24 | (...) | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:184:17:184:24 | (...) | | {EXTERNAL LOCATION} | & | +| dereference.rs:184:17:184:24 | (...) | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:184:17:184:30 | ... .foo() | | dereference.rs:147:5:147:13 | S | | dereference.rs:184:17:184:30 | ... .foo() | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:184:18:184:23 | &mut S | | file://:0:0:0:0 | & | -| dereference.rs:184:18:184:23 | &mut S | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:184:18:184:23 | &mut S | | {EXTERNAL LOCATION} | & | +| dereference.rs:184:18:184:23 | &mut S | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:184:23:184:23 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:186:13:186:13 | x | | dereference.rs:147:5:147:13 | S | | dereference.rs:186:13:186:13 | x | | {EXTERNAL LOCATION} | i64 | | dereference.rs:186:17:186:17 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:186:17:186:25 | S.bar(...) | | dereference.rs:147:5:147:13 | S | | dereference.rs:186:17:186:25 | S.bar(...) | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:186:23:186:24 | &S | | file://:0:0:0:0 | & | -| dereference.rs:186:23:186:24 | &S | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:186:23:186:24 | &S | | {EXTERNAL LOCATION} | & | +| dereference.rs:186:23:186:24 | &S | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:186:24:186:24 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:187:13:187:13 | y | | dereference.rs:147:5:147:13 | S | | dereference.rs:187:13:187:13 | y | | {EXTERNAL LOCATION} | i64 | | dereference.rs:187:17:187:17 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:187:17:187:29 | S.bar(...) | | dereference.rs:147:5:147:13 | S | | dereference.rs:187:17:187:29 | S.bar(...) | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:187:23:187:28 | &mut S | | file://:0:0:0:0 | & | -| dereference.rs:187:23:187:28 | &mut S | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:187:23:187:28 | &mut S | | {EXTERNAL LOCATION} | & | +| dereference.rs:187:23:187:28 | &mut S | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:187:28:187:28 | S | | dereference.rs:147:5:147:13 | S | -| dereference.rs:196:16:196:20 | SelfParam | | file://:0:0:0:0 | & | -| dereference.rs:196:16:196:20 | SelfParam | &T | dereference.rs:195:5:197:5 | Self [trait Bar] | -| dereference.rs:201:16:201:24 | SelfParam | | file://:0:0:0:0 | & | -| dereference.rs:201:16:201:24 | SelfParam | &T | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:201:27:203:9 | { ... } | | file://:0:0:0:0 | () | -| dereference.rs:202:13:202:39 | MacroExpr | | file://:0:0:0:0 | () | -| dereference.rs:202:22:202:38 | "In struct impl!\\n" | | file://:0:0:0:0 | & | -| dereference.rs:202:22:202:38 | "In struct impl!\\n" | &T | {EXTERNAL LOCATION} | str | -| dereference.rs:202:22:202:38 | ...::_print(...) | | file://:0:0:0:0 | () | -| dereference.rs:202:22:202:38 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| dereference.rs:202:22:202:38 | MacroBlockExpr | | file://:0:0:0:0 | () | -| dereference.rs:202:22:202:38 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| dereference.rs:202:22:202:38 | { ... } | | file://:0:0:0:0 | () | -| dereference.rs:208:16:208:20 | SelfParam | | file://:0:0:0:0 | & | -| dereference.rs:208:16:208:20 | SelfParam | &T | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:208:23:210:9 | { ... } | | file://:0:0:0:0 | () | -| dereference.rs:209:13:209:38 | MacroExpr | | file://:0:0:0:0 | () | -| dereference.rs:209:22:209:37 | "In trait impl!\\n" | | file://:0:0:0:0 | & | -| dereference.rs:209:22:209:37 | "In trait impl!\\n" | &T | {EXTERNAL LOCATION} | str | -| dereference.rs:209:22:209:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| dereference.rs:209:22:209:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| dereference.rs:209:22:209:37 | MacroBlockExpr | | file://:0:0:0:0 | () | -| dereference.rs:209:22:209:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| dereference.rs:209:22:209:37 | { ... } | | file://:0:0:0:0 | () | -| dereference.rs:213:19:216:5 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:196:16:196:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:196:16:196:20 | SelfParam | TRef | dereference.rs:195:5:197:5 | Self [trait Bar] | +| dereference.rs:201:16:201:24 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:201:16:201:24 | SelfParam | TRef | dereference.rs:193:5:193:17 | Foo | +| dereference.rs:201:27:203:9 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:202:13:202:39 | MacroExpr | | {EXTERNAL LOCATION} | () | +| dereference.rs:202:22:202:38 | "In struct impl!\\n" | | {EXTERNAL LOCATION} | & | +| dereference.rs:202:22:202:38 | "In struct impl!\\n" | TRef | {EXTERNAL LOCATION} | str | +| dereference.rs:202:22:202:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:202:22:202:38 | MacroBlockExpr | | {EXTERNAL LOCATION} | () | +| dereference.rs:202:22:202:38 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:208:16:208:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:208:16:208:20 | SelfParam | TRef | dereference.rs:193:5:193:17 | Foo | +| dereference.rs:208:23:210:9 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:209:13:209:38 | MacroExpr | | {EXTERNAL LOCATION} | () | +| dereference.rs:209:22:209:37 | "In trait impl!\\n" | | {EXTERNAL LOCATION} | & | +| dereference.rs:209:22:209:37 | "In trait impl!\\n" | TRef | {EXTERNAL LOCATION} | str | +| dereference.rs:209:22:209:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:209:22:209:37 | MacroBlockExpr | | {EXTERNAL LOCATION} | () | +| dereference.rs:209:22:209:37 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:213:19:216:5 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:214:17:214:17 | f | | dereference.rs:193:5:193:17 | Foo | | dereference.rs:214:21:214:26 | Foo {...} | | dereference.rs:193:5:193:17 | Foo | | dereference.rs:215:9:215:9 | f | | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:215:9:215:15 | f.bar() | | file://:0:0:0:0 | () | -| dereference.rs:219:15:228:1 | { ... } | | file://:0:0:0:0 | () | -| dereference.rs:220:5:220:38 | explicit_monomorphic_dereference(...) | | file://:0:0:0:0 | () | -| dereference.rs:221:5:221:38 | explicit_polymorphic_dereference(...) | | file://:0:0:0:0 | () | -| dereference.rs:222:5:222:30 | explicit_ref_dereference(...) | | file://:0:0:0:0 | () | -| dereference.rs:223:5:223:30 | explicit_box_dereference(...) | | file://:0:0:0:0 | () | -| dereference.rs:224:5:224:26 | implicit_dereference(...) | | file://:0:0:0:0 | () | -| dereference.rs:225:5:225:41 | ...::test(...) | | file://:0:0:0:0 | () | -| dereference.rs:226:5:226:26 | ...::test(...) | | file://:0:0:0:0 | () | -| dereference.rs:227:5:227:34 | ...::main(...) | | file://:0:0:0:0 | () | -| dyn_type.rs:7:10:7:14 | SelfParam | | file://:0:0:0:0 | & | -| dyn_type.rs:7:10:7:14 | SelfParam | &T | dyn_type.rs:5:1:8:1 | Self [trait MyTrait1] | -| dyn_type.rs:12:12:12:16 | SelfParam | | file://:0:0:0:0 | & | -| dyn_type.rs:12:12:12:16 | SelfParam | &T | dyn_type.rs:10:1:13:1 | Self [trait GenericGet] | -| dyn_type.rs:18:12:18:16 | SelfParam | | file://:0:0:0:0 | & | -| dyn_type.rs:18:12:18:16 | SelfParam | &T | dyn_type.rs:15:1:19:1 | Self [trait AssocTrait] | -| dyn_type.rs:28:10:28:14 | SelfParam | | file://:0:0:0:0 | & | -| dyn_type.rs:28:10:28:14 | SelfParam | &T | dyn_type.rs:21:1:24:1 | MyStruct | +| dereference.rs:215:9:215:15 | f.bar() | | {EXTERNAL LOCATION} | () | +| dereference.rs:219:15:228:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:220:5:220:38 | explicit_monomorphic_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:221:5:221:38 | explicit_polymorphic_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:222:5:222:30 | explicit_ref_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:223:5:223:30 | explicit_box_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:224:5:224:26 | implicit_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:225:5:225:41 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:226:5:226:26 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:227:5:227:34 | ...::main(...) | | {EXTERNAL LOCATION} | () | +| dyn_type.rs:7:10:7:14 | SelfParam | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:7:10:7:14 | SelfParam | TRef | dyn_type.rs:5:1:8:1 | Self [trait MyTrait1] | +| dyn_type.rs:12:12:12:16 | SelfParam | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:12:12:12:16 | SelfParam | TRef | dyn_type.rs:10:1:13:1 | Self [trait GenericGet] | +| dyn_type.rs:18:12:18:16 | SelfParam | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:18:12:18:16 | SelfParam | TRef | dyn_type.rs:15:1:19:1 | Self [trait AssocTrait] | +| dyn_type.rs:28:10:28:14 | SelfParam | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:28:10:28:14 | SelfParam | TRef | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:28:27:30:5 | { ... } | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:9:29:43 | MacroExpr | | {EXTERNAL LOCATION} | String | -| dyn_type.rs:29:17:29:30 | "MyTrait1: {}" | | file://:0:0:0:0 | & | -| dyn_type.rs:29:17:29:30 | "MyTrait1: {}" | &T | {EXTERNAL LOCATION} | str | +| dyn_type.rs:29:17:29:30 | "MyTrait1: {}" | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:29:17:29:30 | "MyTrait1: {}" | TRef | {EXTERNAL LOCATION} | str | | dyn_type.rs:29:17:29:42 | ...::format(...) | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:17:29:42 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | -| dyn_type.rs:29:17:29:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | dyn_type.rs:29:17:29:42 | MacroBlockExpr | | {EXTERNAL LOCATION} | String | -| dyn_type.rs:29:17:29:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | dyn_type.rs:29:17:29:42 | { ... } | | {EXTERNAL LOCATION} | String | -| dyn_type.rs:29:33:29:36 | self | | file://:0:0:0:0 | & | -| dyn_type.rs:29:33:29:36 | self | &T | dyn_type.rs:21:1:24:1 | MyStruct | +| dyn_type.rs:29:33:29:36 | self | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:29:33:29:36 | self | TRef | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:29:33:29:42 | self.value | | {EXTERNAL LOCATION} | i32 | -| dyn_type.rs:40:12:40:16 | SelfParam | | file://:0:0:0:0 | & | -| dyn_type.rs:40:12:40:16 | SelfParam | &T | dyn_type.rs:33:1:36:1 | GenStruct | -| dyn_type.rs:40:12:40:16 | SelfParam | &T.A | dyn_type.rs:38:6:38:21 | A | +| dyn_type.rs:40:12:40:16 | SelfParam | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:40:12:40:16 | SelfParam | TRef | dyn_type.rs:33:1:36:1 | GenStruct | +| dyn_type.rs:40:12:40:16 | SelfParam | TRef.A | dyn_type.rs:38:6:38:21 | A | | dyn_type.rs:40:24:42:5 | { ... } | | dyn_type.rs:38:6:38:21 | A | -| dyn_type.rs:41:9:41:12 | self | | file://:0:0:0:0 | & | -| dyn_type.rs:41:9:41:12 | self | &T | dyn_type.rs:33:1:36:1 | GenStruct | -| dyn_type.rs:41:9:41:12 | self | &T.A | dyn_type.rs:38:6:38:21 | A | +| dyn_type.rs:41:9:41:12 | self | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:41:9:41:12 | self | TRef | dyn_type.rs:33:1:36:1 | GenStruct | +| dyn_type.rs:41:9:41:12 | self | TRef.A | dyn_type.rs:38:6:38:21 | A | | dyn_type.rs:41:9:41:18 | self.value | | dyn_type.rs:38:6:38:21 | A | | dyn_type.rs:41:9:41:26 | ... .clone() | | dyn_type.rs:38:6:38:21 | A | -| dyn_type.rs:51:12:51:16 | SelfParam | | file://:0:0:0:0 | & | -| dyn_type.rs:51:12:51:16 | SelfParam | &T | dyn_type.rs:33:1:36:1 | GenStruct | -| dyn_type.rs:51:12:51:16 | SelfParam | &T.A | dyn_type.rs:45:6:45:8 | GGP | -| dyn_type.rs:51:34:53:5 | { ... } | | file://:0:0:0:0 | (T_2) | -| dyn_type.rs:51:34:53:5 | { ... } | 0(2) | dyn_type.rs:45:6:45:8 | GGP | -| dyn_type.rs:51:34:53:5 | { ... } | 1(2) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:52:9:52:34 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| dyn_type.rs:52:9:52:34 | TupleExpr | 0(2) | dyn_type.rs:45:6:45:8 | GGP | -| dyn_type.rs:52:9:52:34 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:52:10:52:13 | self | | file://:0:0:0:0 | & | -| dyn_type.rs:52:10:52:13 | self | &T | dyn_type.rs:33:1:36:1 | GenStruct | -| dyn_type.rs:52:10:52:13 | self | &T.A | dyn_type.rs:45:6:45:8 | GGP | +| dyn_type.rs:51:12:51:16 | SelfParam | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:51:12:51:16 | SelfParam | TRef | dyn_type.rs:33:1:36:1 | GenStruct | +| dyn_type.rs:51:12:51:16 | SelfParam | TRef.A | dyn_type.rs:45:6:45:8 | GGP | +| dyn_type.rs:51:34:53:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | +| dyn_type.rs:51:34:53:5 | { ... } | T0 | dyn_type.rs:45:6:45:8 | GGP | +| dyn_type.rs:51:34:53:5 | { ... } | T1 | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:52:9:52:34 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| dyn_type.rs:52:9:52:34 | TupleExpr | T0 | dyn_type.rs:45:6:45:8 | GGP | +| dyn_type.rs:52:9:52:34 | TupleExpr | T1 | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:52:10:52:13 | self | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:52:10:52:13 | self | TRef | dyn_type.rs:33:1:36:1 | GenStruct | +| dyn_type.rs:52:10:52:13 | self | TRef.A | dyn_type.rs:45:6:45:8 | GGP | | dyn_type.rs:52:10:52:19 | self.value | | dyn_type.rs:45:6:45:8 | GGP | | dyn_type.rs:52:10:52:27 | ... .clone() | | dyn_type.rs:45:6:45:8 | GGP | | dyn_type.rs:52:30:52:33 | true | | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:56:40:56:40 | a | | file://:0:0:0:0 | & | -| dyn_type.rs:56:40:56:40 | a | &T | dyn_type.rs:56:13:56:37 | G | +| dyn_type.rs:56:40:56:40 | a | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:56:40:56:40 | a | TRef | dyn_type.rs:56:13:56:37 | G | | dyn_type.rs:56:52:58:1 | { ... } | | dyn_type.rs:56:10:56:10 | A | -| dyn_type.rs:57:5:57:5 | a | | file://:0:0:0:0 | & | -| dyn_type.rs:57:5:57:5 | a | &T | dyn_type.rs:56:13:56:37 | G | +| dyn_type.rs:57:5:57:5 | a | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:57:5:57:5 | a | TRef | dyn_type.rs:56:13:56:37 | G | | dyn_type.rs:57:5:57:11 | a.get() | | dyn_type.rs:56:10:56:10 | A | | dyn_type.rs:60:46:60:46 | a | | dyn_type.rs:60:18:60:43 | A | | dyn_type.rs:60:78:62:1 | { ... } | | {EXTERNAL LOCATION} | Box | @@ -996,34 +959,34 @@ inferType | dyn_type.rs:61:14:61:35 | GenStruct {...} | | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:61:14:61:35 | GenStruct {...} | A | dyn_type.rs:60:18:60:43 | A | | dyn_type.rs:61:33:61:33 | a | | dyn_type.rs:60:18:60:43 | A | -| dyn_type.rs:64:25:64:27 | obj | | file://:0:0:0:0 | & | -| dyn_type.rs:64:25:64:27 | obj | &T | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | -| dyn_type.rs:64:45:66:1 | { ... } | | file://:0:0:0:0 | () | +| dyn_type.rs:64:25:64:27 | obj | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:64:25:64:27 | obj | TRef | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | +| dyn_type.rs:64:45:66:1 | { ... } | | {EXTERNAL LOCATION} | () | | dyn_type.rs:65:9:65:15 | _result | | {EXTERNAL LOCATION} | String | | dyn_type.rs:65:19:65:24 | (...) | | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | | dyn_type.rs:65:19:65:28 | ... .m() | | {EXTERNAL LOCATION} | String | | dyn_type.rs:65:20:65:23 | * ... | | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | -| dyn_type.rs:65:21:65:23 | obj | | file://:0:0:0:0 | & | -| dyn_type.rs:65:21:65:23 | obj | &T | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | -| dyn_type.rs:68:27:68:29 | obj | | file://:0:0:0:0 | & | -| dyn_type.rs:68:27:68:29 | obj | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | -| dyn_type.rs:68:27:68:29 | obj | &T.dyn(A) | {EXTERNAL LOCATION} | String | -| dyn_type.rs:68:57:71:1 | { ... } | | file://:0:0:0:0 | () | +| dyn_type.rs:65:21:65:23 | obj | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:65:21:65:23 | obj | TRef | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | +| dyn_type.rs:68:27:68:29 | obj | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:68:27:68:29 | obj | TRef | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:68:27:68:29 | obj | TRef.dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:68:57:71:1 | { ... } | | {EXTERNAL LOCATION} | () | | dyn_type.rs:69:9:69:16 | _result1 | | {EXTERNAL LOCATION} | String | | dyn_type.rs:69:20:69:25 | (...) | | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:69:20:69:25 | (...) | dyn(A) | {EXTERNAL LOCATION} | String | | dyn_type.rs:69:20:69:31 | ... .get() | | {EXTERNAL LOCATION} | String | | dyn_type.rs:69:21:69:24 | * ... | | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:69:21:69:24 | * ... | dyn(A) | {EXTERNAL LOCATION} | String | -| dyn_type.rs:69:22:69:24 | obj | | file://:0:0:0:0 | & | -| dyn_type.rs:69:22:69:24 | obj | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | -| dyn_type.rs:69:22:69:24 | obj | &T.dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:69:22:69:24 | obj | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:69:22:69:24 | obj | TRef | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:69:22:69:24 | obj | TRef.dyn(A) | {EXTERNAL LOCATION} | String | | dyn_type.rs:70:9:70:16 | _result2 | | {EXTERNAL LOCATION} | String | | dyn_type.rs:70:20:70:29 | get_a(...) | | {EXTERNAL LOCATION} | String | -| dyn_type.rs:70:26:70:28 | obj | | file://:0:0:0:0 | & | -| dyn_type.rs:70:26:70:28 | obj | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | -| dyn_type.rs:70:26:70:28 | obj | &T.dyn(A) | {EXTERNAL LOCATION} | String | -| dyn_type.rs:73:26:76:1 | { ... } | | file://:0:0:0:0 | () | +| dyn_type.rs:70:26:70:28 | obj | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:70:26:70:28 | obj | TRef | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:70:26:70:28 | obj | TRef.dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:73:26:76:1 | { ... } | | {EXTERNAL LOCATION} | () | | dyn_type.rs:74:9:74:11 | obj | | {EXTERNAL LOCATION} | Box | | dyn_type.rs:74:9:74:11 | obj | A | {EXTERNAL LOCATION} | Global | | dyn_type.rs:74:9:74:11 | obj | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | @@ -1043,112 +1006,106 @@ inferType | dyn_type.rs:75:21:75:23 | obj | A | {EXTERNAL LOCATION} | Global | | dyn_type.rs:75:21:75:23 | obj | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:75:21:75:23 | obj | T.dyn(A) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:78:24:78:24 | a | | file://:0:0:0:0 | & | -| dyn_type.rs:78:24:78:24 | a | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | -| dyn_type.rs:78:24:78:24 | a | &T.dyn(AP) | dyn_type.rs:78:21:78:21 | B | -| dyn_type.rs:78:24:78:24 | a | &T.dyn(GP) | dyn_type.rs:78:18:78:18 | A | -| dyn_type.rs:78:65:80:1 | { ... } | | file://:0:0:0:0 | (T_2) | -| dyn_type.rs:78:65:80:1 | { ... } | 0(2) | dyn_type.rs:78:18:78:18 | A | -| dyn_type.rs:78:65:80:1 | { ... } | 1(2) | dyn_type.rs:78:21:78:21 | B | -| dyn_type.rs:79:5:79:5 | a | | file://:0:0:0:0 | & | -| dyn_type.rs:79:5:79:5 | a | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | -| dyn_type.rs:79:5:79:5 | a | &T.dyn(AP) | dyn_type.rs:78:21:78:21 | B | -| dyn_type.rs:79:5:79:5 | a | &T.dyn(GP) | dyn_type.rs:78:18:78:18 | A | -| dyn_type.rs:79:5:79:11 | a.get() | | file://:0:0:0:0 | (T_2) | -| dyn_type.rs:79:5:79:11 | a.get() | 0(2) | dyn_type.rs:78:18:78:18 | A | -| dyn_type.rs:79:5:79:11 | a.get() | 1(2) | dyn_type.rs:78:21:78:21 | B | -| dyn_type.rs:82:55:82:55 | a | | file://:0:0:0:0 | & | -| dyn_type.rs:82:55:82:55 | a | &T | dyn_type.rs:82:20:82:52 | T | -| dyn_type.rs:82:72:84:1 | { ... } | | file://:0:0:0:0 | (T_2) | -| dyn_type.rs:82:72:84:1 | { ... } | 0(2) | dyn_type.rs:82:14:82:14 | A | -| dyn_type.rs:82:72:84:1 | { ... } | 1(2) | dyn_type.rs:82:17:82:17 | B | -| dyn_type.rs:83:5:83:5 | a | | file://:0:0:0:0 | & | -| dyn_type.rs:83:5:83:5 | a | &T | dyn_type.rs:82:20:82:52 | T | -| dyn_type.rs:83:5:83:11 | a.get() | | file://:0:0:0:0 | (T_2) | -| dyn_type.rs:83:5:83:11 | a.get() | 0(2) | dyn_type.rs:82:14:82:14 | A | -| dyn_type.rs:83:5:83:11 | a.get() | 1(2) | dyn_type.rs:82:17:82:17 | B | -| dyn_type.rs:86:20:86:22 | obj | | file://:0:0:0:0 | & | -| dyn_type.rs:86:20:86:22 | obj | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | -| dyn_type.rs:86:20:86:22 | obj | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:86:20:86:22 | obj | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:86:58:99:1 | { ... } | | file://:0:0:0:0 | () | -| dyn_type.rs:87:9:90:5 | TuplePat | | file://:0:0:0:0 | (T_2) | -| dyn_type.rs:87:9:90:5 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:87:9:90:5 | TuplePat | 1(2) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:78:24:78:24 | a | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:78:24:78:24 | a | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | +| dyn_type.rs:78:24:78:24 | a | TRef.dyn(AP) | dyn_type.rs:78:21:78:21 | B | +| dyn_type.rs:78:24:78:24 | a | TRef.dyn(GP) | dyn_type.rs:78:18:78:18 | A | +| dyn_type.rs:78:65:80:1 | { ... } | | {EXTERNAL LOCATION} | (T_2) | +| dyn_type.rs:78:65:80:1 | { ... } | T0 | dyn_type.rs:78:18:78:18 | A | +| dyn_type.rs:78:65:80:1 | { ... } | T1 | dyn_type.rs:78:21:78:21 | B | +| dyn_type.rs:79:5:79:5 | a | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:79:5:79:5 | a | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | +| dyn_type.rs:79:5:79:5 | a | TRef.dyn(AP) | dyn_type.rs:78:21:78:21 | B | +| dyn_type.rs:79:5:79:5 | a | TRef.dyn(GP) | dyn_type.rs:78:18:78:18 | A | +| dyn_type.rs:79:5:79:11 | a.get() | | {EXTERNAL LOCATION} | (T_2) | +| dyn_type.rs:79:5:79:11 | a.get() | T0 | dyn_type.rs:78:18:78:18 | A | +| dyn_type.rs:79:5:79:11 | a.get() | T1 | dyn_type.rs:78:21:78:21 | B | +| dyn_type.rs:82:55:82:55 | a | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:82:55:82:55 | a | TRef | dyn_type.rs:82:20:82:52 | T | +| dyn_type.rs:82:72:84:1 | { ... } | | {EXTERNAL LOCATION} | (T_2) | +| dyn_type.rs:82:72:84:1 | { ... } | T0 | dyn_type.rs:82:14:82:14 | A | +| dyn_type.rs:82:72:84:1 | { ... } | T1 | dyn_type.rs:82:17:82:17 | B | +| dyn_type.rs:83:5:83:5 | a | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:83:5:83:5 | a | TRef | dyn_type.rs:82:20:82:52 | T | +| dyn_type.rs:83:5:83:11 | a.get() | | {EXTERNAL LOCATION} | (T_2) | +| dyn_type.rs:83:5:83:11 | a.get() | T0 | dyn_type.rs:82:14:82:14 | A | +| dyn_type.rs:83:5:83:11 | a.get() | T1 | dyn_type.rs:82:17:82:17 | B | +| dyn_type.rs:86:20:86:22 | obj | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:86:20:86:22 | obj | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | +| dyn_type.rs:86:20:86:22 | obj | TRef.dyn(AP) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:86:20:86:22 | obj | TRef.dyn(GP) | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:86:58:99:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dyn_type.rs:87:9:90:5 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| dyn_type.rs:87:9:90:5 | TuplePat | T0 | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:87:9:90:5 | TuplePat | T1 | {EXTERNAL LOCATION} | bool | | dyn_type.rs:88:9:88:11 | _gp | | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:89:9:89:11 | _ap | | {EXTERNAL LOCATION} | bool | | dyn_type.rs:90:9:90:14 | (...) | | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:90:9:90:14 | (...) | dyn(AP) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:90:9:90:14 | (...) | dyn(GP) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:90:9:90:20 | ... .get() | | file://:0:0:0:0 | (T_2) | -| dyn_type.rs:90:9:90:20 | ... .get() | 0(2) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:90:9:90:20 | ... .get() | 1(2) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:90:9:90:20 | ... .get() | | {EXTERNAL LOCATION} | (T_2) | +| dyn_type.rs:90:9:90:20 | ... .get() | T0 | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:90:9:90:20 | ... .get() | T1 | {EXTERNAL LOCATION} | bool | | dyn_type.rs:90:10:90:13 | * ... | | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:90:10:90:13 | * ... | dyn(AP) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:90:10:90:13 | * ... | dyn(GP) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:90:11:90:13 | obj | | file://:0:0:0:0 | & | -| dyn_type.rs:90:11:90:13 | obj | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | -| dyn_type.rs:90:11:90:13 | obj | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:90:11:90:13 | obj | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:91:9:94:5 | TuplePat | | file://:0:0:0:0 | (T_2) | -| dyn_type.rs:91:9:94:5 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:91:9:94:5 | TuplePat | 1(2) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:90:11:90:13 | obj | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:90:11:90:13 | obj | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | +| dyn_type.rs:90:11:90:13 | obj | TRef.dyn(AP) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:90:11:90:13 | obj | TRef.dyn(GP) | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:91:9:94:5 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| dyn_type.rs:91:9:94:5 | TuplePat | T0 | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:91:9:94:5 | TuplePat | T1 | {EXTERNAL LOCATION} | bool | | dyn_type.rs:92:9:92:11 | _gp | | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:93:9:93:11 | _ap | | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | | file://:0:0:0:0 | (T_2) | -| dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | 0(2) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | 1(2) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:94:23:94:25 | obj | | file://:0:0:0:0 | & | -| dyn_type.rs:94:23:94:25 | obj | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | -| dyn_type.rs:94:23:94:25 | obj | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:94:23:94:25 | obj | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:95:9:98:5 | TuplePat | | file://:0:0:0:0 | (T_2) | -| dyn_type.rs:95:9:98:5 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:95:9:98:5 | TuplePat | 1(2) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | | {EXTERNAL LOCATION} | (T_2) | +| dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | T0 | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | T1 | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:94:23:94:25 | obj | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:94:23:94:25 | obj | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | +| dyn_type.rs:94:23:94:25 | obj | TRef.dyn(AP) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:94:23:94:25 | obj | TRef.dyn(GP) | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:95:9:98:5 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| dyn_type.rs:95:9:98:5 | TuplePat | T0 | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:95:9:98:5 | TuplePat | T1 | {EXTERNAL LOCATION} | bool | | dyn_type.rs:96:9:96:11 | _gp | | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:97:9:97:11 | _ap | | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:98:9:98:22 | assoc_get(...) | | file://:0:0:0:0 | (T_2) | -| dyn_type.rs:98:9:98:22 | assoc_get(...) | 0(2) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:98:9:98:22 | assoc_get(...) | 1(2) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:98:19:98:21 | obj | | file://:0:0:0:0 | & | -| dyn_type.rs:98:19:98:21 | obj | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | -| dyn_type.rs:98:19:98:21 | obj | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:98:19:98:21 | obj | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:101:15:108:1 | { ... } | | file://:0:0:0:0 | () | -| dyn_type.rs:102:5:102:49 | test_basic_dyn_trait(...) | | file://:0:0:0:0 | () | -| dyn_type.rs:102:26:102:48 | &... | | file://:0:0:0:0 | & | -| dyn_type.rs:102:26:102:48 | &... | &T | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | -| dyn_type.rs:102:26:102:48 | &... | &T | dyn_type.rs:21:1:24:1 | MyStruct | +| dyn_type.rs:98:9:98:22 | assoc_get(...) | | {EXTERNAL LOCATION} | (T_2) | +| dyn_type.rs:98:9:98:22 | assoc_get(...) | T0 | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:98:9:98:22 | assoc_get(...) | T1 | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:98:19:98:21 | obj | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:98:19:98:21 | obj | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | +| dyn_type.rs:98:19:98:21 | obj | TRef.dyn(AP) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:98:19:98:21 | obj | TRef.dyn(GP) | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:101:15:108:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dyn_type.rs:102:5:102:49 | test_basic_dyn_trait(...) | | {EXTERNAL LOCATION} | () | +| dyn_type.rs:102:26:102:48 | &... | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:102:26:102:48 | &... | TRef | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:102:27:102:48 | MyStruct {...} | | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:102:45:102:46 | 42 | | {EXTERNAL LOCATION} | i32 | -| dyn_type.rs:103:5:105:6 | test_generic_dyn_trait(...) | | file://:0:0:0:0 | () | -| dyn_type.rs:103:28:105:5 | &... | | file://:0:0:0:0 | & | -| dyn_type.rs:103:28:105:5 | &... | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | -| dyn_type.rs:103:28:105:5 | &... | &T | dyn_type.rs:33:1:36:1 | GenStruct | -| dyn_type.rs:103:28:105:5 | &... | &T.A | {EXTERNAL LOCATION} | String | -| dyn_type.rs:103:28:105:5 | &... | &T.dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:103:5:105:6 | test_generic_dyn_trait(...) | | {EXTERNAL LOCATION} | () | +| dyn_type.rs:103:28:105:5 | &... | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:103:28:105:5 | &... | TRef | dyn_type.rs:33:1:36:1 | GenStruct | +| dyn_type.rs:103:28:105:5 | &... | TRef.A | {EXTERNAL LOCATION} | String | | dyn_type.rs:103:29:105:5 | GenStruct {...} | | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:103:29:105:5 | GenStruct {...} | A | {EXTERNAL LOCATION} | String | -| dyn_type.rs:104:16:104:17 | "" | | file://:0:0:0:0 | & | -| dyn_type.rs:104:16:104:17 | "" | &T | {EXTERNAL LOCATION} | str | +| dyn_type.rs:104:16:104:17 | "" | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:104:16:104:17 | "" | TRef | {EXTERNAL LOCATION} | str | | dyn_type.rs:104:16:104:29 | "".to_string() | | {EXTERNAL LOCATION} | String | -| dyn_type.rs:106:5:106:25 | test_poly_dyn_trait(...) | | file://:0:0:0:0 | () | -| dyn_type.rs:107:5:107:46 | test_assoc_type(...) | | file://:0:0:0:0 | () | -| dyn_type.rs:107:21:107:45 | &... | | file://:0:0:0:0 | & | -| dyn_type.rs:107:21:107:45 | &... | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | -| dyn_type.rs:107:21:107:45 | &... | &T | dyn_type.rs:33:1:36:1 | GenStruct | -| dyn_type.rs:107:21:107:45 | &... | &T.A | {EXTERNAL LOCATION} | i32 | -| dyn_type.rs:107:21:107:45 | &... | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:107:21:107:45 | &... | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:106:5:106:25 | test_poly_dyn_trait(...) | | {EXTERNAL LOCATION} | () | +| dyn_type.rs:107:5:107:46 | test_assoc_type(...) | | {EXTERNAL LOCATION} | () | +| dyn_type.rs:107:21:107:45 | &... | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:107:21:107:45 | &... | TRef | dyn_type.rs:33:1:36:1 | GenStruct | +| dyn_type.rs:107:21:107:45 | &... | TRef.A | {EXTERNAL LOCATION} | i32 | | dyn_type.rs:107:22:107:45 | GenStruct {...} | | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:107:22:107:45 | GenStruct {...} | A | {EXTERNAL LOCATION} | i32 | | dyn_type.rs:107:41:107:43 | 100 | | {EXTERNAL LOCATION} | i32 | | invalid/main.rs:8:16:8:19 | SelfParam | | invalid/main.rs:7:5:9:5 | Self [trait T1] | -| invalid/main.rs:8:22:8:23 | { ... } | | file://:0:0:0:0 | () | +| invalid/main.rs:8:22:8:23 | { ... } | | {EXTERNAL LOCATION} | () | | invalid/main.rs:12:16:12:19 | SelfParam | | invalid/main.rs:11:5:15:5 | Self [trait T2] | -| invalid/main.rs:12:22:14:9 | { ... } | | file://:0:0:0:0 | () | +| invalid/main.rs:12:22:14:9 | { ... } | | {EXTERNAL LOCATION} | () | | invalid/main.rs:13:13:13:16 | self | | invalid/main.rs:11:5:15:5 | Self [trait T2] | -| invalid/main.rs:13:13:13:22 | self.foo() | | file://:0:0:0:0 | () | +| invalid/main.rs:13:13:13:22 | self.foo() | | {EXTERNAL LOCATION} | () | | invalid/main.rs:25:22:25:25 | SelfParam | | invalid/main.rs:24:5:26:5 | Self [trait AddAlias] | | invalid/main.rs:25:28:25:32 | other | | invalid/main.rs:24:5:26:5 | Self [trait AddAlias] | | invalid/main.rs:29:22:29:25 | SelfParam | | invalid/main.rs:21:5:22:20 | Num | @@ -1166,7 +1123,7 @@ inferType | invalid/main.rs:40:13:40:16 | self | | invalid/main.rs:35:10:35:20 | T | | invalid/main.rs:40:13:40:33 | self.add_alias(...) | | invalid/main.rs:35:10:35:20 | T | | invalid/main.rs:40:28:40:32 | other | | invalid/main.rs:35:10:35:20 | T | -| invalid/main.rs:44:30:49:5 | { ... } | | file://:0:0:0:0 | () | +| invalid/main.rs:44:30:49:5 | { ... } | | {EXTERNAL LOCATION} | () | | invalid/main.rs:45:13:45:13 | a | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:45:17:45:22 | Num(...) | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:45:21:45:21 | 5 | | {EXTERNAL LOCATION} | i32 | @@ -1177,70 +1134,64 @@ inferType | invalid/main.rs:47:17:47:17 | a | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:47:17:47:21 | ... + ... | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:47:21:47:21 | b | | invalid/main.rs:21:5:22:20 | Num | -| invalid/main.rs:57:19:57:23 | SelfParam | | file://:0:0:0:0 | & | -| invalid/main.rs:57:19:57:23 | SelfParam | &T | invalid/main.rs:56:5:58:5 | Self [trait Clone1] | -| invalid/main.rs:61:22:61:26 | SelfParam | | file://:0:0:0:0 | & | -| invalid/main.rs:61:22:61:26 | SelfParam | &T | invalid/main.rs:60:5:64:5 | Self [trait Duplicatable] | -| invalid/main.rs:68:19:68:23 | SelfParam | | file://:0:0:0:0 | & | -| invalid/main.rs:68:19:68:23 | SelfParam | &T | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:57:19:57:23 | SelfParam | | {EXTERNAL LOCATION} | & | +| invalid/main.rs:57:19:57:23 | SelfParam | TRef | invalid/main.rs:56:5:58:5 | Self [trait Clone1] | +| invalid/main.rs:61:22:61:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| invalid/main.rs:61:22:61:26 | SelfParam | TRef | invalid/main.rs:60:5:64:5 | Self [trait Duplicatable] | +| invalid/main.rs:68:19:68:23 | SelfParam | | {EXTERNAL LOCATION} | & | +| invalid/main.rs:68:19:68:23 | SelfParam | TRef | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:68:34:70:9 | { ... } | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:69:13:69:17 | * ... | | invalid/main.rs:53:5:54:14 | S1 | -| invalid/main.rs:69:14:69:17 | self | | file://:0:0:0:0 | & | -| invalid/main.rs:69:14:69:17 | self | &T | invalid/main.rs:53:5:54:14 | S1 | -| invalid/main.rs:75:22:75:26 | SelfParam | | file://:0:0:0:0 | & | -| invalid/main.rs:75:22:75:26 | SelfParam | &T | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:69:14:69:17 | self | | {EXTERNAL LOCATION} | & | +| invalid/main.rs:69:14:69:17 | self | TRef | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:75:22:75:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| invalid/main.rs:75:22:75:26 | SelfParam | TRef | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:75:37:77:9 | { ... } | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:76:13:76:17 | * ... | | invalid/main.rs:53:5:54:14 | S1 | -| invalid/main.rs:76:14:76:17 | self | | file://:0:0:0:0 | & | -| invalid/main.rs:76:14:76:17 | self | &T | invalid/main.rs:53:5:54:14 | S1 | -| invalid/main.rs:83:22:83:26 | SelfParam | | file://:0:0:0:0 | & | -| invalid/main.rs:83:22:83:26 | SelfParam | &T | invalid/main.rs:81:10:81:18 | T | +| invalid/main.rs:76:14:76:17 | self | | {EXTERNAL LOCATION} | & | +| invalid/main.rs:76:14:76:17 | self | TRef | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:83:22:83:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| invalid/main.rs:83:22:83:26 | SelfParam | TRef | invalid/main.rs:81:10:81:18 | T | | invalid/main.rs:83:37:85:9 | { ... } | | invalid/main.rs:81:10:81:18 | T | -| invalid/main.rs:84:13:84:16 | self | | file://:0:0:0:0 | & | -| invalid/main.rs:84:13:84:16 | self | &T | invalid/main.rs:81:10:81:18 | T | +| invalid/main.rs:84:13:84:16 | self | | {EXTERNAL LOCATION} | & | +| invalid/main.rs:84:13:84:16 | self | TRef | invalid/main.rs:81:10:81:18 | T | | invalid/main.rs:84:13:84:25 | self.clone1() | | invalid/main.rs:81:10:81:18 | T | -| invalid/main.rs:88:33:92:5 | { ... } | | file://:0:0:0:0 | () | +| invalid/main.rs:88:33:92:5 | { ... } | | {EXTERNAL LOCATION} | () | | invalid/main.rs:91:13:91:13 | x | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:91:17:91:18 | S1 | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:91:17:91:30 | S1.duplicate() | | invalid/main.rs:53:5:54:14 | S1 | -| main.rs:25:30:28:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:25:30:28:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:26:13:26:13 | x | | main.rs:5:5:8:5 | MyThing | | main.rs:26:17:26:32 | MyThing {...} | | main.rs:5:5:8:5 | MyThing | | main.rs:26:30:26:30 | S | | main.rs:3:5:4:13 | S | -| main.rs:27:18:27:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:27:18:27:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:27:18:27:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:27:18:27:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:27:18:27:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:27:18:27:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:27:18:27:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:27:18:27:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:27:18:27:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:27:18:27:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:27:26:27:26 | x | | main.rs:5:5:8:5 | MyThing | | main.rs:27:26:27:28 | x.a | | main.rs:3:5:4:13 | S | | main.rs:30:29:30:29 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:30:29:30:29 | x | A | {EXTERNAL LOCATION} | bool | -| main.rs:30:46:33:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:30:46:33:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:31:13:31:13 | a | | {EXTERNAL LOCATION} | bool | | main.rs:31:17:31:17 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:31:17:31:17 | x | A | {EXTERNAL LOCATION} | bool | | main.rs:31:17:31:19 | x.a | | {EXTERNAL LOCATION} | bool | -| main.rs:32:18:32:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:32:18:32:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:32:18:32:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:32:18:32:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:32:18:32:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:32:18:32:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:32:18:32:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:32:18:32:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:32:18:32:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:32:18:32:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:32:26:32:26 | a | | {EXTERNAL LOCATION} | bool | -| main.rs:35:31:63:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:35:31:63:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:37:13:37:13 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:37:13:37:13 | x | A | main.rs:3:5:4:13 | S | | main.rs:37:17:37:42 | GenericThing::<...> {...} | | main.rs:16:5:19:5 | GenericThing | | main.rs:37:17:37:42 | GenericThing::<...> {...} | A | main.rs:3:5:4:13 | S | | main.rs:37:40:37:40 | S | | main.rs:3:5:4:13 | S | -| main.rs:38:18:38:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:38:18:38:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:38:18:38:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:38:18:38:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:38:18:38:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:38:18:38:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:38:18:38:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:38:18:38:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:38:18:38:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:38:18:38:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:38:26:38:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:38:26:38:26 | x | A | main.rs:3:5:4:13 | S | | main.rs:38:26:38:28 | x.a | | main.rs:3:5:4:13 | S | @@ -1249,12 +1200,10 @@ inferType | main.rs:41:17:41:37 | GenericThing {...} | | main.rs:16:5:19:5 | GenericThing | | main.rs:41:17:41:37 | GenericThing {...} | A | main.rs:3:5:4:13 | S | | main.rs:41:35:41:35 | S | | main.rs:3:5:4:13 | S | -| main.rs:42:18:42:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:42:18:42:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:42:18:42:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:42:18:42:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:42:18:42:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:42:18:42:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:42:18:42:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:42:18:42:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:42:18:42:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:42:18:42:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:42:26:42:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:42:26:42:26 | x | A | main.rs:3:5:4:13 | S | | main.rs:42:26:42:28 | x.a | | main.rs:3:5:4:13 | S | @@ -1262,12 +1211,10 @@ inferType | main.rs:46:17:48:9 | OptionS {...} | | main.rs:21:5:23:5 | OptionS | | main.rs:47:16:47:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | | main.rs:47:16:47:33 | ...::MyNone(...) | T | main.rs:3:5:4:13 | S | -| main.rs:49:18:49:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:49:18:49:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:49:18:49:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:49:18:49:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:49:18:49:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:49:18:49:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:49:18:49:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:49:18:49:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:49:18:49:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:49:18:49:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:49:26:49:26 | x | | main.rs:21:5:23:5 | OptionS | | main.rs:49:26:49:28 | x.a | | main.rs:10:5:14:5 | MyOption | | main.rs:49:26:49:28 | x.a | T | main.rs:3:5:4:13 | S | @@ -1279,12 +1226,10 @@ inferType | main.rs:52:17:54:9 | GenericThing::<...> {...} | A.T | main.rs:3:5:4:13 | S | | main.rs:53:16:53:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | | main.rs:53:16:53:33 | ...::MyNone(...) | T | main.rs:3:5:4:13 | S | -| main.rs:55:18:55:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:55:18:55:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:55:18:55:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:55:18:55:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:55:18:55:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:55:18:55:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:55:18:55:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:55:18:55:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:55:18:55:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:55:18:55:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:55:26:55:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:55:26:55:26 | x | A | main.rs:10:5:14:5 | MyOption | | main.rs:55:26:55:26 | x | A.T | main.rs:3:5:4:13 | S | @@ -1305,17 +1250,15 @@ inferType | main.rs:61:30:61:30 | x | A.T | main.rs:3:5:4:13 | S | | main.rs:61:30:61:32 | x.a | | main.rs:10:5:14:5 | MyOption | | main.rs:61:30:61:32 | x.a | T | main.rs:3:5:4:13 | S | -| main.rs:62:18:62:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:62:18:62:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:62:18:62:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:62:18:62:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:62:18:62:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:62:18:62:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:62:18:62:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:62:18:62:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:62:18:62:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:62:18:62:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:62:26:62:26 | a | | main.rs:10:5:14:5 | MyOption | | main.rs:62:26:62:26 | a | T | main.rs:3:5:4:13 | S | -| main.rs:65:16:68:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:66:9:66:29 | simple_field_access(...) | | file://:0:0:0:0 | () | -| main.rs:67:9:67:30 | generic_field_access(...) | | file://:0:0:0:0 | () | +| main.rs:65:16:68:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:66:9:66:29 | simple_field_access(...) | | {EXTERNAL LOCATION} | () | +| main.rs:67:9:67:30 | generic_field_access(...) | | {EXTERNAL LOCATION} | () | | main.rs:75:19:75:22 | SelfParam | | main.rs:72:5:72:21 | Foo | | main.rs:75:33:77:9 | { ... } | | main.rs:72:5:72:21 | Foo | | main.rs:76:13:76:16 | self | | main.rs:72:5:72:21 | Foo | @@ -1323,12 +1266,10 @@ inferType | main.rs:79:32:81:9 | { ... } | | main.rs:72:5:72:21 | Foo | | main.rs:80:13:80:16 | self | | main.rs:72:5:72:21 | Foo | | main.rs:84:23:89:5 | { ... } | | main.rs:72:5:72:21 | Foo | -| main.rs:85:18:85:33 | "main.rs::m1::f\\n" | | file://:0:0:0:0 | & | -| main.rs:85:18:85:33 | "main.rs::m1::f\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:85:18:85:33 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:85:18:85:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:85:18:85:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:85:18:85:33 | { ... } | | file://:0:0:0:0 | () | +| main.rs:85:18:85:33 | "main.rs::m1::f\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:85:18:85:33 | "main.rs::m1::f\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:85:18:85:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:85:18:85:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:86:13:86:13 | x | | main.rs:72:5:72:21 | Foo | | main.rs:86:17:86:22 | Foo {...} | | main.rs:72:5:72:21 | Foo | | main.rs:87:13:87:13 | y | | main.rs:72:5:72:21 | Foo | @@ -1337,12 +1278,10 @@ inferType | main.rs:91:14:91:14 | x | | main.rs:72:5:72:21 | Foo | | main.rs:91:22:91:22 | y | | main.rs:72:5:72:21 | Foo | | main.rs:91:37:95:5 | { ... } | | main.rs:72:5:72:21 | Foo | -| main.rs:92:18:92:33 | "main.rs::m1::g\\n" | | file://:0:0:0:0 | & | -| main.rs:92:18:92:33 | "main.rs::m1::g\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:92:18:92:33 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:92:18:92:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:92:18:92:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:92:18:92:33 | { ... } | | file://:0:0:0:0 | () | +| main.rs:92:18:92:33 | "main.rs::m1::g\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:92:18:92:33 | "main.rs::m1::g\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:92:18:92:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:92:18:92:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:93:9:93:9 | x | | main.rs:72:5:72:21 | Foo | | main.rs:93:9:93:14 | x.m1() | | main.rs:72:5:72:21 | Foo | | main.rs:94:9:94:9 | y | | main.rs:72:5:72:21 | Foo | @@ -1352,7 +1291,7 @@ inferType | main.rs:110:39:112:9 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:111:13:111:16 | self | | main.rs:99:5:102:5 | MyThing | | main.rs:111:13:111:22 | self.field | | {EXTERNAL LOCATION} | bool | -| main.rs:115:16:121:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:115:16:121:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:116:13:116:13 | x | | main.rs:99:5:102:5 | MyThing | | main.rs:116:17:116:39 | MyThing {...} | | main.rs:99:5:102:5 | MyThing | | main.rs:116:34:116:37 | true | | {EXTERNAL LOCATION} | bool | @@ -1365,44 +1304,40 @@ inferType | main.rs:120:13:120:13 | b | | {EXTERNAL LOCATION} | bool | | main.rs:120:17:120:40 | ...::trait_method(...) | | {EXTERNAL LOCATION} | bool | | main.rs:120:39:120:39 | y | | main.rs:99:5:102:5 | MyThing | -| main.rs:130:25:130:29 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:130:25:130:29 | SelfParam | &T | main.rs:128:9:133:9 | Self [trait Foo] | -| main.rs:130:32:132:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:131:26:131:31 | "foo!\\n" | | file://:0:0:0:0 | & | -| main.rs:131:26:131:31 | "foo!\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:131:26:131:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:131:26:131:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:131:26:131:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:131:26:131:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:137:25:137:29 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:137:25:137:29 | SelfParam | &T | main.rs:135:9:140:9 | Self [trait Bar] | -| main.rs:137:32:139:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:138:26:138:31 | "bar!\\n" | | file://:0:0:0:0 | & | -| main.rs:138:26:138:31 | "bar!\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:138:26:138:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:138:26:138:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:138:26:138:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:138:26:138:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:149:15:170:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:130:25:130:29 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:130:25:130:29 | SelfParam | TRef | main.rs:128:9:133:9 | Self [trait Foo] | +| main.rs:130:32:132:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:131:26:131:31 | "foo!\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:131:26:131:31 | "foo!\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:131:26:131:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:131:26:131:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:137:25:137:29 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:137:25:137:29 | SelfParam | TRef | main.rs:135:9:140:9 | Self [trait Bar] | +| main.rs:137:32:139:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:138:26:138:31 | "bar!\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:138:26:138:31 | "bar!\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:138:26:138:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:138:26:138:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:149:15:170:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:150:13:150:13 | x | | main.rs:142:9:142:21 | X | | main.rs:150:17:150:17 | X | | main.rs:142:9:142:21 | X | -| main.rs:151:9:154:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:151:9:154:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:153:13:153:13 | x | | main.rs:142:9:142:21 | X | -| main.rs:153:13:153:24 | x.a_method() | | file://:0:0:0:0 | () | -| main.rs:155:9:158:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:153:13:153:24 | x.a_method() | | {EXTERNAL LOCATION} | () | +| main.rs:155:9:158:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:157:13:157:13 | x | | main.rs:142:9:142:21 | X | -| main.rs:157:13:157:24 | x.a_method() | | file://:0:0:0:0 | () | -| main.rs:159:9:162:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:157:13:157:24 | x.a_method() | | {EXTERNAL LOCATION} | () | +| main.rs:159:9:162:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:161:13:161:13 | x | | main.rs:142:9:142:21 | X | -| main.rs:161:13:161:24 | x.a_method() | | file://:0:0:0:0 | () | -| main.rs:163:9:169:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:167:13:167:29 | ...::a_method(...) | | file://:0:0:0:0 | () | -| main.rs:167:27:167:28 | &x | | file://:0:0:0:0 | & | -| main.rs:167:27:167:28 | &x | &T | main.rs:142:9:142:21 | X | +| main.rs:161:13:161:24 | x.a_method() | | {EXTERNAL LOCATION} | () | +| main.rs:163:9:169:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:167:13:167:29 | ...::a_method(...) | | {EXTERNAL LOCATION} | () | +| main.rs:167:27:167:28 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:167:27:167:28 | &x | TRef | main.rs:142:9:142:21 | X | | main.rs:167:28:167:28 | x | | main.rs:142:9:142:21 | X | -| main.rs:168:13:168:29 | ...::a_method(...) | | file://:0:0:0:0 | () | -| main.rs:168:27:168:28 | &x | | file://:0:0:0:0 | & | -| main.rs:168:27:168:28 | &x | &T | main.rs:142:9:142:21 | X | +| main.rs:168:13:168:29 | ...::a_method(...) | | {EXTERNAL LOCATION} | () | +| main.rs:168:27:168:28 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:168:27:168:28 | &x | TRef | main.rs:142:9:142:21 | X | | main.rs:168:28:168:28 | x | | main.rs:142:9:142:21 | X | | main.rs:186:15:186:18 | SelfParam | | main.rs:174:5:177:5 | MyThing | | main.rs:186:15:186:18 | SelfParam | A | main.rs:179:5:180:14 | S1 | @@ -1425,7 +1360,7 @@ inferType | main.rs:200:13:200:16 | self | | main.rs:174:5:177:5 | MyThing | | main.rs:200:13:200:16 | self | A | main.rs:198:10:198:10 | T | | main.rs:200:13:200:18 | self.a | | main.rs:198:10:198:10 | T | -| main.rs:204:16:220:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:204:16:220:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:205:13:205:13 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:205:13:205:13 | x | A | main.rs:179:5:180:14 | S1 | | main.rs:205:17:205:33 | MyThing {...} | | main.rs:174:5:177:5 | MyThing | @@ -1436,39 +1371,31 @@ inferType | main.rs:206:17:206:33 | MyThing {...} | | main.rs:174:5:177:5 | MyThing | | main.rs:206:17:206:33 | MyThing {...} | A | main.rs:181:5:182:14 | S2 | | main.rs:206:30:206:31 | S2 | | main.rs:181:5:182:14 | S2 | -| main.rs:209:18:209:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:209:18:209:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:209:18:209:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:209:18:209:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:209:18:209:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:209:18:209:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:209:18:209:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:209:18:209:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:209:18:209:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:209:18:209:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:209:26:209:26 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:209:26:209:26 | x | A | main.rs:179:5:180:14 | S1 | | main.rs:209:26:209:28 | x.a | | main.rs:179:5:180:14 | S1 | -| main.rs:210:18:210:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:210:18:210:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:210:18:210:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:210:18:210:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:210:18:210:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:210:18:210:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:210:18:210:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:210:18:210:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:210:18:210:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:210:18:210:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:210:26:210:26 | y | | main.rs:174:5:177:5 | MyThing | | main.rs:210:26:210:26 | y | A | main.rs:181:5:182:14 | S2 | | main.rs:210:26:210:28 | y.a | | main.rs:181:5:182:14 | S2 | -| main.rs:212:18:212:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:212:18:212:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:212:18:212:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:212:18:212:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:212:18:212:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:212:18:212:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:212:18:212:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:212:18:212:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:212:18:212:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:212:18:212:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:212:26:212:26 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:212:26:212:26 | x | A | main.rs:179:5:180:14 | S1 | | main.rs:212:26:212:31 | x.m1() | | main.rs:179:5:180:14 | S1 | -| main.rs:213:18:213:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:213:18:213:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:213:18:213:33 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:213:18:213:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:213:18:213:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:213:18:213:33 | { ... } | | file://:0:0:0:0 | () | +| main.rs:213:18:213:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:213:18:213:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:213:18:213:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:213:18:213:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:213:26:213:26 | y | | main.rs:174:5:177:5 | MyThing | | main.rs:213:26:213:26 | y | A | main.rs:181:5:182:14 | S2 | | main.rs:213:26:213:31 | y.m1() | | main.rs:174:5:177:5 | MyThing | @@ -1484,21 +1411,17 @@ inferType | main.rs:216:17:216:33 | MyThing {...} | | main.rs:174:5:177:5 | MyThing | | main.rs:216:17:216:33 | MyThing {...} | A | main.rs:181:5:182:14 | S2 | | main.rs:216:30:216:31 | S2 | | main.rs:181:5:182:14 | S2 | -| main.rs:218:18:218:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:218:18:218:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:218:18:218:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:218:18:218:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:218:18:218:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:218:18:218:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:218:18:218:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:218:18:218:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:218:18:218:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:218:18:218:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:218:26:218:26 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:218:26:218:26 | x | A | main.rs:179:5:180:14 | S1 | | main.rs:218:26:218:31 | x.m2() | | main.rs:179:5:180:14 | S1 | -| main.rs:219:18:219:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:219:18:219:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:219:18:219:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:219:18:219:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:219:18:219:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:219:18:219:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:219:18:219:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:219:18:219:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:219:18:219:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:219:18:219:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:219:26:219:26 | y | | main.rs:174:5:177:5 | MyThing | | main.rs:219:26:219:26 | y | A | main.rs:181:5:182:14 | S2 | | main.rs:219:26:219:31 | y.m2() | | main.rs:181:5:182:14 | S2 | @@ -1622,7 +1545,7 @@ inferType | main.rs:366:73:369:5 | { ... } | | main.rs:235:5:236:14 | S1 | | main.rs:368:9:368:13 | thing | | main.rs:366:39:366:53 | TP | | main.rs:368:9:368:26 | thing.convert_to() | | main.rs:235:5:236:14 | S1 | -| main.rs:371:16:442:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:371:16:442:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:372:13:372:20 | thing_s1 | | main.rs:224:5:227:5 | MyThing | | main.rs:372:13:372:20 | thing_s1 | A | main.rs:235:5:236:14 | S1 | | main.rs:372:24:372:40 | MyThing {...} | | main.rs:224:5:227:5 | MyThing | @@ -1638,21 +1561,17 @@ inferType | main.rs:374:24:374:40 | MyThing {...} | | main.rs:224:5:227:5 | MyThing | | main.rs:374:24:374:40 | MyThing {...} | A | main.rs:239:5:240:14 | S3 | | main.rs:374:37:374:38 | S3 | | main.rs:239:5:240:14 | S3 | -| main.rs:378:18:378:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:378:18:378:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:378:18:378:38 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:378:18:378:38 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:378:18:378:38 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:378:18:378:38 | { ... } | | file://:0:0:0:0 | () | +| main.rs:378:18:378:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:378:18:378:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:378:18:378:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:378:18:378:38 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:378:26:378:33 | thing_s1 | | main.rs:224:5:227:5 | MyThing | | main.rs:378:26:378:33 | thing_s1 | A | main.rs:235:5:236:14 | S1 | | main.rs:378:26:378:38 | thing_s1.m1() | | main.rs:235:5:236:14 | S1 | -| main.rs:379:18:379:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:379:18:379:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:379:18:379:40 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:379:18:379:40 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:379:18:379:40 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:379:18:379:40 | { ... } | | file://:0:0:0:0 | () | +| main.rs:379:18:379:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:379:18:379:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:379:18:379:40 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:379:18:379:40 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:379:26:379:33 | thing_s2 | | main.rs:224:5:227:5 | MyThing | | main.rs:379:26:379:33 | thing_s2 | A | main.rs:237:5:238:14 | S2 | | main.rs:379:26:379:38 | thing_s2.m1() | | main.rs:224:5:227:5 | MyThing | @@ -1662,12 +1581,10 @@ inferType | main.rs:380:22:380:29 | thing_s3 | | main.rs:224:5:227:5 | MyThing | | main.rs:380:22:380:29 | thing_s3 | A | main.rs:239:5:240:14 | S3 | | main.rs:380:22:380:34 | thing_s3.m1() | | main.rs:239:5:240:14 | S3 | -| main.rs:381:18:381:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:381:18:381:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:381:18:381:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:381:18:381:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:381:18:381:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:381:18:381:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:381:18:381:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:381:18:381:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:381:18:381:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:381:18:381:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:381:26:381:27 | s3 | | main.rs:239:5:240:14 | S3 | | main.rs:383:13:383:14 | p1 | | main.rs:229:5:233:5 | MyPair | | main.rs:383:13:383:14 | p1 | P1 | main.rs:235:5:236:14 | S1 | @@ -1677,12 +1594,10 @@ inferType | main.rs:383:18:383:42 | MyPair {...} | P2 | main.rs:235:5:236:14 | S1 | | main.rs:383:31:383:32 | S1 | | main.rs:235:5:236:14 | S1 | | main.rs:383:39:383:40 | S1 | | main.rs:235:5:236:14 | S1 | -| main.rs:384:18:384:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:384:18:384:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:384:18:384:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:384:18:384:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:384:18:384:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:384:18:384:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:384:18:384:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:384:18:384:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:384:18:384:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:384:18:384:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:384:26:384:27 | p1 | | main.rs:229:5:233:5 | MyPair | | main.rs:384:26:384:27 | p1 | P1 | main.rs:235:5:236:14 | S1 | | main.rs:384:26:384:27 | p1 | P2 | main.rs:235:5:236:14 | S1 | @@ -1695,12 +1610,10 @@ inferType | main.rs:386:18:386:42 | MyPair {...} | P2 | main.rs:237:5:238:14 | S2 | | main.rs:386:31:386:32 | S1 | | main.rs:235:5:236:14 | S1 | | main.rs:386:39:386:40 | S2 | | main.rs:237:5:238:14 | S2 | -| main.rs:387:18:387:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:387:18:387:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:387:18:387:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:387:18:387:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:387:18:387:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:387:18:387:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:387:18:387:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:387:18:387:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:387:18:387:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:387:18:387:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:387:26:387:27 | p2 | | main.rs:229:5:233:5 | MyPair | | main.rs:387:26:387:27 | p2 | P1 | main.rs:235:5:236:14 | S1 | | main.rs:387:26:387:27 | p2 | P2 | main.rs:237:5:238:14 | S2 | @@ -1717,12 +1630,10 @@ inferType | main.rs:390:17:390:33 | MyThing {...} | A | main.rs:235:5:236:14 | S1 | | main.rs:390:30:390:31 | S1 | | main.rs:235:5:236:14 | S1 | | main.rs:391:17:391:18 | S3 | | main.rs:239:5:240:14 | S3 | -| main.rs:393:18:393:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:393:18:393:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:393:18:393:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:393:18:393:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:393:18:393:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:393:18:393:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:393:18:393:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:393:18:393:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:393:18:393:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:393:18:393:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:393:26:393:27 | p3 | | main.rs:229:5:233:5 | MyPair | | main.rs:393:26:393:27 | p3 | P1 | main.rs:224:5:227:5 | MyThing | | main.rs:393:26:393:27 | p3 | P1.A | main.rs:235:5:236:14 | S1 | @@ -1741,24 +1652,20 @@ inferType | main.rs:397:17:397:17 | a | P1 | main.rs:235:5:236:14 | S1 | | main.rs:397:17:397:17 | a | P2 | main.rs:235:5:236:14 | S1 | | main.rs:397:17:397:23 | a.fst() | | main.rs:235:5:236:14 | S1 | -| main.rs:398:18:398:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:398:18:398:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:398:18:398:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:398:18:398:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:398:18:398:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:398:18:398:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:398:18:398:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:398:18:398:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:398:18:398:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:398:18:398:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:398:26:398:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:399:13:399:13 | y | | main.rs:235:5:236:14 | S1 | | main.rs:399:17:399:17 | a | | main.rs:229:5:233:5 | MyPair | | main.rs:399:17:399:17 | a | P1 | main.rs:235:5:236:14 | S1 | | main.rs:399:17:399:17 | a | P2 | main.rs:235:5:236:14 | S1 | | main.rs:399:17:399:23 | a.snd() | | main.rs:235:5:236:14 | S1 | -| main.rs:400:18:400:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:400:18:400:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:400:18:400:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:400:18:400:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:400:18:400:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:400:18:400:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:400:18:400:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:400:18:400:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:400:18:400:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:400:18:400:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:400:26:400:26 | y | | main.rs:235:5:236:14 | S1 | | main.rs:406:13:406:13 | b | | main.rs:229:5:233:5 | MyPair | | main.rs:406:13:406:13 | b | P1 | main.rs:237:5:238:14 | S2 | @@ -1773,35 +1680,29 @@ inferType | main.rs:407:17:407:17 | b | P1 | main.rs:237:5:238:14 | S2 | | main.rs:407:17:407:17 | b | P2 | main.rs:235:5:236:14 | S1 | | main.rs:407:17:407:23 | b.fst() | | main.rs:235:5:236:14 | S1 | -| main.rs:408:18:408:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:408:18:408:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:408:18:408:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:408:18:408:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:408:18:408:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:408:18:408:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:408:18:408:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:408:18:408:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:408:18:408:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:408:18:408:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:408:26:408:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:409:13:409:13 | y | | main.rs:237:5:238:14 | S2 | | main.rs:409:17:409:17 | b | | main.rs:229:5:233:5 | MyPair | | main.rs:409:17:409:17 | b | P1 | main.rs:237:5:238:14 | S2 | | main.rs:409:17:409:17 | b | P2 | main.rs:235:5:236:14 | S1 | | main.rs:409:17:409:23 | b.snd() | | main.rs:237:5:238:14 | S2 | -| main.rs:410:18:410:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:410:18:410:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:410:18:410:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:410:18:410:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:410:18:410:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:410:18:410:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:410:18:410:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:410:18:410:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:410:18:410:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:410:18:410:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:410:26:410:26 | y | | main.rs:237:5:238:14 | S2 | | main.rs:414:13:414:13 | x | | main.rs:235:5:236:14 | S1 | | main.rs:414:17:414:39 | call_trait_m1(...) | | main.rs:235:5:236:14 | S1 | | main.rs:414:31:414:38 | thing_s1 | | main.rs:224:5:227:5 | MyThing | | main.rs:414:31:414:38 | thing_s1 | A | main.rs:235:5:236:14 | S1 | -| main.rs:415:18:415:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:415:18:415:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:415:18:415:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:415:18:415:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:415:18:415:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:415:18:415:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:415:18:415:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:415:18:415:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:415:18:415:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:415:18:415:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:415:26:415:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:416:13:416:13 | y | | main.rs:224:5:227:5 | MyThing | | main.rs:416:13:416:13 | y | A | main.rs:237:5:238:14 | S2 | @@ -1809,12 +1710,10 @@ inferType | main.rs:416:17:416:39 | call_trait_m1(...) | A | main.rs:237:5:238:14 | S2 | | main.rs:416:31:416:38 | thing_s2 | | main.rs:224:5:227:5 | MyThing | | main.rs:416:31:416:38 | thing_s2 | A | main.rs:237:5:238:14 | S2 | -| main.rs:417:18:417:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:417:18:417:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:417:18:417:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:417:18:417:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:417:18:417:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:417:18:417:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:417:18:417:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:417:18:417:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:417:18:417:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:417:18:417:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:417:26:417:26 | y | | main.rs:224:5:227:5 | MyThing | | main.rs:417:26:417:26 | y | A | main.rs:237:5:238:14 | S2 | | main.rs:417:26:417:28 | y.a | | main.rs:237:5:238:14 | S2 | @@ -1831,24 +1730,20 @@ inferType | main.rs:421:25:421:25 | a | | main.rs:229:5:233:5 | MyPair | | main.rs:421:25:421:25 | a | P1 | main.rs:235:5:236:14 | S1 | | main.rs:421:25:421:25 | a | P2 | main.rs:235:5:236:14 | S1 | -| main.rs:422:18:422:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:422:18:422:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:422:18:422:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:422:18:422:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:422:18:422:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:422:18:422:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:422:18:422:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:422:18:422:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:422:18:422:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:422:18:422:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:422:26:422:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:423:13:423:13 | y | | main.rs:235:5:236:14 | S1 | | main.rs:423:17:423:26 | get_snd(...) | | main.rs:235:5:236:14 | S1 | | main.rs:423:25:423:25 | a | | main.rs:229:5:233:5 | MyPair | | main.rs:423:25:423:25 | a | P1 | main.rs:235:5:236:14 | S1 | | main.rs:423:25:423:25 | a | P2 | main.rs:235:5:236:14 | S1 | -| main.rs:424:18:424:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:424:18:424:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:424:18:424:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:424:18:424:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:424:18:424:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:424:18:424:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:424:18:424:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:424:18:424:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:424:18:424:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:424:18:424:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:424:26:424:26 | y | | main.rs:235:5:236:14 | S1 | | main.rs:427:13:427:13 | b | | main.rs:229:5:233:5 | MyPair | | main.rs:427:13:427:13 | b | P1 | main.rs:237:5:238:14 | S2 | @@ -1863,24 +1758,20 @@ inferType | main.rs:428:25:428:25 | b | | main.rs:229:5:233:5 | MyPair | | main.rs:428:25:428:25 | b | P1 | main.rs:237:5:238:14 | S2 | | main.rs:428:25:428:25 | b | P2 | main.rs:235:5:236:14 | S1 | -| main.rs:429:18:429:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:429:18:429:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:429:18:429:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:429:18:429:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:429:18:429:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:429:18:429:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:429:18:429:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:429:18:429:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:429:18:429:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:429:18:429:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:429:26:429:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:430:13:430:13 | y | | main.rs:237:5:238:14 | S2 | | main.rs:430:17:430:26 | get_snd(...) | | main.rs:237:5:238:14 | S2 | | main.rs:430:25:430:25 | b | | main.rs:229:5:233:5 | MyPair | | main.rs:430:25:430:25 | b | P1 | main.rs:237:5:238:14 | S2 | | main.rs:430:25:430:25 | b | P2 | main.rs:235:5:236:14 | S1 | -| main.rs:431:18:431:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:431:18:431:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:431:18:431:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:431:18:431:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:431:18:431:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:431:18:431:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:431:18:431:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:431:18:431:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:431:18:431:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:431:18:431:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:431:26:431:26 | y | | main.rs:237:5:238:14 | S2 | | main.rs:433:13:433:13 | c | | main.rs:229:5:233:5 | MyPair | | main.rs:433:13:433:13 | c | P1 | main.rs:239:5:240:14 | S3 | @@ -1960,74 +1851,66 @@ inferType | main.rs:512:34:512:35 | s1 | | main.rs:446:5:447:14 | S1 | | main.rs:512:48:514:9 | { ... } | | main.rs:446:5:447:14 | S1 | | main.rs:513:13:513:14 | S1 | | main.rs:446:5:447:14 | S1 | -| main.rs:521:14:521:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:521:14:521:18 | SelfParam | &T | main.rs:520:5:522:5 | Self [trait OverlappingTrait2] | -| main.rs:521:21:521:21 | x | | file://:0:0:0:0 | & | -| main.rs:521:21:521:21 | x | &T | main.rs:520:29:520:29 | T | -| main.rs:526:14:526:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:526:14:526:18 | SelfParam | &T | main.rs:517:5:518:22 | S3 | -| main.rs:526:14:526:18 | SelfParam | &T.T3 | main.rs:524:10:524:10 | T | -| main.rs:526:21:526:21 | x | | file://:0:0:0:0 | & | -| main.rs:526:21:526:21 | x | &T | main.rs:524:10:524:10 | T | -| main.rs:526:37:528:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:526:37:528:9 | { ... } | &T | main.rs:517:5:518:22 | S3 | -| main.rs:526:37:528:9 | { ... } | &T.T3 | main.rs:524:10:524:10 | T | -| main.rs:527:13:527:16 | self | | file://:0:0:0:0 | & | -| main.rs:527:13:527:16 | self | &T | main.rs:517:5:518:22 | S3 | -| main.rs:527:13:527:16 | self | &T.T3 | main.rs:524:10:524:10 | T | -| main.rs:533:14:533:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:533:14:533:18 | SelfParam | &T | main.rs:517:5:518:22 | S3 | -| main.rs:533:14:533:18 | SelfParam | &T.T3 | main.rs:531:10:531:10 | T | +| main.rs:521:14:521:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:521:14:521:18 | SelfParam | TRef | main.rs:520:5:522:5 | Self [trait OverlappingTrait2] | +| main.rs:521:21:521:21 | x | | {EXTERNAL LOCATION} | & | +| main.rs:521:21:521:21 | x | TRef | main.rs:520:29:520:29 | T | +| main.rs:526:14:526:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:526:14:526:18 | SelfParam | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:526:14:526:18 | SelfParam | TRef.T3 | main.rs:524:10:524:10 | T | +| main.rs:526:21:526:21 | x | | {EXTERNAL LOCATION} | & | +| main.rs:526:21:526:21 | x | TRef | main.rs:524:10:524:10 | T | +| main.rs:526:37:528:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:526:37:528:9 | { ... } | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:526:37:528:9 | { ... } | TRef.T3 | main.rs:524:10:524:10 | T | +| main.rs:527:13:527:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:527:13:527:16 | self | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:527:13:527:16 | self | TRef.T3 | main.rs:524:10:524:10 | T | +| main.rs:533:14:533:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:533:14:533:18 | SelfParam | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:533:14:533:18 | SelfParam | TRef.T3 | main.rs:531:10:531:10 | T | | main.rs:533:21:533:21 | x | | main.rs:531:10:531:10 | T | -| main.rs:533:36:535:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:533:36:535:9 | { ... } | &T | main.rs:517:5:518:22 | S3 | -| main.rs:533:36:535:9 | { ... } | &T.T3 | main.rs:531:10:531:10 | T | -| main.rs:534:13:534:16 | self | | file://:0:0:0:0 | & | -| main.rs:534:13:534:16 | self | &T | main.rs:517:5:518:22 | S3 | -| main.rs:534:13:534:16 | self | &T.T3 | main.rs:531:10:531:10 | T | -| main.rs:540:14:540:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:540:14:540:18 | SelfParam | &T | main.rs:538:5:541:5 | Self [trait MyTrait1] | -| main.rs:540:21:540:22 | { ... } | | file://:0:0:0:0 | () | -| main.rs:550:14:550:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:550:14:550:18 | SelfParam | &T | main.rs:545:5:546:14 | S4 | -| main.rs:550:21:550:22 | { ... } | | file://:0:0:0:0 | () | -| main.rs:560:14:560:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:560:14:560:18 | SelfParam | &T | main.rs:555:5:556:22 | S5 | -| main.rs:560:14:560:18 | SelfParam | &T.T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:560:21:560:22 | { ... } | | file://:0:0:0:0 | () | -| main.rs:569:16:595:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:533:36:535:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:533:36:535:9 | { ... } | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:533:36:535:9 | { ... } | TRef.T3 | main.rs:531:10:531:10 | T | +| main.rs:534:13:534:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:534:13:534:16 | self | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:534:13:534:16 | self | TRef.T3 | main.rs:531:10:531:10 | T | +| main.rs:540:14:540:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:540:14:540:18 | SelfParam | TRef | main.rs:538:5:541:5 | Self [trait MyTrait1] | +| main.rs:540:21:540:22 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:550:14:550:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:550:14:550:18 | SelfParam | TRef | main.rs:545:5:546:14 | S4 | +| main.rs:550:21:550:22 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:560:14:560:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:560:14:560:18 | SelfParam | TRef | main.rs:555:5:556:22 | S5 | +| main.rs:560:14:560:18 | SelfParam | TRef.T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:560:21:560:22 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:569:16:595:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:570:13:570:13 | x | | main.rs:446:5:447:14 | S1 | | main.rs:570:17:570:18 | S1 | | main.rs:446:5:447:14 | S1 | -| main.rs:571:18:571:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:571:18:571:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:571:18:571:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:571:18:571:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:571:18:571:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:571:18:571:42 | { ... } | | file://:0:0:0:0 | () | +| main.rs:571:18:571:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:571:18:571:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:571:18:571:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:571:18:571:42 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:571:26:571:26 | x | | main.rs:446:5:447:14 | S1 | | main.rs:571:26:571:42 | x.common_method() | | main.rs:446:5:447:14 | S1 | -| main.rs:572:18:572:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:572:18:572:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:572:18:572:45 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:572:18:572:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:572:18:572:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:572:18:572:45 | { ... } | | file://:0:0:0:0 | () | +| main.rs:572:18:572:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:572:18:572:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:572:18:572:45 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:572:18:572:45 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:572:26:572:45 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:572:44:572:44 | x | | main.rs:446:5:447:14 | S1 | -| main.rs:573:18:573:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:573:18:573:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:573:18:573:44 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:573:18:573:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:573:18:573:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:573:18:573:44 | { ... } | | file://:0:0:0:0 | () | +| main.rs:573:18:573:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:573:18:573:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:573:18:573:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:573:18:573:44 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:573:26:573:26 | x | | main.rs:446:5:447:14 | S1 | | main.rs:573:26:573:44 | x.common_method_2() | | main.rs:446:5:447:14 | S1 | -| main.rs:574:18:574:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:574:18:574:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:574:18:574:47 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:574:18:574:47 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:574:18:574:47 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:574:18:574:47 | { ... } | | file://:0:0:0:0 | () | +| main.rs:574:18:574:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:574:18:574:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:574:18:574:47 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:574:18:574:47 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:574:26:574:47 | ...::common_method_2(...) | | main.rs:446:5:447:14 | S1 | | main.rs:574:46:574:46 | x | | main.rs:446:5:447:14 | S1 | | main.rs:576:13:576:13 | y | | main.rs:479:5:479:22 | S2 | @@ -2035,21 +1918,17 @@ inferType | main.rs:576:17:576:22 | S2(...) | | main.rs:479:5:479:22 | S2 | | main.rs:576:17:576:22 | S2(...) | T2 | main.rs:446:5:447:14 | S1 | | main.rs:576:20:576:21 | S1 | | main.rs:446:5:447:14 | S1 | -| main.rs:577:18:577:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:577:18:577:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:577:18:577:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:577:18:577:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:577:18:577:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:577:18:577:42 | { ... } | | file://:0:0:0:0 | () | +| main.rs:577:18:577:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:577:18:577:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:577:18:577:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:577:18:577:42 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:577:26:577:26 | y | | main.rs:479:5:479:22 | S2 | | main.rs:577:26:577:26 | y | T2 | main.rs:446:5:447:14 | S1 | | main.rs:577:26:577:42 | y.common_method() | | main.rs:446:5:447:14 | S1 | -| main.rs:578:18:578:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:578:18:578:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:578:18:578:56 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:578:18:578:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:578:18:578:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:578:18:578:56 | { ... } | | file://:0:0:0:0 | () | +| main.rs:578:18:578:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:578:18:578:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:578:18:578:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:578:18:578:56 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:578:26:578:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:578:50:578:55 | S2(...) | | main.rs:479:5:479:22 | S2 | | main.rs:578:50:578:55 | S2(...) | T2 | main.rs:446:5:447:14 | S1 | @@ -2059,31 +1938,25 @@ inferType | main.rs:580:17:580:21 | S2(...) | | main.rs:479:5:479:22 | S2 | | main.rs:580:17:580:21 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | | main.rs:580:20:580:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:581:18:581:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:581:18:581:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:581:18:581:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:581:18:581:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:581:18:581:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:581:18:581:42 | { ... } | | file://:0:0:0:0 | () | +| main.rs:581:18:581:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:581:18:581:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:581:18:581:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:581:18:581:42 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:581:26:581:26 | z | | main.rs:479:5:479:22 | S2 | | main.rs:581:26:581:26 | z | T2 | {EXTERNAL LOCATION} | i32 | | main.rs:581:26:581:42 | z.common_method() | | main.rs:446:5:447:14 | S1 | -| main.rs:582:18:582:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:582:18:582:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:582:18:582:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:582:18:582:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:582:18:582:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:582:18:582:49 | { ... } | | file://:0:0:0:0 | () | +| main.rs:582:18:582:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:582:18:582:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:582:18:582:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:582:18:582:49 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:582:26:582:49 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:582:44:582:48 | S2(...) | | main.rs:479:5:479:22 | S2 | | main.rs:582:44:582:48 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | | main.rs:582:47:582:47 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:583:18:583:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:583:18:583:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:583:18:583:56 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:583:18:583:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:583:18:583:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:583:18:583:56 | { ... } | | file://:0:0:0:0 | () | +| main.rs:583:18:583:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:583:18:583:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:583:18:583:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:583:18:583:56 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:583:26:583:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:583:51:583:55 | S2(...) | | main.rs:479:5:479:22 | S2 | | main.rs:583:51:583:55 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | @@ -2093,128 +1966,114 @@ inferType | main.rs:585:17:585:22 | S3(...) | | main.rs:517:5:518:22 | S3 | | main.rs:585:17:585:22 | S3(...) | T3 | main.rs:446:5:447:14 | S1 | | main.rs:585:20:585:21 | S1 | | main.rs:446:5:447:14 | S1 | -| main.rs:586:18:586:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:586:18:586:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:586:18:586:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:586:18:586:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:586:18:586:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:586:18:586:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:586:18:586:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:586:18:586:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:586:18:586:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:586:18:586:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:586:26:586:26 | w | | main.rs:517:5:518:22 | S3 | | main.rs:586:26:586:26 | w | T3 | main.rs:446:5:447:14 | S1 | -| main.rs:586:26:586:31 | w.m(...) | | file://:0:0:0:0 | & | -| main.rs:586:26:586:31 | w.m(...) | &T | main.rs:517:5:518:22 | S3 | -| main.rs:586:26:586:31 | w.m(...) | &T.T3 | main.rs:446:5:447:14 | S1 | +| main.rs:586:26:586:31 | w.m(...) | | {EXTERNAL LOCATION} | & | +| main.rs:586:26:586:31 | w.m(...) | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:586:26:586:31 | w.m(...) | TRef.T3 | main.rs:446:5:447:14 | S1 | | main.rs:586:30:586:30 | x | | main.rs:446:5:447:14 | S1 | -| main.rs:587:18:587:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:587:18:587:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:587:18:587:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:587:18:587:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:587:18:587:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:587:18:587:37 | { ... } | | file://:0:0:0:0 | () | -| main.rs:587:26:587:37 | ...::m(...) | | file://:0:0:0:0 | & | -| main.rs:587:26:587:37 | ...::m(...) | &T | main.rs:517:5:518:22 | S3 | -| main.rs:587:26:587:37 | ...::m(...) | &T.T3 | main.rs:446:5:447:14 | S1 | -| main.rs:587:32:587:33 | &w | | file://:0:0:0:0 | & | -| main.rs:587:32:587:33 | &w | &T | main.rs:517:5:518:22 | S3 | -| main.rs:587:32:587:33 | &w | &T.T3 | main.rs:446:5:447:14 | S1 | +| main.rs:587:18:587:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:587:18:587:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:587:18:587:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:587:18:587:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:587:26:587:37 | ...::m(...) | | {EXTERNAL LOCATION} | & | +| main.rs:587:26:587:37 | ...::m(...) | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:587:26:587:37 | ...::m(...) | TRef.T3 | main.rs:446:5:447:14 | S1 | +| main.rs:587:32:587:33 | &w | | {EXTERNAL LOCATION} | & | +| main.rs:587:32:587:33 | &w | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:587:32:587:33 | &w | TRef.T3 | main.rs:446:5:447:14 | S1 | | main.rs:587:33:587:33 | w | | main.rs:517:5:518:22 | S3 | | main.rs:587:33:587:33 | w | T3 | main.rs:446:5:447:14 | S1 | | main.rs:587:36:587:36 | x | | main.rs:446:5:447:14 | S1 | | main.rs:589:9:589:10 | S4 | | main.rs:545:5:546:14 | S4 | -| main.rs:589:9:589:14 | S4.m() | | file://:0:0:0:0 | () | -| main.rs:590:9:590:18 | ...::m(...) | | file://:0:0:0:0 | () | -| main.rs:590:15:590:17 | &S4 | | file://:0:0:0:0 | & | -| main.rs:590:15:590:17 | &S4 | &T | main.rs:545:5:546:14 | S4 | +| main.rs:589:9:589:14 | S4.m() | | {EXTERNAL LOCATION} | () | +| main.rs:590:9:590:18 | ...::m(...) | | {EXTERNAL LOCATION} | () | +| main.rs:590:15:590:17 | &S4 | | {EXTERNAL LOCATION} | & | +| main.rs:590:15:590:17 | &S4 | TRef | main.rs:545:5:546:14 | S4 | | main.rs:590:16:590:17 | S4 | | main.rs:545:5:546:14 | S4 | | main.rs:591:9:591:16 | S5(...) | | main.rs:555:5:556:22 | S5 | | main.rs:591:9:591:16 | S5(...) | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:591:9:591:20 | ... .m() | | file://:0:0:0:0 | () | +| main.rs:591:9:591:20 | ... .m() | | {EXTERNAL LOCATION} | () | | main.rs:591:12:591:15 | 0i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:592:9:592:24 | ...::m(...) | | file://:0:0:0:0 | () | -| main.rs:592:15:592:23 | &... | | file://:0:0:0:0 | & | -| main.rs:592:15:592:23 | &... | &T | main.rs:555:5:556:22 | S5 | -| main.rs:592:15:592:23 | &... | &T.T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:592:9:592:24 | ...::m(...) | | {EXTERNAL LOCATION} | () | +| main.rs:592:15:592:23 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:592:15:592:23 | &... | TRef | main.rs:555:5:556:22 | S5 | +| main.rs:592:15:592:23 | &... | TRef.T5 | {EXTERNAL LOCATION} | i32 | | main.rs:592:16:592:23 | S5(...) | | main.rs:555:5:556:22 | S5 | | main.rs:592:16:592:23 | S5(...) | T5 | {EXTERNAL LOCATION} | i32 | | main.rs:592:19:592:22 | 0i32 | | {EXTERNAL LOCATION} | i32 | | main.rs:593:9:593:16 | S5(...) | | main.rs:555:5:556:22 | S5 | | main.rs:593:9:593:16 | S5(...) | T5 | {EXTERNAL LOCATION} | bool | -| main.rs:593:9:593:20 | ... .m() | | file://:0:0:0:0 | () | +| main.rs:593:9:593:20 | ... .m() | | {EXTERNAL LOCATION} | () | | main.rs:593:12:593:15 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:594:9:594:24 | ...::m(...) | | file://:0:0:0:0 | () | -| main.rs:594:15:594:23 | &... | | file://:0:0:0:0 | & | -| main.rs:594:15:594:23 | &... | &T | main.rs:555:5:556:22 | S5 | -| main.rs:594:15:594:23 | &... | &T.T5 | {EXTERNAL LOCATION} | bool | +| main.rs:594:9:594:24 | ...::m(...) | | {EXTERNAL LOCATION} | () | +| main.rs:594:15:594:23 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:594:15:594:23 | &... | TRef | main.rs:555:5:556:22 | S5 | +| main.rs:594:15:594:23 | &... | TRef.T5 | {EXTERNAL LOCATION} | bool | | main.rs:594:16:594:23 | S5(...) | | main.rs:555:5:556:22 | S5 | | main.rs:594:16:594:23 | S5(...) | T5 | {EXTERNAL LOCATION} | bool | | main.rs:594:19:594:22 | true | | {EXTERNAL LOCATION} | bool | | main.rs:611:19:611:22 | SelfParam | | main.rs:609:5:612:5 | Self [trait FirstTrait] | | main.rs:616:19:616:22 | SelfParam | | main.rs:614:5:617:5 | Self [trait SecondTrait] | | main.rs:619:64:619:64 | x | | main.rs:619:45:619:61 | T | -| main.rs:619:70:623:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:619:70:623:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:621:13:621:14 | s1 | | main.rs:619:35:619:42 | I | | main.rs:621:18:621:18 | x | | main.rs:619:45:619:61 | T | | main.rs:621:18:621:27 | x.method() | | main.rs:619:35:619:42 | I | -| main.rs:622:18:622:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:622:18:622:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:622:18:622:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:622:18:622:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:622:18:622:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:622:18:622:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:622:18:622:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:622:18:622:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:622:18:622:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:622:18:622:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:622:26:622:27 | s1 | | main.rs:619:35:619:42 | I | | main.rs:625:65:625:65 | x | | main.rs:625:46:625:62 | T | -| main.rs:625:71:629:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:625:71:629:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:627:13:627:14 | s2 | | main.rs:625:36:625:43 | I | | main.rs:627:18:627:18 | x | | main.rs:625:46:625:62 | T | | main.rs:627:18:627:27 | x.method() | | main.rs:625:36:625:43 | I | -| main.rs:628:18:628:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:628:18:628:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:628:18:628:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:628:18:628:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:628:18:628:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:628:18:628:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:628:18:628:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:628:18:628:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:628:18:628:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:628:18:628:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:628:26:628:27 | s2 | | main.rs:625:36:625:43 | I | | main.rs:631:49:631:49 | x | | main.rs:631:30:631:46 | T | -| main.rs:631:55:634:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:631:55:634:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:632:13:632:13 | s | | main.rs:601:5:602:14 | S1 | | main.rs:632:17:632:17 | x | | main.rs:631:30:631:46 | T | | main.rs:632:17:632:26 | x.method() | | main.rs:601:5:602:14 | S1 | -| main.rs:633:18:633:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:633:18:633:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:633:18:633:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:633:18:633:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:633:18:633:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:633:18:633:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:633:18:633:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:633:18:633:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:633:18:633:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:633:18:633:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:633:26:633:26 | s | | main.rs:601:5:602:14 | S1 | | main.rs:636:53:636:53 | x | | main.rs:636:34:636:50 | T | -| main.rs:636:59:639:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:636:59:639:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:637:13:637:13 | s | | main.rs:601:5:602:14 | S1 | | main.rs:637:17:637:17 | x | | main.rs:636:34:636:50 | T | | main.rs:637:17:637:26 | x.method() | | main.rs:601:5:602:14 | S1 | -| main.rs:638:18:638:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:638:18:638:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:638:18:638:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:638:18:638:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:638:18:638:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:638:18:638:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:638:18:638:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:638:18:638:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:638:18:638:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:638:18:638:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:638:26:638:26 | s | | main.rs:601:5:602:14 | S1 | | main.rs:641:43:641:43 | x | | main.rs:641:40:641:40 | T | -| main.rs:644:5:647:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:644:5:647:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:645:13:645:13 | s | | main.rs:601:5:602:14 | S1 | | main.rs:645:17:645:17 | x | | main.rs:641:40:641:40 | T | | main.rs:645:17:645:26 | x.method() | | main.rs:601:5:602:14 | S1 | -| main.rs:646:18:646:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:646:18:646:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:646:18:646:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:646:18:646:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:646:18:646:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:646:18:646:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:646:18:646:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:646:18:646:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:646:18:646:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:646:18:646:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:646:26:646:26 | s | | main.rs:601:5:602:14 | S1 | | main.rs:650:16:650:19 | SelfParam | | main.rs:649:5:653:5 | Self [trait Pair] | | main.rs:652:16:652:19 | SelfParam | | main.rs:649:5:653:5 | Self [trait Pair] | | main.rs:655:53:655:53 | x | | main.rs:655:50:655:50 | T | | main.rs:655:59:655:59 | y | | main.rs:655:50:655:50 | T | -| main.rs:659:5:662:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:659:5:662:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:660:13:660:13 | _ | | main.rs:601:5:602:14 | S1 | | main.rs:660:17:660:17 | x | | main.rs:655:50:655:50 | T | | main.rs:660:17:660:23 | x.fst() | | main.rs:601:5:602:14 | S1 | @@ -2223,79 +2082,71 @@ inferType | main.rs:661:17:661:26 | y.method() | | main.rs:601:5:602:14 | S1 | | main.rs:664:58:664:58 | x | | main.rs:664:41:664:55 | T | | main.rs:664:64:664:64 | y | | main.rs:664:41:664:55 | T | -| main.rs:664:70:669:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:664:70:669:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:666:13:666:14 | s1 | | main.rs:601:5:602:14 | S1 | | main.rs:666:18:666:18 | x | | main.rs:664:41:664:55 | T | | main.rs:666:18:666:24 | x.fst() | | main.rs:601:5:602:14 | S1 | | main.rs:667:13:667:14 | s2 | | main.rs:604:5:605:14 | S2 | | main.rs:667:18:667:18 | y | | main.rs:664:41:664:55 | T | | main.rs:667:18:667:24 | y.snd() | | main.rs:604:5:605:14 | S2 | -| main.rs:668:18:668:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:668:18:668:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:668:18:668:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:668:18:668:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:668:18:668:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:668:18:668:37 | { ... } | | file://:0:0:0:0 | () | +| main.rs:668:18:668:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:668:18:668:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:668:18:668:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:668:18:668:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:668:32:668:33 | s1 | | main.rs:601:5:602:14 | S1 | | main.rs:668:36:668:37 | s2 | | main.rs:604:5:605:14 | S2 | | main.rs:671:69:671:69 | x | | main.rs:671:52:671:66 | T | | main.rs:671:75:671:75 | y | | main.rs:671:52:671:66 | T | -| main.rs:671:81:676:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:671:81:676:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:673:13:673:14 | s1 | | main.rs:601:5:602:14 | S1 | | main.rs:673:18:673:18 | x | | main.rs:671:52:671:66 | T | | main.rs:673:18:673:24 | x.fst() | | main.rs:601:5:602:14 | S1 | | main.rs:674:13:674:14 | s2 | | main.rs:671:41:671:49 | T2 | | main.rs:674:18:674:18 | y | | main.rs:671:52:671:66 | T | | main.rs:674:18:674:24 | y.snd() | | main.rs:671:41:671:49 | T2 | -| main.rs:675:18:675:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:675:18:675:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:675:18:675:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:675:18:675:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:675:18:675:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:675:18:675:37 | { ... } | | file://:0:0:0:0 | () | +| main.rs:675:18:675:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:675:18:675:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:675:18:675:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:675:18:675:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:675:32:675:33 | s1 | | main.rs:601:5:602:14 | S1 | | main.rs:675:36:675:37 | s2 | | main.rs:671:41:671:49 | T2 | | main.rs:678:50:678:50 | x | | main.rs:678:41:678:47 | T | | main.rs:678:56:678:56 | y | | main.rs:678:41:678:47 | T | -| main.rs:678:62:683:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:678:62:683:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:680:13:680:14 | s1 | | {EXTERNAL LOCATION} | bool | | main.rs:680:18:680:18 | x | | main.rs:678:41:678:47 | T | | main.rs:680:18:680:24 | x.fst() | | {EXTERNAL LOCATION} | bool | | main.rs:681:13:681:14 | s2 | | {EXTERNAL LOCATION} | i64 | | main.rs:681:18:681:18 | y | | main.rs:678:41:678:47 | T | | main.rs:681:18:681:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | -| main.rs:682:18:682:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:682:18:682:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:682:18:682:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:682:18:682:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:682:18:682:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:682:18:682:37 | { ... } | | file://:0:0:0:0 | () | +| main.rs:682:18:682:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:682:18:682:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:682:18:682:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:682:18:682:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:682:32:682:33 | s1 | | {EXTERNAL LOCATION} | bool | | main.rs:682:36:682:37 | s2 | | {EXTERNAL LOCATION} | i64 | | main.rs:685:54:685:54 | x | | main.rs:685:41:685:51 | T | | main.rs:685:60:685:60 | y | | main.rs:685:41:685:51 | T | -| main.rs:685:66:690:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:685:66:690:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:687:13:687:14 | s1 | | {EXTERNAL LOCATION} | u8 | | main.rs:687:18:687:18 | x | | main.rs:685:41:685:51 | T | | main.rs:687:18:687:24 | x.fst() | | {EXTERNAL LOCATION} | u8 | | main.rs:688:13:688:14 | s2 | | {EXTERNAL LOCATION} | i64 | | main.rs:688:18:688:18 | y | | main.rs:685:41:685:51 | T | | main.rs:688:18:688:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | -| main.rs:689:18:689:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:689:18:689:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:689:18:689:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:689:18:689:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:689:18:689:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:689:18:689:37 | { ... } | | file://:0:0:0:0 | () | +| main.rs:689:18:689:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:689:18:689:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:689:18:689:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:689:18:689:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:689:32:689:33 | s1 | | {EXTERNAL LOCATION} | u8 | | main.rs:689:36:689:37 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:697:18:697:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:697:18:697:22 | SelfParam | &T | main.rs:694:5:698:5 | Self [trait TraitWithSelfTp] | -| main.rs:700:40:700:44 | thing | | file://:0:0:0:0 | & | -| main.rs:700:40:700:44 | thing | &T | main.rs:700:17:700:37 | T | +| main.rs:697:18:697:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:697:18:697:22 | SelfParam | TRef | main.rs:694:5:698:5 | Self [trait TraitWithSelfTp] | +| main.rs:700:40:700:44 | thing | | {EXTERNAL LOCATION} | & | +| main.rs:700:40:700:44 | thing | TRef | main.rs:700:17:700:37 | T | | main.rs:700:56:702:5 | { ... } | | main.rs:700:14:700:14 | A | -| main.rs:701:9:701:13 | thing | | file://:0:0:0:0 | & | -| main.rs:701:9:701:13 | thing | &T | main.rs:700:17:700:37 | T | +| main.rs:701:9:701:13 | thing | | {EXTERNAL LOCATION} | & | +| main.rs:701:9:701:13 | thing | TRef | main.rs:700:17:700:37 | T | | main.rs:701:9:701:21 | thing.get_a() | | main.rs:700:14:700:14 | A | | main.rs:705:44:705:48 | thing | | main.rs:705:24:705:41 | S | | main.rs:705:61:708:5 | { ... } | | {EXTERNAL LOCATION} | i64 | @@ -2306,26 +2157,26 @@ inferType | main.rs:706:19:706:31 | thing.get_a() | T | main.rs:705:24:705:41 | S | | main.rs:707:9:707:9 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:707:9:707:9 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:713:55:713:59 | thing | | file://:0:0:0:0 | & | -| main.rs:713:55:713:59 | thing | &T | main.rs:713:25:713:52 | S | -| main.rs:713:66:716:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:713:55:713:59 | thing | | {EXTERNAL LOCATION} | & | +| main.rs:713:55:713:59 | thing | TRef | main.rs:713:25:713:52 | S | +| main.rs:713:66:716:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:715:13:715:15 | _ms | | {EXTERNAL LOCATION} | Option | | main.rs:715:13:715:15 | _ms | T | main.rs:713:25:713:52 | S | | main.rs:715:19:715:30 | get_a(...) | | {EXTERNAL LOCATION} | Option | | main.rs:715:19:715:30 | get_a(...) | T | main.rs:713:25:713:52 | S | -| main.rs:715:25:715:29 | thing | | file://:0:0:0:0 | & | -| main.rs:715:25:715:29 | thing | &T | main.rs:713:25:713:52 | S | -| main.rs:724:18:724:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:724:18:724:22 | SelfParam | &T | main.rs:718:5:720:5 | MyStruct | +| main.rs:715:25:715:29 | thing | | {EXTERNAL LOCATION} | & | +| main.rs:715:25:715:29 | thing | TRef | main.rs:713:25:713:52 | S | +| main.rs:724:18:724:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:724:18:724:22 | SelfParam | TRef | main.rs:718:5:720:5 | MyStruct | | main.rs:724:41:726:9 | { ... } | | {EXTERNAL LOCATION} | Option | | main.rs:724:41:726:9 | { ... } | T | main.rs:718:5:720:5 | MyStruct | | main.rs:725:13:725:48 | Some(...) | | {EXTERNAL LOCATION} | Option | | main.rs:725:13:725:48 | Some(...) | T | main.rs:718:5:720:5 | MyStruct | | main.rs:725:18:725:47 | MyStruct {...} | | main.rs:718:5:720:5 | MyStruct | -| main.rs:725:36:725:39 | self | | file://:0:0:0:0 | & | -| main.rs:725:36:725:39 | self | &T | main.rs:718:5:720:5 | MyStruct | +| main.rs:725:36:725:39 | self | | {EXTERNAL LOCATION} | & | +| main.rs:725:36:725:39 | self | TRef | main.rs:718:5:720:5 | MyStruct | | main.rs:725:36:725:45 | self.value | | {EXTERNAL LOCATION} | i32 | -| main.rs:731:19:734:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:731:19:734:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:732:13:732:13 | s | | main.rs:718:5:720:5 | MyStruct | | main.rs:732:17:732:37 | MyStruct {...} | | main.rs:718:5:720:5 | MyStruct | | main.rs:732:35:732:35 | 0 | | {EXTERNAL LOCATION} | i32 | @@ -2333,8 +2184,8 @@ inferType | main.rs:733:13:733:15 | _ms | T | main.rs:718:5:720:5 | MyStruct | | main.rs:733:19:733:27 | get_a(...) | | {EXTERNAL LOCATION} | Option | | main.rs:733:19:733:27 | get_a(...) | T | main.rs:718:5:720:5 | MyStruct | -| main.rs:733:25:733:26 | &s | | file://:0:0:0:0 | & | -| main.rs:733:25:733:26 | &s | &T | main.rs:718:5:720:5 | MyStruct | +| main.rs:733:25:733:26 | &s | | {EXTERNAL LOCATION} | & | +| main.rs:733:25:733:26 | &s | TRef | main.rs:718:5:720:5 | MyStruct | | main.rs:733:26:733:26 | s | | main.rs:718:5:720:5 | MyStruct | | main.rs:749:15:749:18 | SelfParam | | main.rs:748:5:759:5 | Self [trait MyTrait] | | main.rs:751:15:751:18 | SelfParam | | main.rs:748:5:759:5 | Self [trait MyTrait] | @@ -2342,4342 +2193,4515 @@ inferType | main.rs:755:13:755:16 | self | | main.rs:748:5:759:5 | Self [trait MyTrait] | | main.rs:755:13:755:21 | self.m1() | | main.rs:748:19:748:19 | A | | main.rs:758:18:758:18 | x | | main.rs:748:5:759:5 | Self [trait MyTrait] | -| main.rs:763:50:763:50 | x | | main.rs:763:26:763:47 | T2 | -| main.rs:763:63:766:5 | { ... } | | main.rs:763:22:763:23 | T1 | -| main.rs:764:9:764:9 | x | | main.rs:763:26:763:47 | T2 | -| main.rs:764:9:764:14 | x.m1() | | main.rs:763:22:763:23 | T1 | -| main.rs:765:9:765:9 | x | | main.rs:763:26:763:47 | T2 | -| main.rs:765:9:765:14 | x.m1() | | main.rs:763:22:763:23 | T1 | -| main.rs:767:52:767:52 | x | | main.rs:767:28:767:49 | T2 | -| main.rs:767:65:771:5 | { ... } | | main.rs:767:24:767:25 | T1 | -| main.rs:768:13:768:13 | y | | main.rs:767:24:767:25 | T1 | -| main.rs:768:17:768:25 | ...::m1(...) | | main.rs:767:24:767:25 | T1 | -| main.rs:768:24:768:24 | x | | main.rs:767:28:767:49 | T2 | -| main.rs:769:9:769:9 | y | | main.rs:767:24:767:25 | T1 | -| main.rs:770:9:770:17 | ...::m1(...) | | main.rs:767:24:767:25 | T1 | -| main.rs:770:16:770:16 | x | | main.rs:767:28:767:49 | T2 | -| main.rs:772:52:772:52 | x | | main.rs:772:28:772:49 | T2 | -| main.rs:772:65:776:5 | { ... } | | main.rs:772:24:772:25 | T1 | -| main.rs:773:13:773:13 | y | | main.rs:772:24:772:25 | T1 | -| main.rs:773:17:773:30 | ...::m1(...) | | main.rs:772:24:772:25 | T1 | -| main.rs:773:29:773:29 | x | | main.rs:772:28:772:49 | T2 | -| main.rs:774:9:774:9 | y | | main.rs:772:24:772:25 | T1 | -| main.rs:775:9:775:22 | ...::m1(...) | | main.rs:772:24:772:25 | T1 | -| main.rs:775:21:775:21 | x | | main.rs:772:28:772:49 | T2 | -| main.rs:777:55:777:55 | x | | main.rs:777:31:777:52 | T2 | -| main.rs:777:68:781:5 | { ... } | | main.rs:777:27:777:28 | T1 | -| main.rs:778:13:778:13 | y | | main.rs:777:27:777:28 | T1 | -| main.rs:778:17:778:28 | ...::assoc(...) | | main.rs:777:27:777:28 | T1 | -| main.rs:778:27:778:27 | x | | main.rs:777:31:777:52 | T2 | -| main.rs:779:9:779:9 | y | | main.rs:777:27:777:28 | T1 | -| main.rs:780:9:780:20 | ...::assoc(...) | | main.rs:777:27:777:28 | T1 | -| main.rs:780:19:780:19 | x | | main.rs:777:31:777:52 | T2 | -| main.rs:782:55:782:55 | x | | main.rs:782:31:782:52 | T2 | -| main.rs:782:68:786:5 | { ... } | | main.rs:782:27:782:28 | T1 | -| main.rs:783:13:783:13 | y | | main.rs:782:27:782:28 | T1 | -| main.rs:783:17:783:33 | ...::assoc(...) | | main.rs:782:27:782:28 | T1 | -| main.rs:783:32:783:32 | x | | main.rs:782:31:782:52 | T2 | -| main.rs:784:9:784:9 | y | | main.rs:782:27:782:28 | T1 | -| main.rs:785:9:785:25 | ...::assoc(...) | | main.rs:782:27:782:28 | T1 | -| main.rs:785:24:785:24 | x | | main.rs:782:31:782:52 | T2 | -| main.rs:790:49:790:49 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:790:49:790:49 | x | T | main.rs:790:32:790:46 | T2 | -| main.rs:790:71:792:5 | { ... } | | main.rs:790:28:790:29 | T1 | -| main.rs:791:9:791:9 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:791:9:791:9 | x | T | main.rs:790:32:790:46 | T2 | -| main.rs:791:9:791:11 | x.a | | main.rs:790:32:790:46 | T2 | -| main.rs:791:9:791:16 | ... .m1() | | main.rs:790:28:790:29 | T1 | -| main.rs:793:51:793:51 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:793:51:793:51 | x | T | main.rs:793:34:793:48 | T2 | -| main.rs:793:73:795:5 | { ... } | | main.rs:793:30:793:31 | T1 | -| main.rs:794:9:794:19 | ...::m1(...) | | main.rs:793:30:793:31 | T1 | -| main.rs:794:16:794:16 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:794:16:794:16 | x | T | main.rs:793:34:793:48 | T2 | -| main.rs:794:16:794:18 | x.a | | main.rs:793:34:793:48 | T2 | -| main.rs:796:51:796:51 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:796:51:796:51 | x | T | main.rs:796:34:796:48 | T2 | -| main.rs:796:73:798:5 | { ... } | | main.rs:796:30:796:31 | T1 | -| main.rs:797:9:797:24 | ...::m1(...) | | main.rs:796:30:796:31 | T1 | -| main.rs:797:21:797:21 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:797:21:797:21 | x | T | main.rs:796:34:796:48 | T2 | -| main.rs:797:21:797:23 | x.a | | main.rs:796:34:796:48 | T2 | -| main.rs:801:15:801:18 | SelfParam | | main.rs:738:5:741:5 | MyThing | -| main.rs:801:15:801:18 | SelfParam | T | main.rs:800:10:800:10 | T | -| main.rs:801:26:803:9 | { ... } | | main.rs:800:10:800:10 | T | -| main.rs:802:13:802:16 | self | | main.rs:738:5:741:5 | MyThing | -| main.rs:802:13:802:16 | self | T | main.rs:800:10:800:10 | T | -| main.rs:802:13:802:18 | self.a | | main.rs:800:10:800:10 | T | -| main.rs:805:18:805:18 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:805:18:805:18 | x | T | main.rs:800:10:800:10 | T | -| main.rs:805:32:807:9 | { ... } | | main.rs:800:10:800:10 | T | -| main.rs:806:13:806:13 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:806:13:806:13 | x | T | main.rs:800:10:800:10 | T | -| main.rs:806:13:806:15 | x.a | | main.rs:800:10:800:10 | T | -| main.rs:810:16:866:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:811:13:811:13 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:811:13:811:13 | x | T | main.rs:743:5:744:14 | S1 | -| main.rs:811:17:811:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:811:17:811:33 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | -| main.rs:811:30:811:31 | S1 | | main.rs:743:5:744:14 | S1 | -| main.rs:812:13:812:13 | y | | main.rs:738:5:741:5 | MyThing | -| main.rs:812:13:812:13 | y | T | main.rs:745:5:746:14 | S2 | -| main.rs:812:17:812:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:812:17:812:33 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | -| main.rs:812:30:812:31 | S2 | | main.rs:745:5:746:14 | S2 | -| main.rs:814:18:814:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:814:18:814:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:814:18:814:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:814:18:814:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:814:18:814:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:814:18:814:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:814:26:814:26 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:814:26:814:26 | x | T | main.rs:743:5:744:14 | S1 | -| main.rs:814:26:814:31 | x.m1() | | main.rs:743:5:744:14 | S1 | -| main.rs:815:18:815:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:815:18:815:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:815:18:815:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:815:18:815:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:815:18:815:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:815:18:815:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:815:26:815:26 | y | | main.rs:738:5:741:5 | MyThing | -| main.rs:815:26:815:26 | y | T | main.rs:745:5:746:14 | S2 | -| main.rs:815:26:815:31 | y.m1() | | main.rs:745:5:746:14 | S2 | -| main.rs:817:13:817:13 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:817:13:817:13 | x | T | main.rs:743:5:744:14 | S1 | -| main.rs:817:17:817:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:817:17:817:33 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | -| main.rs:817:30:817:31 | S1 | | main.rs:743:5:744:14 | S1 | -| main.rs:818:13:818:13 | y | | main.rs:738:5:741:5 | MyThing | -| main.rs:818:13:818:13 | y | T | main.rs:745:5:746:14 | S2 | -| main.rs:818:17:818:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:818:17:818:33 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | -| main.rs:818:30:818:31 | S2 | | main.rs:745:5:746:14 | S2 | -| main.rs:820:18:820:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:820:18:820:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:820:18:820:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:820:18:820:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:820:18:820:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:820:18:820:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:820:26:820:26 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:820:26:820:26 | x | T | main.rs:743:5:744:14 | S1 | -| main.rs:820:26:820:31 | x.m2() | | main.rs:743:5:744:14 | S1 | -| main.rs:821:18:821:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:821:18:821:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:821:18:821:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:821:18:821:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:821:18:821:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:821:18:821:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:821:26:821:26 | y | | main.rs:738:5:741:5 | MyThing | -| main.rs:821:26:821:26 | y | T | main.rs:745:5:746:14 | S2 | -| main.rs:821:26:821:31 | y.m2() | | main.rs:745:5:746:14 | S2 | -| main.rs:823:13:823:14 | x2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:823:13:823:14 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:823:18:823:34 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:823:18:823:34 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | -| main.rs:823:31:823:32 | S1 | | main.rs:743:5:744:14 | S1 | -| main.rs:824:13:824:14 | y2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:824:13:824:14 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:824:18:824:34 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:824:18:824:34 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | -| main.rs:824:31:824:32 | S2 | | main.rs:745:5:746:14 | S2 | -| main.rs:826:13:826:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:826:17:826:33 | call_trait_m1(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:826:31:826:32 | x2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:826:31:826:32 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:827:18:827:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:827:18:827:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:827:18:827:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:827:18:827:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:827:18:827:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:827:18:827:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:827:26:827:26 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:828:13:828:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:828:17:828:35 | call_trait_m1_2(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:828:33:828:34 | x2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:828:33:828:34 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:829:18:829:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:829:18:829:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:829:18:829:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:829:18:829:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:829:18:829:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:829:18:829:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:829:26:829:26 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:830:13:830:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:830:17:830:35 | call_trait_m1_3(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:830:33:830:34 | x2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:830:33:830:34 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:831:18:831:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:831:18:831:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:831:18:831:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:831:18:831:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:831:18:831:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:831:18:831:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:831:26:831:26 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:832:13:832:13 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:832:17:832:33 | call_trait_m1(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:832:31:832:32 | y2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:832:31:832:32 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:833:18:833:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:833:18:833:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:833:18:833:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:833:18:833:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:833:18:833:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:833:18:833:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:833:26:833:26 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:834:13:834:13 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:834:17:834:35 | call_trait_m1_2(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:834:33:834:34 | y2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:834:33:834:34 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:835:18:835:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:835:18:835:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:835:18:835:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:835:18:835:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:835:18:835:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:835:18:835:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:835:26:835:26 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:836:13:836:13 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:836:17:836:35 | call_trait_m1_3(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:836:33:836:34 | y2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:836:33:836:34 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:837:18:837:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:837:18:837:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:837:18:837:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:837:18:837:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:837:18:837:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:837:18:837:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:837:26:837:26 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:838:13:838:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:838:17:838:38 | call_trait_assoc_1(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:838:36:838:37 | x2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:838:36:838:37 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:839:18:839:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:839:18:839:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:839:18:839:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:839:18:839:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:839:18:839:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:839:18:839:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:839:26:839:26 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:840:13:840:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:840:17:840:38 | call_trait_assoc_2(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:840:36:840:37 | x2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:840:36:840:37 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:841:18:841:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:841:18:841:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:841:18:841:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:841:18:841:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:841:18:841:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:841:18:841:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:841:26:841:26 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:842:13:842:13 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:842:17:842:38 | call_trait_assoc_1(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:842:36:842:37 | y2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:842:36:842:37 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:843:18:843:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:843:18:843:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:843:18:843:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:843:18:843:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:843:18:843:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:843:18:843:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:843:26:843:26 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:844:13:844:13 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:844:17:844:38 | call_trait_assoc_2(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:844:36:844:37 | y2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:844:36:844:37 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:845:18:845:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:845:18:845:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:845:18:845:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:845:18:845:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:845:18:845:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:845:18:845:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:845:26:845:26 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:847:13:847:14 | x3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:847:13:847:14 | x3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:847:13:847:14 | x3 | T.T | main.rs:743:5:744:14 | S1 | -| main.rs:847:18:849:9 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:847:18:849:9 | MyThing {...} | T | main.rs:738:5:741:5 | MyThing | -| main.rs:847:18:849:9 | MyThing {...} | T.T | main.rs:743:5:744:14 | S1 | -| main.rs:848:16:848:32 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:848:16:848:32 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | -| main.rs:848:29:848:30 | S1 | | main.rs:743:5:744:14 | S1 | -| main.rs:850:13:850:14 | y3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:850:13:850:14 | y3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:850:13:850:14 | y3 | T.T | main.rs:745:5:746:14 | S2 | -| main.rs:850:18:852:9 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:850:18:852:9 | MyThing {...} | T | main.rs:738:5:741:5 | MyThing | -| main.rs:850:18:852:9 | MyThing {...} | T.T | main.rs:745:5:746:14 | S2 | -| main.rs:851:16:851:32 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:851:16:851:32 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | -| main.rs:851:29:851:30 | S2 | | main.rs:745:5:746:14 | S2 | -| main.rs:854:13:854:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:854:17:854:39 | call_trait_thing_m1(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:854:37:854:38 | x3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:854:37:854:38 | x3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:854:37:854:38 | x3 | T.T | main.rs:743:5:744:14 | S1 | -| main.rs:855:18:855:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:855:18:855:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:855:18:855:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:855:18:855:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:855:18:855:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:855:18:855:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:855:26:855:26 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:856:13:856:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:856:17:856:41 | call_trait_thing_m1_2(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:856:39:856:40 | x3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:856:39:856:40 | x3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:856:39:856:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | -| main.rs:857:18:857:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:857:18:857:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:857:18:857:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:857:18:857:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:857:18:857:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:857:18:857:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:857:26:857:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:762:15:762:18 | SelfParam | | main.rs:745:5:746:14 | S2 | +| main.rs:762:26:764:9 | { ... } | | main.rs:761:10:761:19 | T | +| main.rs:763:13:763:30 | ...::default(...) | | main.rs:761:10:761:19 | T | +| main.rs:766:18:766:18 | x | | main.rs:745:5:746:14 | S2 | +| main.rs:766:32:768:9 | { ... } | | main.rs:761:10:761:19 | T | +| main.rs:767:13:767:30 | ...::default(...) | | main.rs:761:10:761:19 | T | +| main.rs:772:15:772:18 | SelfParam | | main.rs:743:5:744:14 | S1 | +| main.rs:772:28:774:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:773:13:773:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:776:18:776:18 | x | | main.rs:743:5:744:14 | S1 | +| main.rs:776:34:778:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:777:13:777:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:783:50:783:50 | x | | main.rs:783:26:783:47 | T2 | +| main.rs:783:63:786:5 | { ... } | | main.rs:783:22:783:23 | T1 | +| main.rs:784:9:784:9 | x | | main.rs:783:26:783:47 | T2 | +| main.rs:784:9:784:14 | x.m1() | | main.rs:783:22:783:23 | T1 | +| main.rs:785:9:785:9 | x | | main.rs:783:26:783:47 | T2 | +| main.rs:785:9:785:14 | x.m1() | | main.rs:783:22:783:23 | T1 | +| main.rs:787:52:787:52 | x | | main.rs:787:28:787:49 | T2 | +| main.rs:787:65:791:5 | { ... } | | main.rs:787:24:787:25 | T1 | +| main.rs:788:13:788:13 | y | | main.rs:787:24:787:25 | T1 | +| main.rs:788:17:788:25 | ...::m1(...) | | main.rs:787:24:787:25 | T1 | +| main.rs:788:24:788:24 | x | | main.rs:787:28:787:49 | T2 | +| main.rs:789:9:789:9 | y | | main.rs:787:24:787:25 | T1 | +| main.rs:790:9:790:17 | ...::m1(...) | | main.rs:787:24:787:25 | T1 | +| main.rs:790:16:790:16 | x | | main.rs:787:28:787:49 | T2 | +| main.rs:792:52:792:52 | x | | main.rs:792:28:792:49 | T2 | +| main.rs:792:65:796:5 | { ... } | | main.rs:792:24:792:25 | T1 | +| main.rs:793:13:793:13 | y | | main.rs:792:24:792:25 | T1 | +| main.rs:793:17:793:30 | ...::m1(...) | | main.rs:792:24:792:25 | T1 | +| main.rs:793:29:793:29 | x | | main.rs:792:28:792:49 | T2 | +| main.rs:794:9:794:9 | y | | main.rs:792:24:792:25 | T1 | +| main.rs:795:9:795:22 | ...::m1(...) | | main.rs:792:24:792:25 | T1 | +| main.rs:795:21:795:21 | x | | main.rs:792:28:792:49 | T2 | +| main.rs:797:55:797:55 | x | | main.rs:797:31:797:52 | T2 | +| main.rs:797:68:801:5 | { ... } | | main.rs:797:27:797:28 | T1 | +| main.rs:798:13:798:13 | y | | main.rs:797:27:797:28 | T1 | +| main.rs:798:17:798:28 | ...::assoc(...) | | main.rs:797:27:797:28 | T1 | +| main.rs:798:27:798:27 | x | | main.rs:797:31:797:52 | T2 | +| main.rs:799:9:799:9 | y | | main.rs:797:27:797:28 | T1 | +| main.rs:800:9:800:20 | ...::assoc(...) | | main.rs:797:27:797:28 | T1 | +| main.rs:800:19:800:19 | x | | main.rs:797:31:797:52 | T2 | +| main.rs:802:55:802:55 | x | | main.rs:802:31:802:52 | T2 | +| main.rs:802:68:806:5 | { ... } | | main.rs:802:27:802:28 | T1 | +| main.rs:803:13:803:13 | y | | main.rs:802:27:802:28 | T1 | +| main.rs:803:17:803:33 | ...::assoc(...) | | main.rs:802:27:802:28 | T1 | +| main.rs:803:32:803:32 | x | | main.rs:802:31:802:52 | T2 | +| main.rs:804:9:804:9 | y | | main.rs:802:27:802:28 | T1 | +| main.rs:805:9:805:25 | ...::assoc(...) | | main.rs:802:27:802:28 | T1 | +| main.rs:805:24:805:24 | x | | main.rs:802:31:802:52 | T2 | +| main.rs:810:49:810:49 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:810:49:810:49 | x | T | main.rs:810:32:810:46 | T2 | +| main.rs:810:71:812:5 | { ... } | | main.rs:810:28:810:29 | T1 | +| main.rs:811:9:811:9 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:811:9:811:9 | x | T | main.rs:810:32:810:46 | T2 | +| main.rs:811:9:811:11 | x.a | | main.rs:810:32:810:46 | T2 | +| main.rs:811:9:811:16 | ... .m1() | | main.rs:810:28:810:29 | T1 | +| main.rs:813:51:813:51 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:813:51:813:51 | x | T | main.rs:813:34:813:48 | T2 | +| main.rs:813:73:815:5 | { ... } | | main.rs:813:30:813:31 | T1 | +| main.rs:814:9:814:19 | ...::m1(...) | | main.rs:813:30:813:31 | T1 | +| main.rs:814:16:814:16 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:814:16:814:16 | x | T | main.rs:813:34:813:48 | T2 | +| main.rs:814:16:814:18 | x.a | | main.rs:813:34:813:48 | T2 | +| main.rs:816:51:816:51 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:816:51:816:51 | x | T | main.rs:816:34:816:48 | T2 | +| main.rs:816:73:818:5 | { ... } | | main.rs:816:30:816:31 | T1 | +| main.rs:817:9:817:24 | ...::m1(...) | | main.rs:816:30:816:31 | T1 | +| main.rs:817:21:817:21 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:817:21:817:21 | x | T | main.rs:816:34:816:48 | T2 | +| main.rs:817:21:817:23 | x.a | | main.rs:816:34:816:48 | T2 | +| main.rs:821:15:821:18 | SelfParam | | main.rs:738:5:741:5 | MyThing | +| main.rs:821:15:821:18 | SelfParam | T | main.rs:820:10:820:10 | T | +| main.rs:821:26:823:9 | { ... } | | main.rs:820:10:820:10 | T | +| main.rs:822:13:822:16 | self | | main.rs:738:5:741:5 | MyThing | +| main.rs:822:13:822:16 | self | T | main.rs:820:10:820:10 | T | +| main.rs:822:13:822:18 | self.a | | main.rs:820:10:820:10 | T | +| main.rs:825:18:825:18 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:825:18:825:18 | x | T | main.rs:820:10:820:10 | T | +| main.rs:825:32:827:9 | { ... } | | main.rs:820:10:820:10 | T | +| main.rs:826:13:826:13 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:826:13:826:13 | x | T | main.rs:820:10:820:10 | T | +| main.rs:826:13:826:15 | x.a | | main.rs:820:10:820:10 | T | +| main.rs:830:16:888:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:831:13:831:13 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:831:13:831:13 | x | T | main.rs:743:5:744:14 | S1 | +| main.rs:831:17:831:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:831:17:831:33 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | +| main.rs:831:30:831:31 | S1 | | main.rs:743:5:744:14 | S1 | +| main.rs:832:13:832:13 | y | | main.rs:738:5:741:5 | MyThing | +| main.rs:832:13:832:13 | y | T | main.rs:745:5:746:14 | S2 | +| main.rs:832:17:832:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:832:17:832:33 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | +| main.rs:832:30:832:31 | S2 | | main.rs:745:5:746:14 | S2 | +| main.rs:834:18:834:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:834:18:834:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:834:18:834:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:834:18:834:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:834:26:834:26 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:834:26:834:26 | x | T | main.rs:743:5:744:14 | S1 | +| main.rs:834:26:834:31 | x.m1() | | main.rs:743:5:744:14 | S1 | +| main.rs:835:18:835:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:835:18:835:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:835:18:835:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:835:18:835:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:835:26:835:26 | y | | main.rs:738:5:741:5 | MyThing | +| main.rs:835:26:835:26 | y | T | main.rs:745:5:746:14 | S2 | +| main.rs:835:26:835:31 | y.m1() | | main.rs:745:5:746:14 | S2 | +| main.rs:837:13:837:13 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:837:13:837:13 | x | T | main.rs:743:5:744:14 | S1 | +| main.rs:837:17:837:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:837:17:837:33 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | +| main.rs:837:30:837:31 | S1 | | main.rs:743:5:744:14 | S1 | +| main.rs:838:13:838:13 | y | | main.rs:738:5:741:5 | MyThing | +| main.rs:838:13:838:13 | y | T | main.rs:745:5:746:14 | S2 | +| main.rs:838:17:838:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:838:17:838:33 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | +| main.rs:838:30:838:31 | S2 | | main.rs:745:5:746:14 | S2 | +| main.rs:840:18:840:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:840:18:840:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:840:18:840:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:840:18:840:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:840:26:840:26 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:840:26:840:26 | x | T | main.rs:743:5:744:14 | S1 | +| main.rs:840:26:840:31 | x.m2() | | main.rs:743:5:744:14 | S1 | +| main.rs:841:18:841:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:841:18:841:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:841:18:841:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:841:18:841:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:841:26:841:26 | y | | main.rs:738:5:741:5 | MyThing | +| main.rs:841:26:841:26 | y | T | main.rs:745:5:746:14 | S2 | +| main.rs:841:26:841:31 | y.m2() | | main.rs:745:5:746:14 | S2 | +| main.rs:843:13:843:14 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:843:13:843:14 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:843:18:843:34 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:843:18:843:34 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | +| main.rs:843:31:843:32 | S1 | | main.rs:743:5:744:14 | S1 | +| main.rs:844:13:844:14 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:844:13:844:14 | y2 | T | main.rs:745:5:746:14 | S2 | +| main.rs:844:18:844:34 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:844:18:844:34 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | +| main.rs:844:31:844:32 | S2 | | main.rs:745:5:746:14 | S2 | +| main.rs:846:13:846:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:846:17:846:33 | call_trait_m1(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:846:31:846:32 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:846:31:846:32 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:847:18:847:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:847:18:847:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:847:18:847:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:847:18:847:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:847:26:847:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:848:13:848:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:848:17:848:35 | call_trait_m1_2(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:848:33:848:34 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:848:33:848:34 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:849:18:849:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:849:18:849:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:849:18:849:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:849:18:849:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:849:26:849:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:850:13:850:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:850:17:850:35 | call_trait_m1_3(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:850:33:850:34 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:850:33:850:34 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:851:18:851:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:851:18:851:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:851:18:851:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:851:18:851:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:851:26:851:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:852:13:852:13 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:852:17:852:33 | call_trait_m1(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:852:31:852:32 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:852:31:852:32 | y2 | T | main.rs:745:5:746:14 | S2 | +| main.rs:853:18:853:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:853:18:853:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:853:18:853:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:853:18:853:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:853:26:853:26 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:854:13:854:13 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:854:17:854:35 | call_trait_m1_2(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:854:33:854:34 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:854:33:854:34 | y2 | T | main.rs:745:5:746:14 | S2 | +| main.rs:855:18:855:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:855:18:855:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:855:18:855:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:855:18:855:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:855:26:855:26 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:856:13:856:13 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:856:17:856:35 | call_trait_m1_3(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:856:33:856:34 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:856:33:856:34 | y2 | T | main.rs:745:5:746:14 | S2 | +| main.rs:857:18:857:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:857:18:857:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:857:18:857:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:857:18:857:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:857:26:857:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:858:13:858:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:858:17:858:41 | call_trait_thing_m1_3(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:858:39:858:40 | x3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:858:39:858:40 | x3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:858:39:858:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | -| main.rs:859:18:859:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:859:18:859:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:859:18:859:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:859:18:859:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:859:18:859:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:859:18:859:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:858:17:858:38 | call_trait_assoc_1(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:858:36:858:37 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:858:36:858:37 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:859:18:859:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:859:18:859:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:859:18:859:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:859:18:859:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:859:26:859:26 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:860:13:860:13 | b | | main.rs:745:5:746:14 | S2 | -| main.rs:860:17:860:39 | call_trait_thing_m1(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:860:37:860:38 | y3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:860:37:860:38 | y3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:860:37:860:38 | y3 | T.T | main.rs:745:5:746:14 | S2 | -| main.rs:861:18:861:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:861:18:861:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:861:18:861:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:861:18:861:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:861:18:861:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:861:18:861:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:861:26:861:26 | b | | main.rs:745:5:746:14 | S2 | -| main.rs:862:13:862:13 | b | | main.rs:745:5:746:14 | S2 | -| main.rs:862:17:862:41 | call_trait_thing_m1_2(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:862:39:862:40 | y3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:862:39:862:40 | y3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:862:39:862:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | -| main.rs:863:18:863:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:863:18:863:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:863:18:863:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:863:18:863:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:863:18:863:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:863:18:863:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:863:26:863:26 | b | | main.rs:745:5:746:14 | S2 | -| main.rs:864:13:864:13 | b | | main.rs:745:5:746:14 | S2 | -| main.rs:864:17:864:41 | call_trait_thing_m1_3(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:864:39:864:40 | y3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:864:39:864:40 | y3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:864:39:864:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | -| main.rs:865:18:865:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:865:18:865:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:865:18:865:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:865:18:865:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:865:18:865:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:865:18:865:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:865:26:865:26 | b | | main.rs:745:5:746:14 | S2 | -| main.rs:876:19:876:22 | SelfParam | | main.rs:870:5:873:5 | Wrapper | -| main.rs:876:19:876:22 | SelfParam | A | main.rs:875:10:875:10 | A | -| main.rs:876:30:878:9 | { ... } | | main.rs:875:10:875:10 | A | -| main.rs:877:13:877:16 | self | | main.rs:870:5:873:5 | Wrapper | -| main.rs:877:13:877:16 | self | A | main.rs:875:10:875:10 | A | -| main.rs:877:13:877:22 | self.field | | main.rs:875:10:875:10 | A | -| main.rs:885:15:885:18 | SelfParam | | main.rs:881:5:895:5 | Self [trait MyTrait] | -| main.rs:887:15:887:18 | SelfParam | | main.rs:881:5:895:5 | Self [trait MyTrait] | -| main.rs:891:9:894:9 | { ... } | | main.rs:882:9:882:28 | AssociatedType | -| main.rs:892:13:892:16 | self | | main.rs:881:5:895:5 | Self [trait MyTrait] | -| main.rs:892:13:892:21 | self.m1() | | main.rs:882:9:882:28 | AssociatedType | -| main.rs:893:13:893:43 | ...::default(...) | | main.rs:882:9:882:28 | AssociatedType | -| main.rs:901:19:901:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:901:19:901:23 | SelfParam | &T | main.rs:897:5:907:5 | Self [trait MyTraitAssoc2] | -| main.rs:901:26:901:26 | a | | main.rs:901:16:901:16 | A | -| main.rs:903:22:903:26 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:903:22:903:26 | SelfParam | &T | main.rs:897:5:907:5 | Self [trait MyTraitAssoc2] | -| main.rs:903:29:903:29 | a | | main.rs:903:19:903:19 | A | -| main.rs:903:35:903:35 | b | | main.rs:903:19:903:19 | A | -| main.rs:903:75:906:9 | { ... } | | main.rs:898:9:898:52 | GenericAssociatedType | -| main.rs:904:13:904:16 | self | | file://:0:0:0:0 | & | -| main.rs:904:13:904:16 | self | &T | main.rs:897:5:907:5 | Self [trait MyTraitAssoc2] | -| main.rs:904:13:904:23 | self.put(...) | | main.rs:898:9:898:52 | GenericAssociatedType | -| main.rs:904:22:904:22 | a | | main.rs:903:19:903:19 | A | -| main.rs:905:13:905:16 | self | | file://:0:0:0:0 | & | -| main.rs:905:13:905:16 | self | &T | main.rs:897:5:907:5 | Self [trait MyTraitAssoc2] | -| main.rs:905:13:905:23 | self.put(...) | | main.rs:898:9:898:52 | GenericAssociatedType | -| main.rs:905:22:905:22 | b | | main.rs:903:19:903:19 | A | -| main.rs:914:21:914:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:914:21:914:25 | SelfParam | &T | main.rs:909:5:919:5 | Self [trait TraitMultipleAssoc] | -| main.rs:916:20:916:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:916:20:916:24 | SelfParam | &T | main.rs:909:5:919:5 | Self [trait TraitMultipleAssoc] | -| main.rs:918:20:918:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:918:20:918:24 | SelfParam | &T | main.rs:909:5:919:5 | Self [trait TraitMultipleAssoc] | -| main.rs:934:15:934:18 | SelfParam | | main.rs:921:5:922:13 | S | -| main.rs:934:45:936:9 | { ... } | | main.rs:927:5:928:14 | AT | -| main.rs:935:13:935:14 | AT | | main.rs:927:5:928:14 | AT | -| main.rs:944:19:944:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:944:19:944:23 | SelfParam | &T | main.rs:921:5:922:13 | S | -| main.rs:944:26:944:26 | a | | main.rs:944:16:944:16 | A | -| main.rs:944:46:946:9 | { ... } | | main.rs:870:5:873:5 | Wrapper | -| main.rs:944:46:946:9 | { ... } | A | main.rs:944:16:944:16 | A | -| main.rs:945:13:945:32 | Wrapper {...} | | main.rs:870:5:873:5 | Wrapper | -| main.rs:945:13:945:32 | Wrapper {...} | A | main.rs:944:16:944:16 | A | -| main.rs:945:30:945:30 | a | | main.rs:944:16:944:16 | A | -| main.rs:953:15:953:18 | SelfParam | | main.rs:924:5:925:14 | S2 | -| main.rs:953:45:955:9 | { ... } | | main.rs:870:5:873:5 | Wrapper | -| main.rs:953:45:955:9 | { ... } | A | main.rs:924:5:925:14 | S2 | -| main.rs:954:13:954:35 | Wrapper {...} | | main.rs:870:5:873:5 | Wrapper | -| main.rs:954:13:954:35 | Wrapper {...} | A | main.rs:924:5:925:14 | S2 | -| main.rs:954:30:954:33 | self | | main.rs:924:5:925:14 | S2 | -| main.rs:960:30:962:9 | { ... } | | main.rs:870:5:873:5 | Wrapper | -| main.rs:960:30:962:9 | { ... } | A | main.rs:924:5:925:14 | S2 | -| main.rs:961:13:961:33 | Wrapper {...} | | main.rs:870:5:873:5 | Wrapper | -| main.rs:961:13:961:33 | Wrapper {...} | A | main.rs:924:5:925:14 | S2 | -| main.rs:961:30:961:31 | S2 | | main.rs:924:5:925:14 | S2 | -| main.rs:967:22:967:26 | thing | | main.rs:967:10:967:19 | T | -| main.rs:968:9:968:13 | thing | | main.rs:967:10:967:19 | T | -| main.rs:975:21:975:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:975:21:975:25 | SelfParam | &T | main.rs:927:5:928:14 | AT | -| main.rs:975:34:977:9 | { ... } | | main.rs:927:5:928:14 | AT | -| main.rs:976:13:976:14 | AT | | main.rs:927:5:928:14 | AT | -| main.rs:979:20:979:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:979:20:979:24 | SelfParam | &T | main.rs:927:5:928:14 | AT | -| main.rs:979:43:981:9 | { ... } | | main.rs:921:5:922:13 | S | -| main.rs:980:13:980:13 | S | | main.rs:921:5:922:13 | S | -| main.rs:983:20:983:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:983:20:983:24 | SelfParam | &T | main.rs:927:5:928:14 | AT | -| main.rs:983:43:985:9 | { ... } | | main.rs:924:5:925:14 | S2 | -| main.rs:984:13:984:14 | S2 | | main.rs:924:5:925:14 | S2 | -| main.rs:988:16:1016:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:989:13:989:14 | x1 | | main.rs:921:5:922:13 | S | -| main.rs:989:18:989:18 | S | | main.rs:921:5:922:13 | S | -| main.rs:991:18:991:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:991:18:991:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:991:18:991:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:991:18:991:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:991:18:991:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:991:18:991:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:991:26:991:27 | x1 | | main.rs:921:5:922:13 | S | -| main.rs:991:26:991:32 | x1.m1() | | main.rs:927:5:928:14 | AT | -| main.rs:993:13:993:14 | x2 | | main.rs:921:5:922:13 | S | -| main.rs:993:18:993:18 | S | | main.rs:921:5:922:13 | S | -| main.rs:995:13:995:13 | y | | main.rs:927:5:928:14 | AT | -| main.rs:995:17:995:18 | x2 | | main.rs:921:5:922:13 | S | -| main.rs:995:17:995:23 | x2.m2() | | main.rs:927:5:928:14 | AT | -| main.rs:996:18:996:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:996:18:996:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:996:18:996:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:996:18:996:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:996:18:996:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:996:18:996:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:996:26:996:26 | y | | main.rs:927:5:928:14 | AT | -| main.rs:998:13:998:14 | x3 | | main.rs:921:5:922:13 | S | -| main.rs:998:18:998:18 | S | | main.rs:921:5:922:13 | S | -| main.rs:1000:18:1000:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1000:18:1000:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1000:18:1000:43 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1000:18:1000:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1000:18:1000:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1000:18:1000:43 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1000:26:1000:27 | x3 | | main.rs:921:5:922:13 | S | -| main.rs:1000:26:1000:34 | x3.put(...) | | main.rs:870:5:873:5 | Wrapper | -| main.rs:1000:26:1000:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | -| main.rs:1000:26:1000:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | -| main.rs:1000:33:1000:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1003:18:1003:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1003:18:1003:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1003:18:1003:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1003:18:1003:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1003:18:1003:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1003:18:1003:49 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1003:26:1003:27 | x3 | | main.rs:921:5:922:13 | S | -| main.rs:1003:26:1003:40 | x3.putTwo(...) | | main.rs:870:5:873:5 | Wrapper | -| main.rs:1003:26:1003:40 | x3.putTwo(...) | A | main.rs:941:36:941:50 | AssociatedParam | -| main.rs:1003:26:1003:49 | ... .unwrap() | | main.rs:941:36:941:50 | AssociatedParam | -| main.rs:1003:36:1003:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1003:39:1003:39 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1005:20:1005:20 | S | | main.rs:921:5:922:13 | S | -| main.rs:1006:18:1006:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1006:18:1006:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1006:18:1006:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1006:18:1006:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1006:18:1006:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1006:18:1006:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1008:13:1008:14 | x5 | | main.rs:924:5:925:14 | S2 | -| main.rs:1008:18:1008:19 | S2 | | main.rs:924:5:925:14 | S2 | -| main.rs:1009:18:1009:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1009:18:1009:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1009:18:1009:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1009:18:1009:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1009:18:1009:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1009:18:1009:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1009:26:1009:27 | x5 | | main.rs:924:5:925:14 | S2 | -| main.rs:1009:26:1009:32 | x5.m1() | | main.rs:870:5:873:5 | Wrapper | -| main.rs:1009:26:1009:32 | x5.m1() | A | main.rs:924:5:925:14 | S2 | -| main.rs:1010:13:1010:14 | x6 | | main.rs:924:5:925:14 | S2 | -| main.rs:1010:18:1010:19 | S2 | | main.rs:924:5:925:14 | S2 | -| main.rs:1011:18:1011:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1011:18:1011:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1011:18:1011:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1011:18:1011:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1011:18:1011:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1011:18:1011:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1011:26:1011:27 | x6 | | main.rs:924:5:925:14 | S2 | -| main.rs:1011:26:1011:32 | x6.m2() | | main.rs:870:5:873:5 | Wrapper | -| main.rs:1011:26:1011:32 | x6.m2() | A | main.rs:924:5:925:14 | S2 | -| main.rs:1013:13:1013:22 | assoc_zero | | main.rs:927:5:928:14 | AT | -| main.rs:1013:26:1013:27 | AT | | main.rs:927:5:928:14 | AT | -| main.rs:1013:26:1013:38 | AT.get_zero() | | main.rs:927:5:928:14 | AT | -| main.rs:1014:13:1014:21 | assoc_one | | main.rs:921:5:922:13 | S | -| main.rs:1014:25:1014:26 | AT | | main.rs:927:5:928:14 | AT | -| main.rs:1014:25:1014:36 | AT.get_one() | | main.rs:921:5:922:13 | S | -| main.rs:1015:13:1015:21 | assoc_two | | main.rs:924:5:925:14 | S2 | -| main.rs:1015:25:1015:26 | AT | | main.rs:927:5:928:14 | AT | -| main.rs:1015:25:1015:36 | AT.get_two() | | main.rs:924:5:925:14 | S2 | -| main.rs:1023:19:1023:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1023:19:1023:23 | SelfParam | &T | main.rs:1020:5:1024:5 | Self [trait Supertrait] | -| main.rs:1023:26:1023:32 | content | | main.rs:1021:9:1021:21 | Content | -| main.rs:1028:24:1028:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1028:24:1028:28 | SelfParam | &T | main.rs:1026:5:1029:5 | Self [trait Subtrait] | -| main.rs:1037:23:1037:27 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1037:23:1037:27 | SelfParam | &T | main.rs:1031:5:1041:5 | Self [trait Subtrait2] | -| main.rs:1037:30:1037:31 | c1 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1037:49:1037:50 | c2 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1037:68:1040:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1038:13:1038:16 | self | | file://:0:0:0:0 | & | -| main.rs:1038:13:1038:16 | self | &T | main.rs:1031:5:1041:5 | Self [trait Subtrait2] | -| main.rs:1038:13:1038:27 | self.insert(...) | | file://:0:0:0:0 | () | -| main.rs:1038:25:1038:26 | c1 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1039:13:1039:16 | self | | file://:0:0:0:0 | & | -| main.rs:1039:13:1039:16 | self | &T | main.rs:1031:5:1041:5 | Self [trait Subtrait2] | -| main.rs:1039:13:1039:27 | self.insert(...) | | file://:0:0:0:0 | () | -| main.rs:1039:25:1039:26 | c2 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1047:19:1047:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1047:19:1047:23 | SelfParam | &T | main.rs:1043:5:1043:24 | MyType | -| main.rs:1047:19:1047:23 | SelfParam | &T.T | main.rs:1045:10:1045:10 | T | -| main.rs:1047:26:1047:33 | _content | | main.rs:1045:10:1045:10 | T | -| main.rs:1047:51:1049:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1048:22:1048:42 | "Inserting content: \\n" | | file://:0:0:0:0 | & | -| main.rs:1048:22:1048:42 | "Inserting content: \\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1048:22:1048:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1048:22:1048:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1048:22:1048:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1048:22:1048:42 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1054:24:1054:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1054:24:1054:28 | SelfParam | &T | main.rs:1043:5:1043:24 | MyType | -| main.rs:1054:24:1054:28 | SelfParam | &T.T | main.rs:1052:10:1052:17 | T | -| main.rs:1054:48:1056:9 | { ... } | | main.rs:1052:10:1052:17 | T | -| main.rs:1055:13:1055:19 | (...) | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1055:13:1055:19 | (...) | T | main.rs:1052:10:1052:17 | T | -| main.rs:1055:13:1055:21 | ... .0 | | main.rs:1052:10:1052:17 | T | -| main.rs:1055:13:1055:29 | ... .clone() | | main.rs:1052:10:1052:17 | T | -| main.rs:1055:14:1055:18 | * ... | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1055:14:1055:18 | * ... | T | main.rs:1052:10:1052:17 | T | -| main.rs:1055:15:1055:18 | self | | file://:0:0:0:0 | & | -| main.rs:1055:15:1055:18 | self | &T | main.rs:1043:5:1043:24 | MyType | -| main.rs:1055:15:1055:18 | self | &T.T | main.rs:1052:10:1052:17 | T | -| main.rs:1059:33:1059:36 | item | | file://:0:0:0:0 | & | -| main.rs:1059:33:1059:36 | item | &T | main.rs:1059:20:1059:30 | T | -| main.rs:1059:57:1061:5 | { ... } | | main.rs:1021:9:1021:21 | Content | -| main.rs:1060:9:1060:12 | item | | file://:0:0:0:0 | & | -| main.rs:1060:9:1060:12 | item | &T | main.rs:1059:20:1059:30 | T | -| main.rs:1060:9:1060:26 | item.get_content() | | main.rs:1021:9:1021:21 | Content | -| main.rs:1063:35:1063:38 | item | | file://:0:0:0:0 | & | -| main.rs:1063:35:1063:38 | item | &T | main.rs:1063:21:1063:32 | T | -| main.rs:1063:45:1063:46 | c1 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1063:61:1063:62 | c2 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1063:77:1063:78 | c3 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1063:93:1066:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1064:9:1064:12 | item | | file://:0:0:0:0 | & | -| main.rs:1064:9:1064:12 | item | &T | main.rs:1063:21:1063:32 | T | -| main.rs:1064:9:1064:23 | item.insert(...) | | file://:0:0:0:0 | () | -| main.rs:1064:21:1064:22 | c1 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1065:9:1065:12 | item | | file://:0:0:0:0 | & | -| main.rs:1065:9:1065:12 | item | &T | main.rs:1063:21:1063:32 | T | -| main.rs:1065:9:1065:31 | item.insert_two(...) | | file://:0:0:0:0 | () | -| main.rs:1065:25:1065:26 | c2 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1065:29:1065:30 | c3 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1068:15:1074:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1069:13:1069:17 | item1 | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1069:13:1069:17 | item1 | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1069:21:1069:33 | MyType(...) | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1069:21:1069:33 | MyType(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1069:28:1069:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1070:25:1070:29 | item1 | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1070:25:1070:29 | item1 | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1072:13:1072:17 | item2 | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1072:13:1072:17 | item2 | T | {EXTERNAL LOCATION} | bool | -| main.rs:1072:21:1072:32 | MyType(...) | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1072:21:1072:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | -| main.rs:1072:28:1072:31 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1073:37:1073:42 | &item2 | | file://:0:0:0:0 | & | -| main.rs:1073:37:1073:42 | &item2 | &T | main.rs:1043:5:1043:24 | MyType | -| main.rs:1073:37:1073:42 | &item2 | &T.T | {EXTERNAL LOCATION} | bool | -| main.rs:1073:38:1073:42 | item2 | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1073:38:1073:42 | item2 | T | {EXTERNAL LOCATION} | bool | -| main.rs:1090:15:1090:18 | SelfParam | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1090:15:1090:18 | SelfParam | A | main.rs:1089:10:1089:10 | T | -| main.rs:1090:26:1095:9 | { ... } | | main.rs:1089:10:1089:10 | T | -| main.rs:1091:13:1094:13 | match self { ... } | | main.rs:1089:10:1089:10 | T | -| main.rs:1091:19:1091:22 | self | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1091:19:1091:22 | self | A | main.rs:1089:10:1089:10 | T | -| main.rs:1092:17:1092:29 | ...::C1(...) | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1092:17:1092:29 | ...::C1(...) | A | main.rs:1089:10:1089:10 | T | -| main.rs:1092:28:1092:28 | a | | main.rs:1089:10:1089:10 | T | -| main.rs:1092:34:1092:34 | a | | main.rs:1089:10:1089:10 | T | -| main.rs:1093:17:1093:32 | ...::C2 {...} | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1093:17:1093:32 | ...::C2 {...} | A | main.rs:1089:10:1089:10 | T | -| main.rs:1093:30:1093:30 | a | | main.rs:1089:10:1089:10 | T | -| main.rs:1093:37:1093:37 | a | | main.rs:1089:10:1089:10 | T | -| main.rs:1098:16:1104:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1099:13:1099:13 | x | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1099:13:1099:13 | x | A | main.rs:1084:5:1085:14 | S1 | -| main.rs:1099:17:1099:30 | ...::C1(...) | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1099:17:1099:30 | ...::C1(...) | A | main.rs:1084:5:1085:14 | S1 | -| main.rs:1099:28:1099:29 | S1 | | main.rs:1084:5:1085:14 | S1 | -| main.rs:1100:13:1100:13 | y | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1100:13:1100:13 | y | A | main.rs:1086:5:1087:14 | S2 | -| main.rs:1100:17:1100:36 | ...::C2 {...} | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1100:17:1100:36 | ...::C2 {...} | A | main.rs:1086:5:1087:14 | S2 | -| main.rs:1100:33:1100:34 | S2 | | main.rs:1086:5:1087:14 | S2 | -| main.rs:1102:18:1102:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1102:18:1102:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1102:18:1102:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1102:18:1102:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1102:18:1102:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1102:18:1102:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1102:26:1102:26 | x | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1102:26:1102:26 | x | A | main.rs:1084:5:1085:14 | S1 | -| main.rs:1102:26:1102:31 | x.m1() | | main.rs:1084:5:1085:14 | S1 | -| main.rs:1103:18:1103:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1103:18:1103:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1103:18:1103:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1103:18:1103:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1103:18:1103:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1103:18:1103:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1103:26:1103:26 | y | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1103:26:1103:26 | y | A | main.rs:1086:5:1087:14 | S2 | -| main.rs:1103:26:1103:31 | y.m1() | | main.rs:1086:5:1087:14 | S2 | -| main.rs:1125:15:1125:18 | SelfParam | | main.rs:1123:5:1126:5 | Self [trait MyTrait1] | -| main.rs:1130:15:1130:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1130:15:1130:19 | SelfParam | &T | main.rs:1128:5:1140:5 | Self [trait MyTrait2] | -| main.rs:1133:9:1139:9 | { ... } | | main.rs:1128:20:1128:22 | Tr2 | -| main.rs:1134:13:1138:13 | if ... {...} else {...} | | main.rs:1128:20:1128:22 | Tr2 | -| main.rs:1134:16:1134:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1134:16:1134:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1134:20:1134:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1134:22:1136:13 | { ... } | | main.rs:1128:20:1128:22 | Tr2 | -| main.rs:1135:17:1135:20 | self | | file://:0:0:0:0 | & | -| main.rs:1135:17:1135:20 | self | &T | main.rs:1128:5:1140:5 | Self [trait MyTrait2] | -| main.rs:1135:17:1135:25 | self.m1() | | main.rs:1128:20:1128:22 | Tr2 | -| main.rs:1136:20:1138:13 | { ... } | | main.rs:1128:20:1128:22 | Tr2 | -| main.rs:1137:17:1137:31 | ...::m1(...) | | main.rs:1128:20:1128:22 | Tr2 | -| main.rs:1137:26:1137:30 | * ... | | main.rs:1128:5:1140:5 | Self [trait MyTrait2] | -| main.rs:1137:27:1137:30 | self | | file://:0:0:0:0 | & | -| main.rs:1137:27:1137:30 | self | &T | main.rs:1128:5:1140:5 | Self [trait MyTrait2] | -| main.rs:1144:15:1144:18 | SelfParam | | main.rs:1142:5:1154:5 | Self [trait MyTrait3] | -| main.rs:1147:9:1153:9 | { ... } | | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1148:13:1152:13 | if ... {...} else {...} | | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1148:16:1148:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1148:16:1148:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1148:20:1148:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1148:22:1150:13 | { ... } | | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1149:17:1149:20 | self | | main.rs:1142:5:1154:5 | Self [trait MyTrait3] | -| main.rs:1149:17:1149:25 | self.m2() | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1149:17:1149:25 | self.m2() | A | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1149:17:1149:27 | ... .a | | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1150:20:1152:13 | { ... } | | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1151:17:1151:31 | ...::m2(...) | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1151:17:1151:31 | ...::m2(...) | A | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1151:17:1151:33 | ... .a | | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1151:26:1151:30 | &self | | file://:0:0:0:0 | & | -| main.rs:1151:26:1151:30 | &self | &T | main.rs:1142:5:1154:5 | Self [trait MyTrait3] | -| main.rs:1151:27:1151:30 | self | | main.rs:1142:5:1154:5 | Self [trait MyTrait3] | -| main.rs:1158:15:1158:18 | SelfParam | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1158:15:1158:18 | SelfParam | A | main.rs:1156:10:1156:10 | T | -| main.rs:1158:26:1160:9 | { ... } | | main.rs:1156:10:1156:10 | T | -| main.rs:1159:13:1159:16 | self | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1159:13:1159:16 | self | A | main.rs:1156:10:1156:10 | T | -| main.rs:1159:13:1159:18 | self.a | | main.rs:1156:10:1156:10 | T | -| main.rs:1167:15:1167:18 | SelfParam | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1167:15:1167:18 | SelfParam | A | main.rs:1165:10:1165:10 | T | -| main.rs:1167:35:1169:9 | { ... } | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1167:35:1169:9 | { ... } | A | main.rs:1165:10:1165:10 | T | -| main.rs:1168:13:1168:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1168:13:1168:33 | MyThing {...} | A | main.rs:1165:10:1165:10 | T | -| main.rs:1168:26:1168:29 | self | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1168:26:1168:29 | self | A | main.rs:1165:10:1165:10 | T | -| main.rs:1168:26:1168:31 | self.a | | main.rs:1165:10:1165:10 | T | -| main.rs:1176:44:1176:44 | x | | main.rs:1176:26:1176:41 | T2 | -| main.rs:1176:57:1178:5 | { ... } | | main.rs:1176:22:1176:23 | T1 | -| main.rs:1177:9:1177:9 | x | | main.rs:1176:26:1176:41 | T2 | -| main.rs:1177:9:1177:14 | x.m1() | | main.rs:1176:22:1176:23 | T1 | -| main.rs:1180:56:1180:56 | x | | main.rs:1180:39:1180:53 | T | -| main.rs:1180:62:1184:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1182:13:1182:13 | a | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1182:13:1182:13 | a | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1182:17:1182:17 | x | | main.rs:1180:39:1180:53 | T | -| main.rs:1182:17:1182:22 | x.m1() | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1182:17:1182:22 | x.m1() | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1183:18:1183:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1183:18:1183:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1183:18:1183:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1183:18:1183:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1183:18:1183:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1183:18:1183:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1183:26:1183:26 | a | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1183:26:1183:26 | a | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1186:16:1210:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1187:13:1187:13 | x | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1187:13:1187:13 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1187:17:1187:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1187:17:1187:33 | MyThing {...} | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1187:30:1187:31 | S1 | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1188:13:1188:13 | y | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1188:13:1188:13 | y | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1188:17:1188:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1188:17:1188:33 | MyThing {...} | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1188:30:1188:31 | S2 | | main.rs:1120:5:1121:14 | S2 | -| main.rs:1190:18:1190:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1190:18:1190:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1190:18:1190:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1190:18:1190:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1190:18:1190:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1190:18:1190:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1190:26:1190:26 | x | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1190:26:1190:26 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1190:26:1190:31 | x.m1() | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1191:18:1191:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1191:18:1191:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1191:18:1191:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1191:18:1191:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1191:18:1191:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1191:18:1191:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1191:26:1191:26 | y | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1191:26:1191:26 | y | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1191:26:1191:31 | y.m1() | | main.rs:1120:5:1121:14 | S2 | -| main.rs:1193:13:1193:13 | x | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1193:13:1193:13 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1193:17:1193:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1193:17:1193:33 | MyThing {...} | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1193:30:1193:31 | S1 | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1194:13:1194:13 | y | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1194:13:1194:13 | y | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1194:17:1194:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1194:17:1194:33 | MyThing {...} | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1194:30:1194:31 | S2 | | main.rs:1120:5:1121:14 | S2 | -| main.rs:1196:18:1196:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1196:18:1196:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1196:18:1196:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1196:18:1196:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1196:18:1196:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1196:18:1196:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1196:26:1196:26 | x | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1196:26:1196:26 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1196:26:1196:31 | x.m2() | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1197:18:1197:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1197:18:1197:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1197:18:1197:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1197:18:1197:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1197:18:1197:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1197:18:1197:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1197:26:1197:26 | y | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1197:26:1197:26 | y | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1197:26:1197:31 | y.m2() | | main.rs:1120:5:1121:14 | S2 | -| main.rs:1199:13:1199:13 | x | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1199:13:1199:13 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1199:17:1199:34 | MyThing2 {...} | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1199:17:1199:34 | MyThing2 {...} | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1199:31:1199:32 | S1 | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1200:13:1200:13 | y | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1200:13:1200:13 | y | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1200:17:1200:34 | MyThing2 {...} | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1200:17:1200:34 | MyThing2 {...} | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1200:31:1200:32 | S2 | | main.rs:1120:5:1121:14 | S2 | -| main.rs:1202:18:1202:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1202:18:1202:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1202:18:1202:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1202:18:1202:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1202:18:1202:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1202:18:1202:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1202:26:1202:26 | x | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1202:26:1202:26 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1202:26:1202:31 | x.m3() | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1203:18:1203:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1203:18:1203:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1203:18:1203:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1203:18:1203:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1203:18:1203:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1203:18:1203:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1203:26:1203:26 | y | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1203:26:1203:26 | y | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1203:26:1203:31 | y.m3() | | main.rs:1120:5:1121:14 | S2 | -| main.rs:1205:13:1205:13 | x | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1205:13:1205:13 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1205:17:1205:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1205:17:1205:33 | MyThing {...} | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1205:30:1205:31 | S1 | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1206:13:1206:13 | s | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1206:17:1206:32 | call_trait_m1(...) | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1206:31:1206:31 | x | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1206:31:1206:31 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1208:13:1208:13 | x | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1208:13:1208:13 | x | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1208:17:1208:34 | MyThing2 {...} | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1208:17:1208:34 | MyThing2 {...} | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1208:31:1208:32 | S2 | | main.rs:1120:5:1121:14 | S2 | -| main.rs:1209:13:1209:13 | s | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1209:13:1209:13 | s | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1209:17:1209:32 | call_trait_m1(...) | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1209:17:1209:32 | call_trait_m1(...) | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1209:31:1209:31 | x | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1209:31:1209:31 | x | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1226:22:1226:22 | x | | file://:0:0:0:0 | & | -| main.rs:1226:22:1226:22 | x | &T | main.rs:1226:11:1226:19 | T | -| main.rs:1226:35:1228:5 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1226:35:1228:5 | { ... } | &T | main.rs:1226:11:1226:19 | T | -| main.rs:1227:9:1227:9 | x | | file://:0:0:0:0 | & | -| main.rs:1227:9:1227:9 | x | &T | main.rs:1226:11:1226:19 | T | -| main.rs:1231:17:1231:20 | SelfParam | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1231:29:1233:9 | { ... } | | main.rs:1219:5:1220:14 | S2 | -| main.rs:1232:13:1232:14 | S2 | | main.rs:1219:5:1220:14 | S2 | -| main.rs:1236:21:1236:21 | x | | main.rs:1236:13:1236:14 | T1 | -| main.rs:1239:5:1241:5 | { ... } | | main.rs:1236:17:1236:18 | T2 | -| main.rs:1240:9:1240:9 | x | | main.rs:1236:13:1236:14 | T1 | -| main.rs:1240:9:1240:16 | x.into() | | main.rs:1236:17:1236:18 | T2 | -| main.rs:1243:16:1259:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1244:13:1244:13 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1244:17:1244:18 | S1 | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1245:18:1245:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1245:18:1245:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1245:18:1245:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1245:18:1245:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1245:18:1245:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1245:18:1245:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1245:26:1245:31 | id(...) | | file://:0:0:0:0 | & | -| main.rs:1245:26:1245:31 | id(...) | &T | main.rs:1216:5:1217:14 | S1 | -| main.rs:1245:29:1245:30 | &x | | file://:0:0:0:0 | & | -| main.rs:1245:29:1245:30 | &x | &T | main.rs:1216:5:1217:14 | S1 | -| main.rs:1245:30:1245:30 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1247:13:1247:13 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1247:17:1247:18 | S1 | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1248:18:1248:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1248:18:1248:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1248:18:1248:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1248:18:1248:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1248:18:1248:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1248:18:1248:37 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1248:26:1248:37 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:1248:26:1248:37 | id::<...>(...) | &T | main.rs:1216:5:1217:14 | S1 | -| main.rs:1248:35:1248:36 | &x | | file://:0:0:0:0 | & | -| main.rs:1248:35:1248:36 | &x | &T | main.rs:1216:5:1217:14 | S1 | -| main.rs:1248:36:1248:36 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1250:13:1250:13 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1250:13:1250:13 | x | | main.rs:1222:5:1222:25 | dyn Trait | -| main.rs:1250:17:1250:18 | S1 | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1250:17:1250:18 | S1 | | main.rs:1222:5:1222:25 | dyn Trait | -| main.rs:1252:18:1252:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1252:18:1252:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1252:18:1252:44 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1252:18:1252:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1252:18:1252:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1252:18:1252:44 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1252:26:1252:44 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:1252:26:1252:44 | id::<...>(...) | &T | main.rs:1222:5:1222:25 | dyn Trait | -| main.rs:1252:42:1252:43 | &x | | file://:0:0:0:0 | & | -| main.rs:1252:42:1252:43 | &x | &T | main.rs:1216:5:1217:14 | S1 | -| main.rs:1252:42:1252:43 | &x | &T | main.rs:1222:5:1222:25 | dyn Trait | -| main.rs:1252:43:1252:43 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1252:43:1252:43 | x | | main.rs:1222:5:1222:25 | dyn Trait | -| main.rs:1254:13:1254:13 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1254:17:1254:18 | S1 | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1255:9:1255:25 | into::<...>(...) | | main.rs:1219:5:1220:14 | S2 | -| main.rs:1255:24:1255:24 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1257:13:1257:13 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1257:17:1257:18 | S1 | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1258:13:1258:13 | y | | main.rs:1219:5:1220:14 | S2 | -| main.rs:1258:21:1258:27 | into(...) | | main.rs:1219:5:1220:14 | S2 | -| main.rs:1258:26:1258:26 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1272:22:1272:25 | SelfParam | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1272:22:1272:25 | SelfParam | Fst | main.rs:1271:10:1271:12 | Fst | -| main.rs:1272:22:1272:25 | SelfParam | Snd | main.rs:1271:15:1271:17 | Snd | -| main.rs:1272:35:1279:9 | { ... } | | main.rs:1271:15:1271:17 | Snd | -| main.rs:1273:13:1278:13 | match self { ... } | | file://:0:0:0:0 | ! | -| main.rs:1273:13:1278:13 | match self { ... } | | main.rs:1271:15:1271:17 | Snd | -| main.rs:1273:19:1273:22 | self | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1273:19:1273:22 | self | Fst | main.rs:1271:10:1271:12 | Fst | -| main.rs:1273:19:1273:22 | self | Snd | main.rs:1271:15:1271:17 | Snd | -| main.rs:1274:17:1274:38 | ...::PairNone(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1274:17:1274:38 | ...::PairNone(...) | Fst | main.rs:1271:10:1271:12 | Fst | -| main.rs:1274:17:1274:38 | ...::PairNone(...) | Snd | main.rs:1271:15:1271:17 | Snd | -| main.rs:1274:43:1274:82 | MacroExpr | | file://:0:0:0:0 | ! | -| main.rs:1274:50:1274:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | -| main.rs:1274:50:1274:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | -| main.rs:1274:50:1274:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1274:50:1274:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1274:50:1274:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1274:50:1274:81 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:1274:50:1274:81 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1275:17:1275:38 | ...::PairFst(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1275:17:1275:38 | ...::PairFst(...) | Fst | main.rs:1271:10:1271:12 | Fst | -| main.rs:1275:17:1275:38 | ...::PairFst(...) | Snd | main.rs:1271:15:1271:17 | Snd | -| main.rs:1275:37:1275:37 | _ | | main.rs:1271:10:1271:12 | Fst | -| main.rs:1275:43:1275:81 | MacroExpr | | file://:0:0:0:0 | ! | -| main.rs:1275:50:1275:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | -| main.rs:1275:50:1275:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | -| main.rs:1275:50:1275:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1275:50:1275:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1275:50:1275:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1275:50:1275:80 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:1275:50:1275:80 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1276:17:1276:40 | ...::PairSnd(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1276:17:1276:40 | ...::PairSnd(...) | Fst | main.rs:1271:10:1271:12 | Fst | -| main.rs:1276:17:1276:40 | ...::PairSnd(...) | Snd | main.rs:1271:15:1271:17 | Snd | -| main.rs:1276:37:1276:39 | snd | | main.rs:1271:15:1271:17 | Snd | -| main.rs:1276:45:1276:47 | snd | | main.rs:1271:15:1271:17 | Snd | -| main.rs:1277:17:1277:44 | ...::PairBoth(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1277:17:1277:44 | ...::PairBoth(...) | Fst | main.rs:1271:10:1271:12 | Fst | -| main.rs:1277:17:1277:44 | ...::PairBoth(...) | Snd | main.rs:1271:15:1271:17 | Snd | -| main.rs:1277:38:1277:38 | _ | | main.rs:1271:10:1271:12 | Fst | -| main.rs:1277:41:1277:43 | snd | | main.rs:1271:15:1271:17 | Snd | -| main.rs:1277:49:1277:51 | snd | | main.rs:1271:15:1271:17 | Snd | -| main.rs:1303:10:1303:10 | t | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1303:10:1303:10 | t | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1303:10:1303:10 | t | Snd | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1303:10:1303:10 | t | Snd.Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1303:10:1303:10 | t | Snd.Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1303:30:1306:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1304:13:1304:13 | x | | main.rs:1288:5:1289:14 | S3 | -| main.rs:1304:17:1304:17 | t | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1304:17:1304:17 | t | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1304:17:1304:17 | t | Snd | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1304:17:1304:17 | t | Snd.Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1304:17:1304:17 | t | Snd.Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1304:17:1304:29 | t.unwrapSnd() | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1304:17:1304:29 | t.unwrapSnd() | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1304:17:1304:29 | t.unwrapSnd() | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1304:17:1304:41 | ... .unwrapSnd() | | main.rs:1288:5:1289:14 | S3 | -| main.rs:1305:18:1305:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1305:18:1305:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1305:18:1305:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1305:18:1305:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1305:18:1305:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1305:18:1305:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1305:26:1305:26 | x | | main.rs:1288:5:1289:14 | S3 | -| main.rs:1320:22:1320:25 | SelfParam | | main.rs:1318:5:1321:5 | Self [trait TraitWithAssocType] | -| main.rs:1328:22:1328:25 | SelfParam | | main.rs:1316:5:1316:28 | GenS | -| main.rs:1328:22:1328:25 | SelfParam | GenT | main.rs:1323:10:1323:15 | Output | -| main.rs:1328:44:1330:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1328:44:1330:9 | { ... } | E | main.rs:1323:10:1323:15 | Output | -| main.rs:1328:44:1330:9 | { ... } | T | main.rs:1323:10:1323:15 | Output | -| main.rs:1329:13:1329:22 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1329:13:1329:22 | Ok(...) | E | main.rs:1323:10:1323:15 | Output | -| main.rs:1329:13:1329:22 | Ok(...) | T | main.rs:1323:10:1323:15 | Output | -| main.rs:1329:16:1329:19 | self | | main.rs:1316:5:1316:28 | GenS | -| main.rs:1329:16:1329:19 | self | GenT | main.rs:1323:10:1323:15 | Output | -| main.rs:1329:16:1329:21 | self.0 | | main.rs:1323:10:1323:15 | Output | -| main.rs:1333:16:1355:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1335:13:1335:14 | p1 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1335:13:1335:14 | p1 | Fst | main.rs:1282:5:1283:14 | S1 | -| main.rs:1335:13:1335:14 | p1 | Snd | main.rs:1285:5:1286:14 | S2 | -| main.rs:1335:26:1335:53 | ...::PairBoth(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1335:26:1335:53 | ...::PairBoth(...) | Fst | main.rs:1282:5:1283:14 | S1 | -| main.rs:1335:26:1335:53 | ...::PairBoth(...) | Snd | main.rs:1285:5:1286:14 | S2 | -| main.rs:1335:47:1335:48 | S1 | | main.rs:1282:5:1283:14 | S1 | -| main.rs:1335:51:1335:52 | S2 | | main.rs:1285:5:1286:14 | S2 | -| main.rs:1336:18:1336:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1336:18:1336:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1336:18:1336:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1336:18:1336:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1336:18:1336:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1336:18:1336:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1336:26:1336:27 | p1 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1336:26:1336:27 | p1 | Fst | main.rs:1282:5:1283:14 | S1 | -| main.rs:1336:26:1336:27 | p1 | Snd | main.rs:1285:5:1286:14 | S2 | -| main.rs:1339:13:1339:14 | p2 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1339:13:1339:14 | p2 | Fst | main.rs:1282:5:1283:14 | S1 | -| main.rs:1339:13:1339:14 | p2 | Snd | main.rs:1285:5:1286:14 | S2 | -| main.rs:1339:26:1339:47 | ...::PairNone(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1339:26:1339:47 | ...::PairNone(...) | Fst | main.rs:1282:5:1283:14 | S1 | -| main.rs:1339:26:1339:47 | ...::PairNone(...) | Snd | main.rs:1285:5:1286:14 | S2 | -| main.rs:1340:18:1340:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1340:18:1340:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1340:18:1340:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1340:18:1340:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1340:18:1340:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1340:18:1340:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1340:26:1340:27 | p2 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1340:26:1340:27 | p2 | Fst | main.rs:1282:5:1283:14 | S1 | -| main.rs:1340:26:1340:27 | p2 | Snd | main.rs:1285:5:1286:14 | S2 | -| main.rs:1343:13:1343:14 | p3 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1343:13:1343:14 | p3 | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1343:13:1343:14 | p3 | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1343:34:1343:56 | ...::PairSnd(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1343:34:1343:56 | ...::PairSnd(...) | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1343:34:1343:56 | ...::PairSnd(...) | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1343:54:1343:55 | S3 | | main.rs:1288:5:1289:14 | S3 | -| main.rs:1344:18:1344:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1344:18:1344:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1344:18:1344:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1344:18:1344:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1344:18:1344:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1344:18:1344:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1344:26:1344:27 | p3 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1344:26:1344:27 | p3 | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1344:26:1344:27 | p3 | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1347:13:1347:14 | p3 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1347:13:1347:14 | p3 | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1347:13:1347:14 | p3 | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1347:35:1347:56 | ...::PairNone(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1347:35:1347:56 | ...::PairNone(...) | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1347:35:1347:56 | ...::PairNone(...) | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1348:18:1348:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1348:18:1348:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1348:18:1348:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1348:18:1348:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1348:18:1348:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1348:18:1348:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1348:26:1348:27 | p3 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1348:26:1348:27 | p3 | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1348:26:1348:27 | p3 | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1350:9:1350:55 | g(...) | | file://:0:0:0:0 | () | -| main.rs:1350:11:1350:54 | ...::PairSnd(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1350:11:1350:54 | ...::PairSnd(...) | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1350:11:1350:54 | ...::PairSnd(...) | Snd | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1350:11:1350:54 | ...::PairSnd(...) | Snd.Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1350:11:1350:54 | ...::PairSnd(...) | Snd.Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1350:31:1350:53 | ...::PairSnd(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1350:31:1350:53 | ...::PairSnd(...) | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1350:31:1350:53 | ...::PairSnd(...) | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1350:51:1350:52 | S3 | | main.rs:1288:5:1289:14 | S3 | -| main.rs:1352:13:1352:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1352:13:1352:13 | x | E | main.rs:1282:5:1283:14 | S1 | -| main.rs:1352:13:1352:13 | x | T | main.rs:1308:5:1308:34 | S4 | -| main.rs:1352:13:1352:13 | x | T.T41 | main.rs:1285:5:1286:14 | S2 | -| main.rs:1352:13:1352:13 | x | T.T42 | main.rs:1310:5:1310:22 | S5 | -| main.rs:1352:13:1352:13 | x | T.T42.T5 | main.rs:1285:5:1286:14 | S2 | -| main.rs:1354:13:1354:13 | y | | {EXTERNAL LOCATION} | Result | -| main.rs:1354:13:1354:13 | y | E | {EXTERNAL LOCATION} | bool | -| main.rs:1354:13:1354:13 | y | T | {EXTERNAL LOCATION} | bool | -| main.rs:1354:17:1354:26 | GenS(...) | | main.rs:1316:5:1316:28 | GenS | -| main.rs:1354:17:1354:26 | GenS(...) | GenT | {EXTERNAL LOCATION} | bool | -| main.rs:1354:17:1354:38 | ... .get_input() | | {EXTERNAL LOCATION} | Result | -| main.rs:1354:17:1354:38 | ... .get_input() | E | {EXTERNAL LOCATION} | bool | -| main.rs:1354:17:1354:38 | ... .get_input() | T | {EXTERNAL LOCATION} | bool | -| main.rs:1354:22:1354:25 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1367:16:1367:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1367:16:1367:24 | SelfParam | &T | main.rs:1365:5:1372:5 | Self [trait MyTrait] | -| main.rs:1367:27:1367:31 | value | | main.rs:1365:19:1365:19 | S | -| main.rs:1369:21:1369:29 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1369:21:1369:29 | SelfParam | &T | main.rs:1365:5:1372:5 | Self [trait MyTrait] | -| main.rs:1369:32:1369:36 | value | | main.rs:1365:19:1365:19 | S | -| main.rs:1369:42:1371:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1370:13:1370:16 | self | | file://:0:0:0:0 | & | -| main.rs:1370:13:1370:16 | self | &T | main.rs:1365:5:1372:5 | Self [trait MyTrait] | -| main.rs:1370:13:1370:27 | self.set(...) | | file://:0:0:0:0 | () | -| main.rs:1370:22:1370:26 | value | | main.rs:1365:19:1365:19 | S | -| main.rs:1376:16:1376:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1376:16:1376:24 | SelfParam | &T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1376:16:1376:24 | SelfParam | &T.T | main.rs:1374:10:1374:10 | T | -| main.rs:1376:27:1376:31 | value | | main.rs:1374:10:1374:10 | T | -| main.rs:1376:37:1376:38 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1380:26:1382:9 | { ... } | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1380:26:1382:9 | { ... } | T | main.rs:1379:10:1379:10 | T | -| main.rs:1381:13:1381:30 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1381:13:1381:30 | ...::MyNone(...) | T | main.rs:1379:10:1379:10 | T | -| main.rs:1386:20:1386:23 | SelfParam | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1386:20:1386:23 | SelfParam | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1386:20:1386:23 | SelfParam | T.T | main.rs:1385:10:1385:10 | T | -| main.rs:1386:41:1391:9 | { ... } | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1386:41:1391:9 | { ... } | T | main.rs:1385:10:1385:10 | T | -| main.rs:1387:13:1390:13 | match self { ... } | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1387:13:1390:13 | match self { ... } | T | main.rs:1385:10:1385:10 | T | -| main.rs:1387:19:1387:22 | self | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1387:19:1387:22 | self | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1387:19:1387:22 | self | T.T | main.rs:1385:10:1385:10 | T | -| main.rs:1388:17:1388:34 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1388:17:1388:34 | ...::MyNone(...) | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1388:17:1388:34 | ...::MyNone(...) | T.T | main.rs:1385:10:1385:10 | T | -| main.rs:1388:39:1388:56 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1388:39:1388:56 | ...::MyNone(...) | T | main.rs:1385:10:1385:10 | T | -| main.rs:1389:17:1389:35 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1389:17:1389:35 | ...::MySome(...) | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1389:17:1389:35 | ...::MySome(...) | T.T | main.rs:1385:10:1385:10 | T | -| main.rs:1389:34:1389:34 | x | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1389:34:1389:34 | x | T | main.rs:1385:10:1385:10 | T | -| main.rs:1389:40:1389:40 | x | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1389:40:1389:40 | x | T | main.rs:1385:10:1385:10 | T | -| main.rs:1397:16:1443:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1398:13:1398:14 | x1 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1398:13:1398:14 | x1 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1398:18:1398:37 | ...::new(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1398:18:1398:37 | ...::new(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1399:18:1399:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1399:18:1399:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1399:18:1399:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1399:18:1399:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1399:18:1399:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1399:18:1399:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1399:26:1399:27 | x1 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1399:26:1399:27 | x1 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1401:17:1401:18 | x2 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1401:17:1401:18 | x2 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1401:22:1401:36 | ...::new(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1401:22:1401:36 | ...::new(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1402:9:1402:10 | x2 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1402:9:1402:10 | x2 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1402:9:1402:17 | x2.set(...) | | file://:0:0:0:0 | () | -| main.rs:1402:16:1402:16 | S | | main.rs:1394:5:1395:13 | S | -| main.rs:1403:18:1403:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1403:18:1403:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1403:18:1403:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1403:18:1403:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1403:18:1403:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1403:18:1403:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1403:26:1403:27 | x2 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1403:26:1403:27 | x2 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1406:17:1406:18 | x3 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1406:22:1406:36 | ...::new(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1407:9:1407:10 | x3 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1407:9:1407:22 | x3.call_set(...) | | file://:0:0:0:0 | () | -| main.rs:1407:21:1407:21 | S | | main.rs:1394:5:1395:13 | S | -| main.rs:1408:18:1408:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1408:18:1408:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1408:18:1408:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1408:18:1408:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1408:18:1408:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1408:18:1408:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1408:26:1408:27 | x3 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1410:17:1410:18 | x4 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1410:17:1410:18 | x4 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1410:22:1410:36 | ...::new(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1410:22:1410:36 | ...::new(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1411:9:1411:33 | ...::set(...) | | file://:0:0:0:0 | () | -| main.rs:1411:23:1411:29 | &mut x4 | | file://:0:0:0:0 | & | -| main.rs:1411:23:1411:29 | &mut x4 | &T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1411:23:1411:29 | &mut x4 | &T.T | main.rs:1394:5:1395:13 | S | -| main.rs:1411:28:1411:29 | x4 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1411:28:1411:29 | x4 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1411:32:1411:32 | S | | main.rs:1394:5:1395:13 | S | -| main.rs:1412:18:1412:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1412:18:1412:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1412:18:1412:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1412:18:1412:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1412:18:1412:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1412:18:1412:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1412:26:1412:27 | x4 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1412:26:1412:27 | x4 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1414:13:1414:14 | x5 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1414:13:1414:14 | x5 | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1414:13:1414:14 | x5 | T.T | main.rs:1394:5:1395:13 | S | -| main.rs:1414:18:1414:58 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1414:18:1414:58 | ...::MySome(...) | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1414:18:1414:58 | ...::MySome(...) | T.T | main.rs:1394:5:1395:13 | S | -| main.rs:1414:35:1414:57 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1414:35:1414:57 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1415:18:1415:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1415:18:1415:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1415:18:1415:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1415:18:1415:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1415:18:1415:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1415:18:1415:37 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1415:26:1415:27 | x5 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1415:26:1415:27 | x5 | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1415:26:1415:27 | x5 | T.T | main.rs:1394:5:1395:13 | S | -| main.rs:1415:26:1415:37 | x5.flatten() | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1415:26:1415:37 | x5.flatten() | T | main.rs:1394:5:1395:13 | S | -| main.rs:1417:13:1417:14 | x6 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1417:13:1417:14 | x6 | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1417:13:1417:14 | x6 | T.T | main.rs:1394:5:1395:13 | S | -| main.rs:1417:18:1417:58 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1417:18:1417:58 | ...::MySome(...) | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1417:18:1417:58 | ...::MySome(...) | T.T | main.rs:1394:5:1395:13 | S | -| main.rs:1417:35:1417:57 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1417:35:1417:57 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1418:18:1418:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1418:18:1418:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1418:18:1418:61 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1418:18:1418:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1418:18:1418:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1418:18:1418:61 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1418:26:1418:61 | ...::flatten(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1418:26:1418:61 | ...::flatten(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1418:59:1418:60 | x6 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1418:59:1418:60 | x6 | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1418:59:1418:60 | x6 | T.T | main.rs:1394:5:1395:13 | S | -| main.rs:1421:13:1421:19 | from_if | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1421:13:1421:19 | from_if | T | main.rs:1394:5:1395:13 | S | -| main.rs:1421:23:1425:9 | if ... {...} else {...} | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1421:23:1425:9 | if ... {...} else {...} | T | main.rs:1394:5:1395:13 | S | -| main.rs:1421:26:1421:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1421:26:1421:30 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1421:30:1421:30 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1421:32:1423:9 | { ... } | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1421:32:1423:9 | { ... } | T | main.rs:1394:5:1395:13 | S | -| main.rs:1422:13:1422:30 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1422:13:1422:30 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1423:16:1425:9 | { ... } | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1423:16:1425:9 | { ... } | T | main.rs:1394:5:1395:13 | S | -| main.rs:1424:13:1424:31 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1424:13:1424:31 | ...::MySome(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1424:30:1424:30 | S | | main.rs:1394:5:1395:13 | S | -| main.rs:1426:18:1426:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1426:18:1426:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1426:18:1426:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1426:18:1426:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1426:18:1426:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1426:18:1426:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1426:26:1426:32 | from_if | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1426:26:1426:32 | from_if | T | main.rs:1394:5:1395:13 | S | -| main.rs:1429:13:1429:22 | from_match | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1429:13:1429:22 | from_match | T | main.rs:1394:5:1395:13 | S | -| main.rs:1429:26:1432:9 | match ... { ... } | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1429:26:1432:9 | match ... { ... } | T | main.rs:1394:5:1395:13 | S | -| main.rs:1429:32:1429:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1429:32:1429:36 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1429:36:1429:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1430:13:1430:16 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1430:21:1430:38 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1430:21:1430:38 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1431:13:1431:17 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1431:22:1431:40 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1431:22:1431:40 | ...::MySome(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1431:39:1431:39 | S | | main.rs:1394:5:1395:13 | S | -| main.rs:1433:18:1433:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1433:18:1433:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1433:18:1433:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1433:18:1433:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1433:18:1433:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1433:18:1433:35 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1433:26:1433:35 | from_match | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1433:26:1433:35 | from_match | T | main.rs:1394:5:1395:13 | S | -| main.rs:1436:13:1436:21 | from_loop | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1436:13:1436:21 | from_loop | T | main.rs:1394:5:1395:13 | S | -| main.rs:1436:25:1441:9 | loop { ... } | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1436:25:1441:9 | loop { ... } | T | main.rs:1394:5:1395:13 | S | -| main.rs:1436:30:1441:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1437:13:1439:13 | if ... {...} | | file://:0:0:0:0 | () | -| main.rs:1437:16:1437:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1437:16:1437:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1437:20:1437:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1437:22:1439:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1438:23:1438:40 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1438:23:1438:40 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1440:19:1440:37 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1440:19:1440:37 | ...::MySome(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1440:36:1440:36 | S | | main.rs:1394:5:1395:13 | S | -| main.rs:1442:18:1442:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1442:18:1442:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1442:18:1442:34 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1442:18:1442:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1442:18:1442:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1442:18:1442:34 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1442:26:1442:34 | from_loop | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1442:26:1442:34 | from_loop | T | main.rs:1394:5:1395:13 | S | -| main.rs:1460:15:1460:18 | SelfParam | | main.rs:1448:5:1449:19 | S | -| main.rs:1460:15:1460:18 | SelfParam | T | main.rs:1459:10:1459:10 | T | -| main.rs:1460:26:1462:9 | { ... } | | main.rs:1459:10:1459:10 | T | -| main.rs:1461:13:1461:16 | self | | main.rs:1448:5:1449:19 | S | -| main.rs:1461:13:1461:16 | self | T | main.rs:1459:10:1459:10 | T | -| main.rs:1461:13:1461:18 | self.0 | | main.rs:1459:10:1459:10 | T | -| main.rs:1464:15:1464:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1464:15:1464:19 | SelfParam | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1464:15:1464:19 | SelfParam | &T.T | main.rs:1459:10:1459:10 | T | -| main.rs:1464:28:1466:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1464:28:1466:9 | { ... } | &T | main.rs:1459:10:1459:10 | T | -| main.rs:1465:13:1465:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1465:13:1465:19 | &... | &T | main.rs:1459:10:1459:10 | T | -| main.rs:1465:14:1465:17 | self | | file://:0:0:0:0 | & | -| main.rs:1465:14:1465:17 | self | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1465:14:1465:17 | self | &T.T | main.rs:1459:10:1459:10 | T | -| main.rs:1465:14:1465:19 | self.0 | | main.rs:1459:10:1459:10 | T | -| main.rs:1468:15:1468:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1468:15:1468:25 | SelfParam | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1468:15:1468:25 | SelfParam | &T.T | main.rs:1459:10:1459:10 | T | -| main.rs:1468:34:1470:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1468:34:1470:9 | { ... } | &T | main.rs:1459:10:1459:10 | T | -| main.rs:1469:13:1469:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1469:13:1469:19 | &... | &T | main.rs:1459:10:1459:10 | T | -| main.rs:1469:14:1469:17 | self | | file://:0:0:0:0 | & | -| main.rs:1469:14:1469:17 | self | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1469:14:1469:17 | self | &T.T | main.rs:1459:10:1459:10 | T | -| main.rs:1469:14:1469:19 | self.0 | | main.rs:1459:10:1459:10 | T | -| main.rs:1474:29:1474:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1474:29:1474:33 | SelfParam | &T | main.rs:1473:5:1476:5 | Self [trait ATrait] | -| main.rs:1475:33:1475:36 | SelfParam | | main.rs:1473:5:1476:5 | Self [trait ATrait] | -| main.rs:1481:29:1481:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1481:29:1481:33 | SelfParam | &T | file://:0:0:0:0 | & | -| main.rs:1481:29:1481:33 | SelfParam | &T.&T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1481:43:1483:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1482:13:1482:22 | (...) | | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1482:13:1482:24 | ... .a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1482:14:1482:21 | * ... | | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1482:15:1482:21 | (...) | | file://:0:0:0:0 | & | -| main.rs:1482:15:1482:21 | (...) | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1482:16:1482:20 | * ... | | file://:0:0:0:0 | & | -| main.rs:1482:16:1482:20 | * ... | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1482:17:1482:20 | self | | file://:0:0:0:0 | & | -| main.rs:1482:17:1482:20 | self | &T | file://:0:0:0:0 | & | -| main.rs:1482:17:1482:20 | self | &T.&T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1486:33:1486:36 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1486:33:1486:36 | SelfParam | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1486:46:1488:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1487:13:1487:19 | (...) | | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1487:13:1487:21 | ... .a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1487:14:1487:18 | * ... | | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1487:15:1487:18 | self | | file://:0:0:0:0 | & | -| main.rs:1487:15:1487:18 | self | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1491:16:1541:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1492:13:1492:14 | x1 | | main.rs:1448:5:1449:19 | S | -| main.rs:1492:13:1492:14 | x1 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1492:18:1492:22 | S(...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1492:18:1492:22 | S(...) | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1492:20:1492:21 | S2 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1493:18:1493:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1493:18:1493:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1493:18:1493:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1493:18:1493:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1493:18:1493:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1493:18:1493:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1493:26:1493:27 | x1 | | main.rs:1448:5:1449:19 | S | -| main.rs:1493:26:1493:27 | x1 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1493:26:1493:32 | x1.m1() | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1495:13:1495:14 | x2 | | main.rs:1448:5:1449:19 | S | -| main.rs:1495:13:1495:14 | x2 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1495:18:1495:22 | S(...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1495:18:1495:22 | S(...) | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1495:20:1495:21 | S2 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1497:18:1497:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1497:18:1497:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1497:18:1497:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1497:18:1497:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1497:18:1497:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1497:18:1497:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1497:26:1497:27 | x2 | | main.rs:1448:5:1449:19 | S | -| main.rs:1497:26:1497:27 | x2 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1497:26:1497:32 | x2.m2() | | file://:0:0:0:0 | & | -| main.rs:1497:26:1497:32 | x2.m2() | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1498:18:1498:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1498:18:1498:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1498:18:1498:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1498:18:1498:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1498:18:1498:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1498:18:1498:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1498:26:1498:27 | x2 | | main.rs:1448:5:1449:19 | S | -| main.rs:1498:26:1498:27 | x2 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1498:26:1498:32 | x2.m3() | | file://:0:0:0:0 | & | -| main.rs:1498:26:1498:32 | x2.m3() | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1500:13:1500:14 | x3 | | main.rs:1448:5:1449:19 | S | -| main.rs:1500:13:1500:14 | x3 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1500:18:1500:22 | S(...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1500:18:1500:22 | S(...) | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1500:20:1500:21 | S2 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1502:18:1502:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1502:18:1502:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1502:18:1502:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1502:18:1502:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1502:18:1502:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1502:18:1502:41 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1502:26:1502:41 | ...::m2(...) | | file://:0:0:0:0 | & | -| main.rs:1502:26:1502:41 | ...::m2(...) | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1502:38:1502:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1502:38:1502:40 | &x3 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1502:38:1502:40 | &x3 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1502:39:1502:40 | x3 | | main.rs:1448:5:1449:19 | S | -| main.rs:1502:39:1502:40 | x3 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1503:18:1503:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1503:18:1503:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1503:18:1503:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1503:18:1503:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1503:18:1503:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1503:18:1503:41 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1503:26:1503:41 | ...::m3(...) | | file://:0:0:0:0 | & | -| main.rs:1503:26:1503:41 | ...::m3(...) | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1503:38:1503:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1503:38:1503:40 | &x3 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1503:38:1503:40 | &x3 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1503:39:1503:40 | x3 | | main.rs:1448:5:1449:19 | S | -| main.rs:1503:39:1503:40 | x3 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1505:13:1505:14 | x4 | | file://:0:0:0:0 | & | -| main.rs:1505:13:1505:14 | x4 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1505:13:1505:14 | x4 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1505:18:1505:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1505:18:1505:23 | &... | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1505:18:1505:23 | &... | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1505:19:1505:23 | S(...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1505:19:1505:23 | S(...) | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1505:21:1505:22 | S2 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1507:18:1507:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1507:18:1507:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1507:18:1507:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1507:18:1507:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1507:18:1507:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1507:18:1507:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1507:26:1507:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1507:26:1507:27 | x4 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1507:26:1507:27 | x4 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1507:26:1507:32 | x4.m2() | | file://:0:0:0:0 | & | -| main.rs:1507:26:1507:32 | x4.m2() | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1508:18:1508:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1508:18:1508:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1508:18:1508:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1508:18:1508:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1508:18:1508:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1508:18:1508:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1508:26:1508:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1508:26:1508:27 | x4 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1508:26:1508:27 | x4 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1508:26:1508:32 | x4.m3() | | file://:0:0:0:0 | & | -| main.rs:1508:26:1508:32 | x4.m3() | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1510:13:1510:14 | x5 | | file://:0:0:0:0 | & | -| main.rs:1510:13:1510:14 | x5 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1510:13:1510:14 | x5 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1510:18:1510:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1510:18:1510:23 | &... | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1510:18:1510:23 | &... | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1510:19:1510:23 | S(...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1510:19:1510:23 | S(...) | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1510:21:1510:22 | S2 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1512:18:1512:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1512:18:1512:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1512:18:1512:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1512:18:1512:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1512:18:1512:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1512:18:1512:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1512:26:1512:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1512:26:1512:27 | x5 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1512:26:1512:27 | x5 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1512:26:1512:32 | x5.m1() | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1513:18:1513:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1513:18:1513:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1513:18:1513:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1513:18:1513:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1513:18:1513:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1513:18:1513:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1513:26:1513:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1513:26:1513:27 | x5 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1513:26:1513:27 | x5 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1513:26:1513:29 | x5.0 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1515:13:1515:14 | x6 | | file://:0:0:0:0 | & | -| main.rs:1515:13:1515:14 | x6 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1515:13:1515:14 | x6 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1515:18:1515:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1515:18:1515:23 | &... | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1515:18:1515:23 | &... | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1515:19:1515:23 | S(...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1515:19:1515:23 | S(...) | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1515:21:1515:22 | S2 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1518:18:1518:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1518:18:1518:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1518:18:1518:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1518:18:1518:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1518:18:1518:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1518:18:1518:35 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1518:26:1518:30 | (...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1518:26:1518:30 | (...) | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1518:26:1518:35 | ... .m1() | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1518:27:1518:29 | * ... | | main.rs:1448:5:1449:19 | S | -| main.rs:1518:27:1518:29 | * ... | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1518:28:1518:29 | x6 | | file://:0:0:0:0 | & | -| main.rs:1518:28:1518:29 | x6 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1518:28:1518:29 | x6 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1520:13:1520:14 | x7 | | main.rs:1448:5:1449:19 | S | -| main.rs:1520:13:1520:14 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1520:13:1520:14 | x7 | T.&T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1520:18:1520:23 | S(...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1520:18:1520:23 | S(...) | T | file://:0:0:0:0 | & | -| main.rs:1520:18:1520:23 | S(...) | T.&T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1520:20:1520:22 | &S2 | | file://:0:0:0:0 | & | -| main.rs:1520:20:1520:22 | &S2 | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1520:21:1520:22 | S2 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1523:13:1523:13 | t | | file://:0:0:0:0 | & | -| main.rs:1523:13:1523:13 | t | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1523:17:1523:18 | x7 | | main.rs:1448:5:1449:19 | S | -| main.rs:1523:17:1523:18 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1523:17:1523:18 | x7 | T.&T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1523:17:1523:23 | x7.m1() | | file://:0:0:0:0 | & | -| main.rs:1523:17:1523:23 | x7.m1() | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1524:18:1524:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1524:18:1524:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1524:18:1524:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1524:18:1524:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1524:18:1524:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1524:18:1524:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1524:26:1524:27 | x7 | | main.rs:1448:5:1449:19 | S | -| main.rs:1524:26:1524:27 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1524:26:1524:27 | x7 | T.&T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1526:13:1526:14 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1526:26:1526:32 | "Hello" | | file://:0:0:0:0 | & | -| main.rs:1526:26:1526:32 | "Hello" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1526:26:1526:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | -| main.rs:1530:13:1530:13 | u | | {EXTERNAL LOCATION} | Result | -| main.rs:1530:13:1530:13 | u | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1530:17:1530:18 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1530:17:1530:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | -| main.rs:1530:17:1530:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1532:13:1532:20 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1532:13:1532:20 | my_thing | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1532:24:1532:39 | &... | | file://:0:0:0:0 | & | -| main.rs:1532:24:1532:39 | &... | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1532:25:1532:39 | MyInt {...} | | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1532:36:1532:37 | 37 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1532:36:1532:37 | 37 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1534:13:1534:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1534:17:1534:24 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1534:17:1534:24 | my_thing | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1534:17:1534:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | -| main.rs:1535:18:1535:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1535:18:1535:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1535:18:1535:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1535:18:1535:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1535:18:1535:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1535:18:1535:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1535:26:1535:26 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1538:13:1538:20 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1538:13:1538:20 | my_thing | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1538:24:1538:39 | &... | | file://:0:0:0:0 | & | -| main.rs:1538:24:1538:39 | &... | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1538:25:1538:39 | MyInt {...} | | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1538:36:1538:37 | 38 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1538:36:1538:37 | 38 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:13:1539:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:17:1539:24 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1539:17:1539:24 | my_thing | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1539:17:1539:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | -| main.rs:1540:18:1540:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1540:18:1540:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1540:18:1540:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1540:18:1540:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1540:18:1540:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1540:18:1540:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1540:26:1540:26 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:16:1547:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1547:16:1547:20 | SelfParam | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | -| main.rs:1550:16:1550:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1550:16:1550:20 | SelfParam | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | -| main.rs:1550:32:1552:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1550:32:1552:9 | { ... } | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | -| main.rs:1551:13:1551:16 | self | | file://:0:0:0:0 | & | -| main.rs:1551:13:1551:16 | self | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | -| main.rs:1551:13:1551:22 | self.foo() | | file://:0:0:0:0 | & | -| main.rs:1551:13:1551:22 | self.foo() | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | -| main.rs:1559:16:1559:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1559:16:1559:20 | SelfParam | &T | main.rs:1555:5:1555:20 | MyStruct | -| main.rs:1559:36:1561:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1559:36:1561:9 | { ... } | &T | main.rs:1555:5:1555:20 | MyStruct | -| main.rs:1560:13:1560:16 | self | | file://:0:0:0:0 | & | -| main.rs:1560:13:1560:16 | self | &T | main.rs:1555:5:1555:20 | MyStruct | -| main.rs:1564:16:1567:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1565:13:1565:13 | x | | main.rs:1555:5:1555:20 | MyStruct | -| main.rs:1565:17:1565:24 | MyStruct | | main.rs:1555:5:1555:20 | MyStruct | -| main.rs:1566:9:1566:9 | x | | main.rs:1555:5:1555:20 | MyStruct | -| main.rs:1566:9:1566:15 | x.bar() | | file://:0:0:0:0 | & | -| main.rs:1566:9:1566:15 | x.bar() | &T | main.rs:1555:5:1555:20 | MyStruct | -| main.rs:1576:16:1576:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1576:16:1576:20 | SelfParam | &T | main.rs:1573:5:1573:26 | MyStruct | -| main.rs:1576:16:1576:20 | SelfParam | &T.T | main.rs:1575:10:1575:10 | T | -| main.rs:1576:32:1578:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1576:32:1578:9 | { ... } | &T | main.rs:1573:5:1573:26 | MyStruct | -| main.rs:1576:32:1578:9 | { ... } | &T.T | main.rs:1575:10:1575:10 | T | -| main.rs:1577:13:1577:16 | self | | file://:0:0:0:0 | & | -| main.rs:1577:13:1577:16 | self | &T | main.rs:1573:5:1573:26 | MyStruct | -| main.rs:1577:13:1577:16 | self | &T.T | main.rs:1575:10:1575:10 | T | -| main.rs:1581:16:1584:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1582:13:1582:13 | x | | main.rs:1573:5:1573:26 | MyStruct | -| main.rs:1582:13:1582:13 | x | T | main.rs:1571:5:1571:13 | S | -| main.rs:1582:17:1582:27 | MyStruct(...) | | main.rs:1573:5:1573:26 | MyStruct | -| main.rs:1582:17:1582:27 | MyStruct(...) | T | main.rs:1571:5:1571:13 | S | -| main.rs:1582:26:1582:26 | S | | main.rs:1571:5:1571:13 | S | -| main.rs:1583:9:1583:9 | x | | main.rs:1573:5:1573:26 | MyStruct | -| main.rs:1583:9:1583:9 | x | T | main.rs:1571:5:1571:13 | S | -| main.rs:1583:9:1583:15 | x.foo() | | file://:0:0:0:0 | & | -| main.rs:1583:9:1583:15 | x.foo() | &T | main.rs:1573:5:1573:26 | MyStruct | -| main.rs:1583:9:1583:15 | x.foo() | &T.T | main.rs:1571:5:1571:13 | S | -| main.rs:1594:17:1594:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1594:17:1594:25 | SelfParam | &T | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1594:28:1596:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1595:13:1595:16 | self | | file://:0:0:0:0 | & | -| main.rs:1595:13:1595:16 | self | &T | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1595:13:1595:21 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1595:13:1595:34 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1595:25:1595:34 | ! ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1595:26:1595:29 | self | | file://:0:0:0:0 | & | -| main.rs:1595:26:1595:29 | self | &T | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1595:26:1595:34 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1602:15:1602:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1602:15:1602:19 | SelfParam | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1602:31:1604:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1602:31:1604:9 | { ... } | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1603:13:1603:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1603:13:1603:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1603:13:1603:19 | &... | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1603:13:1603:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1603:13:1603:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1603:13:1603:19 | &... | &T.&T.&T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1603:14:1603:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1603:14:1603:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1603:14:1603:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1603:14:1603:19 | &... | &T.&T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1603:15:1603:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1603:15:1603:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1603:15:1603:19 | &self | &T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1603:16:1603:19 | self | | file://:0:0:0:0 | & | -| main.rs:1603:16:1603:19 | self | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1606:15:1606:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1606:15:1606:25 | SelfParam | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1606:37:1608:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1606:37:1608:9 | { ... } | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1607:13:1607:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1607:13:1607:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1607:13:1607:19 | &... | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1607:13:1607:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1607:13:1607:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1607:13:1607:19 | &... | &T.&T.&T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1607:14:1607:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1607:14:1607:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1607:14:1607:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1607:14:1607:19 | &... | &T.&T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1607:15:1607:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1607:15:1607:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1607:15:1607:19 | &self | &T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1607:16:1607:19 | self | | file://:0:0:0:0 | & | -| main.rs:1607:16:1607:19 | self | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1610:15:1610:15 | x | | file://:0:0:0:0 | & | -| main.rs:1610:15:1610:15 | x | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1610:34:1612:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1610:34:1612:9 | { ... } | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1611:13:1611:13 | x | | file://:0:0:0:0 | & | -| main.rs:1611:13:1611:13 | x | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1614:15:1614:15 | x | | file://:0:0:0:0 | & | -| main.rs:1614:15:1614:15 | x | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1614:34:1616:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1614:34:1616:9 | { ... } | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1615:13:1615:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1615:13:1615:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1615:13:1615:16 | &... | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1615:13:1615:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1615:13:1615:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1615:13:1615:16 | &... | &T.&T.&T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1615:14:1615:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1615:14:1615:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1615:14:1615:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1615:14:1615:16 | &... | &T.&T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1615:15:1615:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1615:15:1615:16 | &x | &T | file://:0:0:0:0 | & | -| main.rs:1615:15:1615:16 | &x | &T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1615:16:1615:16 | x | | file://:0:0:0:0 | & | -| main.rs:1615:16:1615:16 | x | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1619:16:1632:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1620:13:1620:13 | x | | main.rs:1599:5:1599:13 | S | -| main.rs:1620:17:1620:20 | S {...} | | main.rs:1599:5:1599:13 | S | -| main.rs:1621:9:1621:9 | x | | main.rs:1599:5:1599:13 | S | -| main.rs:1621:9:1621:14 | x.f1() | | file://:0:0:0:0 | & | -| main.rs:1621:9:1621:14 | x.f1() | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1622:9:1622:9 | x | | main.rs:1599:5:1599:13 | S | -| main.rs:1622:9:1622:14 | x.f2() | | file://:0:0:0:0 | & | -| main.rs:1622:9:1622:14 | x.f2() | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1623:9:1623:17 | ...::f3(...) | | file://:0:0:0:0 | & | -| main.rs:1623:9:1623:17 | ...::f3(...) | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1623:15:1623:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1623:15:1623:16 | &x | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1623:16:1623:16 | x | | main.rs:1599:5:1599:13 | S | -| main.rs:1625:13:1625:13 | n | | {EXTERNAL LOCATION} | bool | -| main.rs:1625:17:1625:24 | * ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1625:18:1625:24 | * ... | | file://:0:0:0:0 | & | -| main.rs:1625:18:1625:24 | * ... | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1625:19:1625:24 | &... | | file://:0:0:0:0 | & | -| main.rs:1625:19:1625:24 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1625:19:1625:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | -| main.rs:1625:20:1625:24 | &true | | file://:0:0:0:0 | & | -| main.rs:1625:20:1625:24 | &true | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1625:21:1625:24 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1629:17:1629:20 | flag | | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1629:24:1629:41 | ...::default(...) | | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1630:9:1630:31 | ...::flip(...) | | file://:0:0:0:0 | () | -| main.rs:1630:22:1630:30 | &mut flag | | file://:0:0:0:0 | & | -| main.rs:1630:22:1630:30 | &mut flag | &T | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1630:27:1630:30 | flag | | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1631:18:1631:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1631:18:1631:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1631:18:1631:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1631:18:1631:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1631:18:1631:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1631:18:1631:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1631:26:1631:29 | flag | | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1646:43:1649:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1646:43:1649:5 | { ... } | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1646:43:1649:5 | { ... } | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1647:13:1647:13 | x | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1647:17:1647:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1647:17:1647:30 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1647:17:1647:31 | TryExpr | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1647:28:1647:29 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1648:9:1648:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1648:9:1648:22 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1648:9:1648:22 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1648:20:1648:21 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1653:46:1657:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1653:46:1657:5 | { ... } | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1653:46:1657:5 | { ... } | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1654:13:1654:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1654:13:1654:13 | x | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1654:17:1654:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1654:17:1654:30 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1654:28:1654:29 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1655:13:1655:13 | y | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1655:17:1655:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1655:17:1655:17 | x | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1655:17:1655:18 | TryExpr | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1656:9:1656:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1656:9:1656:22 | ...::Ok(...) | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1656:9:1656:22 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1656:20:1656:21 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1661:40:1666:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1661:40:1666:5 | { ... } | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1661:40:1666:5 | { ... } | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1662:13:1662:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1662:13:1662:13 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1662:13:1662:13 | x | T.T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1662:17:1662:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1662:17:1662:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | -| main.rs:1662:17:1662:42 | ...::Ok(...) | T.T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1662:28:1662:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1662:28:1662:41 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1662:39:1662:40 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1664:17:1664:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1664:17:1664:17 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1664:17:1664:17 | x | T.T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1664:17:1664:18 | TryExpr | | {EXTERNAL LOCATION} | Result | -| main.rs:1664:17:1664:18 | TryExpr | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1664:17:1664:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1664:24:1664:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:1664:24:1664:28 | \|...\| s | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:1665:9:1665:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1665:9:1665:22 | ...::Ok(...) | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1665:9:1665:22 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1665:20:1665:21 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1670:30:1670:34 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1670:30:1670:34 | input | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1670:30:1670:34 | input | T | main.rs:1670:20:1670:27 | T | -| main.rs:1670:69:1677:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1670:69:1677:5 | { ... } | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1670:69:1677:5 | { ... } | T | main.rs:1670:20:1670:27 | T | -| main.rs:1671:13:1671:17 | value | | main.rs:1670:20:1670:27 | T | -| main.rs:1671:21:1671:25 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1671:21:1671:25 | input | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1671:21:1671:25 | input | T | main.rs:1670:20:1670:27 | T | -| main.rs:1671:21:1671:26 | TryExpr | | main.rs:1670:20:1670:27 | T | -| main.rs:1672:22:1672:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1672:22:1672:38 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1672:22:1672:38 | ...::Ok(...) | T | main.rs:1670:20:1670:27 | T | -| main.rs:1672:22:1675:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1672:22:1675:10 | ... .and_then(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1672:33:1672:37 | value | | main.rs:1670:20:1670:27 | T | -| main.rs:1672:49:1675:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:1672:49:1675:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:1672:49:1675:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | -| main.rs:1672:49:1675:9 | \|...\| ... | dyn(Output).E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1672:53:1675:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1672:53:1675:9 | { ... } | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1673:22:1673:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1673:22:1673:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1673:22:1673:30 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1673:22:1673:30 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1673:22:1673:30 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1673:22:1673:30 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1674:13:1674:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1674:13:1674:34 | ...::Ok::<...>(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1676:9:1676:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1676:9:1676:23 | ...::Err(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1676:9:1676:23 | ...::Err(...) | T | main.rs:1670:20:1670:27 | T | -| main.rs:1676:21:1676:22 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1680:16:1696:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1681:9:1683:9 | if ... {...} | | file://:0:0:0:0 | () | -| main.rs:1681:16:1681:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1681:16:1681:33 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1681:16:1681:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1681:27:1681:32 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1681:37:1681:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1681:37:1681:52 | try_same_error(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1681:37:1681:52 | try_same_error(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1681:54:1683:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1682:22:1682:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1682:22:1682:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1682:22:1682:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1682:22:1682:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1682:22:1682:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1682:22:1682:35 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1682:30:1682:35 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1685:9:1687:9 | if ... {...} | | file://:0:0:0:0 | () | -| main.rs:1685:16:1685:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1685:16:1685:33 | ...::Ok(...) | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1685:16:1685:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1685:27:1685:32 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1685:37:1685:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1685:37:1685:55 | try_convert_error(...) | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1685:37:1685:55 | try_convert_error(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1685:57:1687:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1686:22:1686:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1686:22:1686:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1686:22:1686:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1686:22:1686:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1686:22:1686:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1686:22:1686:35 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1686:30:1686:35 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1689:9:1691:9 | if ... {...} | | file://:0:0:0:0 | () | -| main.rs:1689:16:1689:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1689:16:1689:33 | ...::Ok(...) | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1689:16:1689:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1689:27:1689:32 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1689:37:1689:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1689:37:1689:49 | try_chained(...) | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1689:37:1689:49 | try_chained(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1689:51:1691:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1690:22:1690:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1690:22:1690:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1690:22:1690:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1690:22:1690:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1690:22:1690:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1690:22:1690:35 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1690:30:1690:35 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:9:1695:9 | if ... {...} | | file://:0:0:0:0 | () | -| main.rs:1693:16:1693:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1693:16:1693:33 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:16:1693:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:27:1693:32 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:37:1693:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1693:37:1693:63 | try_complex(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:37:1693:63 | try_complex(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:49:1693:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1693:49:1693:62 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:49:1693:62 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:60:1693:61 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:65:1695:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1694:22:1694:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1694:22:1694:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1694:22:1694:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1694:22:1694:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1694:22:1694:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1694:22:1694:35 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1694:30:1694:35 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1700:16:1710:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1701:13:1701:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1701:22:1701:22 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1702:13:1702:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1702:17:1702:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1703:13:1703:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1703:17:1703:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1703:17:1703:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:1703:21:1703:21 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1704:13:1704:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1704:17:1704:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1704:17:1704:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | -| main.rs:1705:13:1705:13 | c | | {EXTERNAL LOCATION} | char | -| main.rs:1705:17:1705:19 | 'c' | | {EXTERNAL LOCATION} | char | -| main.rs:1706:13:1706:17 | hello | | file://:0:0:0:0 | & | -| main.rs:1706:13:1706:17 | hello | &T | {EXTERNAL LOCATION} | str | -| main.rs:1706:21:1706:27 | "Hello" | | file://:0:0:0:0 | & | -| main.rs:1706:21:1706:27 | "Hello" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1707:13:1707:13 | f | | {EXTERNAL LOCATION} | f64 | -| main.rs:1707:17:1707:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | -| main.rs:1708:13:1708:13 | t | | {EXTERNAL LOCATION} | bool | -| main.rs:1708:17:1708:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1709:13:1709:13 | f | | {EXTERNAL LOCATION} | bool | -| main.rs:1709:17:1709:21 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1715:16:1727:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1716:13:1716:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:1716:17:1716:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1716:17:1716:29 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1716:25:1716:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1717:13:1717:13 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:1717:17:1717:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1717:17:1717:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1717:25:1717:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1719:17:1719:17 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1720:13:1720:16 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1720:20:1720:21 | 34 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1720:20:1720:27 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1720:26:1720:27 | 33 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1721:9:1725:9 | if cond {...} else {...} | | file://:0:0:0:0 | () | -| main.rs:1721:12:1721:15 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1721:17:1723:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1722:17:1722:17 | z | | file://:0:0:0:0 | () | -| main.rs:1722:21:1722:27 | (...) | | file://:0:0:0:0 | () | -| main.rs:1722:22:1722:22 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1722:22:1722:26 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1722:26:1722:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1723:16:1725:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1724:13:1724:13 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1724:13:1724:17 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1724:17:1724:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1726:9:1726:9 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1740:30:1742:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1741:13:1741:31 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1741:23:1741:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1741:23:1741:23 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1741:29:1741:29 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1741:29:1741:29 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1748:16:1748:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1748:22:1748:24 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1748:41:1753:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1749:13:1752:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1750:20:1750:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1750:20:1750:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1750:20:1750:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1750:29:1750:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1750:29:1750:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1751:20:1751:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1751:20:1751:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1751:20:1751:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1751:29:1751:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1751:29:1751:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1758:23:1758:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1758:23:1758:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1758:34:1758:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1758:45:1761:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1759:13:1759:16 | self | | file://:0:0:0:0 | & | -| main.rs:1759:13:1759:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1759:13:1759:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1759:13:1759:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1759:23:1759:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1759:23:1759:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1760:13:1760:16 | self | | file://:0:0:0:0 | & | -| main.rs:1760:13:1760:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1760:13:1760:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1760:13:1760:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1760:23:1760:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1760:23:1760:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1766:16:1766:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1766:22:1766:24 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1766:41:1771:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1767:13:1770:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1768:20:1768:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1768:20:1768:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1768:20:1768:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1768:29:1768:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1768:29:1768:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1769:20:1769:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1769:20:1769:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1769:20:1769:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1769:29:1769:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1769:29:1769:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1776:23:1776:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1776:23:1776:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1776:34:1776:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1776:45:1779:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1777:13:1777:16 | self | | file://:0:0:0:0 | & | -| main.rs:1777:13:1777:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1777:13:1777:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1777:13:1777:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1777:23:1777:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1777:23:1777:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1778:13:1778:16 | self | | file://:0:0:0:0 | & | -| main.rs:1778:13:1778:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1778:13:1778:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1778:13:1778:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1778:23:1778:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1778:23:1778:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1784:16:1784:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1784:22:1784:24 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1784:41:1789:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1785:13:1788:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1786:20:1786:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1786:20:1786:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1786:20:1786:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1786:29:1786:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1786:29:1786:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1787:20:1787:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1787:20:1787:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1787:20:1787:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1787:29:1787:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1787:29:1787:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1793:23:1793:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1793:23:1793:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1793:34:1793:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1793:45:1796:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1794:13:1794:16 | self | | file://:0:0:0:0 | & | -| main.rs:1794:13:1794:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1794:13:1794:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1794:13:1794:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1794:23:1794:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1794:23:1794:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1795:13:1795:16 | self | | file://:0:0:0:0 | & | -| main.rs:1795:13:1795:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1795:13:1795:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1795:13:1795:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1795:23:1795:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1795:23:1795:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1801:16:1801:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1801:22:1801:24 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1801:41:1806:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1802:13:1805:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1803:20:1803:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1803:20:1803:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1803:20:1803:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1803:29:1803:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1803:29:1803:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1804:20:1804:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1804:20:1804:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1804:20:1804:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1804:29:1804:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1804:29:1804:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1810:23:1810:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1810:23:1810:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1810:34:1810:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1810:45:1813:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1811:13:1811:16 | self | | file://:0:0:0:0 | & | -| main.rs:1811:13:1811:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1811:13:1811:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1811:13:1811:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1811:23:1811:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1811:23:1811:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1812:13:1812:16 | self | | file://:0:0:0:0 | & | -| main.rs:1812:13:1812:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1812:13:1812:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1812:13:1812:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1812:23:1812:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1812:23:1812:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1818:16:1818:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1818:22:1818:24 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1818:41:1823:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1819:13:1822:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1820:20:1820:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1820:20:1820:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1820:20:1820:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1820:29:1820:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1820:29:1820:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1821:20:1821:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1821:20:1821:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1821:20:1821:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1821:29:1821:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1821:29:1821:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1827:23:1827:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1827:23:1827:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1827:34:1827:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1827:45:1830:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1828:13:1828:16 | self | | file://:0:0:0:0 | & | -| main.rs:1828:13:1828:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1828:13:1828:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1828:13:1828:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1828:23:1828:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1828:23:1828:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1829:13:1829:16 | self | | file://:0:0:0:0 | & | -| main.rs:1829:13:1829:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1829:13:1829:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1829:13:1829:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1829:23:1829:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1829:23:1829:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1835:19:1835:22 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1835:25:1835:27 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1835:44:1840:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1836:13:1839:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1837:20:1837:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1837:20:1837:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1837:20:1837:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1837:29:1837:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1837:29:1837:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1838:20:1838:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1838:20:1838:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1838:20:1838:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1838:29:1838:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1838:29:1838:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1844:26:1844:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1844:26:1844:34 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1844:37:1844:39 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1844:48:1847:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1845:13:1845:16 | self | | file://:0:0:0:0 | & | -| main.rs:1845:13:1845:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1845:13:1845:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1845:13:1845:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1845:23:1845:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1845:23:1845:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1846:13:1846:16 | self | | file://:0:0:0:0 | & | -| main.rs:1846:13:1846:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1846:13:1846:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1846:13:1846:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1846:23:1846:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1846:23:1846:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1852:18:1852:21 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1852:24:1852:26 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1852:43:1857:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1853:13:1856:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1854:20:1854:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1854:20:1854:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1854:20:1854:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1854:29:1854:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1854:29:1854:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1855:20:1855:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1855:20:1855:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1855:20:1855:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1855:29:1855:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1855:29:1855:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1861:25:1861:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1861:25:1861:33 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1861:36:1861:38 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1861:47:1864:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1862:13:1862:16 | self | | file://:0:0:0:0 | & | -| main.rs:1862:13:1862:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1862:13:1862:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1862:13:1862:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1862:23:1862:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1862:23:1862:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1863:13:1863:16 | self | | file://:0:0:0:0 | & | -| main.rs:1863:13:1863:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1863:13:1863:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1863:13:1863:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1863:23:1863:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1863:23:1863:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1869:19:1869:22 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1869:25:1869:27 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1869:44:1874:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1870:13:1873:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1871:20:1871:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1871:20:1871:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1871:20:1871:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1871:29:1871:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1871:29:1871:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1872:20:1872:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1872:20:1872:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1872:20:1872:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1872:29:1872:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1872:29:1872:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1878:26:1878:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1878:26:1878:34 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1878:37:1878:39 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1878:48:1881:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1879:13:1879:16 | self | | file://:0:0:0:0 | & | -| main.rs:1879:13:1879:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1879:13:1879:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1879:13:1879:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1879:23:1879:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1879:23:1879:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1880:13:1880:16 | self | | file://:0:0:0:0 | & | -| main.rs:1880:13:1880:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1880:13:1880:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1880:13:1880:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1880:23:1880:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1880:23:1880:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1886:16:1886:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1886:22:1886:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1886:40:1891:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1887:13:1890:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1888:20:1888:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1888:20:1888:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1888:20:1888:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1888:30:1888:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1889:20:1889:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1889:20:1889:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1889:20:1889:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1889:30:1889:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1895:23:1895:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1895:23:1895:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1895:34:1895:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1895:44:1898:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1896:13:1896:16 | self | | file://:0:0:0:0 | & | -| main.rs:1896:13:1896:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1896:13:1896:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1896:13:1896:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1896:24:1896:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1897:13:1897:16 | self | | file://:0:0:0:0 | & | -| main.rs:1897:13:1897:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1897:13:1897:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1897:13:1897:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1897:24:1897:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1903:16:1903:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1903:22:1903:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1903:40:1908:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1904:13:1907:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1905:20:1905:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1905:20:1905:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1905:20:1905:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1905:30:1905:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1906:20:1906:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1906:20:1906:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1906:20:1906:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1906:30:1906:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1912:23:1912:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1912:23:1912:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1912:34:1912:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1912:44:1915:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1913:13:1913:16 | self | | file://:0:0:0:0 | & | -| main.rs:1913:13:1913:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1913:13:1913:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:13:1913:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1913:24:1913:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1914:13:1914:16 | self | | file://:0:0:0:0 | & | -| main.rs:1914:13:1914:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1914:13:1914:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1914:13:1914:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1914:24:1914:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1920:16:1920:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1920:30:1925:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1921:13:1924:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1922:20:1922:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1922:21:1922:24 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1922:21:1922:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1923:20:1923:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1923:21:1923:24 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1923:21:1923:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1930:16:1930:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1930:30:1935:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1931:13:1934:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1932:20:1932:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1932:21:1932:24 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1932:21:1932:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1933:20:1933:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1933:21:1933:24 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1933:21:1933:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1939:15:1939:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1939:15:1939:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1939:22:1939:26 | other | | file://:0:0:0:0 | & | -| main.rs:1939:22:1939:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1939:44:1941:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1940:13:1940:16 | self | | file://:0:0:0:0 | & | -| main.rs:1940:13:1940:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1940:13:1940:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1940:13:1940:29 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1940:13:1940:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1940:23:1940:27 | other | | file://:0:0:0:0 | & | -| main.rs:1940:23:1940:27 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1940:23:1940:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1940:34:1940:37 | self | | file://:0:0:0:0 | & | -| main.rs:1940:34:1940:37 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1940:34:1940:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1940:34:1940:50 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1940:44:1940:48 | other | | file://:0:0:0:0 | & | -| main.rs:1940:44:1940:48 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1940:44:1940:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1943:15:1943:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1943:15:1943:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1943:22:1943:26 | other | | file://:0:0:0:0 | & | -| main.rs:1943:22:1943:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1943:44:1945:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1944:13:1944:16 | self | | file://:0:0:0:0 | & | -| main.rs:1944:13:1944:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1944:13:1944:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1944:13:1944:29 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1944:13:1944:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1944:23:1944:27 | other | | file://:0:0:0:0 | & | -| main.rs:1944:23:1944:27 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1944:23:1944:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1944:34:1944:37 | self | | file://:0:0:0:0 | & | -| main.rs:1944:34:1944:37 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1944:34:1944:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1944:34:1944:50 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1944:44:1944:48 | other | | file://:0:0:0:0 | & | -| main.rs:1944:44:1944:48 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1944:44:1944:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1949:24:1949:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1949:24:1949:28 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1949:31:1949:35 | other | | file://:0:0:0:0 | & | -| main.rs:1949:31:1949:35 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1949:75:1951:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1949:75:1951:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1950:13:1950:29 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:13:1950:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1950:13:1950:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1950:14:1950:17 | self | | file://:0:0:0:0 | & | -| main.rs:1950:14:1950:17 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1950:14:1950:19 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:14:1950:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:23:1950:26 | self | | file://:0:0:0:0 | & | -| main.rs:1950:23:1950:26 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1950:23:1950:28 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:43:1950:62 | &... | | file://:0:0:0:0 | & | -| main.rs:1950:43:1950:62 | &... | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:44:1950:62 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:45:1950:49 | other | | file://:0:0:0:0 | & | -| main.rs:1950:45:1950:49 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1950:45:1950:51 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:45:1950:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:55:1950:59 | other | | file://:0:0:0:0 | & | -| main.rs:1950:55:1950:59 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1950:55:1950:61 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1953:15:1953:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1953:15:1953:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1953:22:1953:26 | other | | file://:0:0:0:0 | & | -| main.rs:1953:22:1953:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1953:44:1955:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1954:13:1954:16 | self | | file://:0:0:0:0 | & | -| main.rs:1954:13:1954:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1954:13:1954:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1954:13:1954:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1954:13:1954:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1954:22:1954:26 | other | | file://:0:0:0:0 | & | -| main.rs:1954:22:1954:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1954:22:1954:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1954:33:1954:36 | self | | file://:0:0:0:0 | & | -| main.rs:1954:33:1954:36 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1954:33:1954:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1954:33:1954:48 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1954:42:1954:46 | other | | file://:0:0:0:0 | & | -| main.rs:1954:42:1954:46 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1954:42:1954:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1957:15:1957:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1957:15:1957:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1957:22:1957:26 | other | | file://:0:0:0:0 | & | -| main.rs:1957:22:1957:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1957:44:1959:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1958:13:1958:16 | self | | file://:0:0:0:0 | & | -| main.rs:1958:13:1958:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1958:13:1958:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1958:13:1958:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1958:13:1958:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1958:23:1958:27 | other | | file://:0:0:0:0 | & | -| main.rs:1958:23:1958:27 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1958:23:1958:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1958:34:1958:37 | self | | file://:0:0:0:0 | & | -| main.rs:1958:34:1958:37 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1958:34:1958:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1958:34:1958:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1958:44:1958:48 | other | | file://:0:0:0:0 | & | -| main.rs:1958:44:1958:48 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1958:44:1958:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1961:15:1961:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1961:15:1961:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1961:22:1961:26 | other | | file://:0:0:0:0 | & | -| main.rs:1961:22:1961:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1961:44:1963:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1962:13:1962:16 | self | | file://:0:0:0:0 | & | -| main.rs:1962:13:1962:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1962:13:1962:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1962:13:1962:28 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1962:13:1962:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1962:22:1962:26 | other | | file://:0:0:0:0 | & | -| main.rs:1962:22:1962:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1962:22:1962:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1962:33:1962:36 | self | | file://:0:0:0:0 | & | -| main.rs:1962:33:1962:36 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1962:33:1962:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1962:33:1962:48 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1962:42:1962:46 | other | | file://:0:0:0:0 | & | -| main.rs:1962:42:1962:46 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1962:42:1962:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1965:15:1965:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1965:15:1965:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1965:22:1965:26 | other | | file://:0:0:0:0 | & | -| main.rs:1965:22:1965:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1965:44:1967:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1966:13:1966:16 | self | | file://:0:0:0:0 | & | -| main.rs:1966:13:1966:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1966:13:1966:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1966:13:1966:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1966:13:1966:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1966:23:1966:27 | other | | file://:0:0:0:0 | & | -| main.rs:1966:23:1966:27 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1966:23:1966:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1966:34:1966:37 | self | | file://:0:0:0:0 | & | -| main.rs:1966:34:1966:37 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1966:34:1966:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1966:34:1966:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1966:44:1966:48 | other | | file://:0:0:0:0 | & | -| main.rs:1966:44:1966:48 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1966:44:1966:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1970:26:1970:26 | a | | main.rs:1970:18:1970:23 | T | -| main.rs:1970:32:1970:32 | b | | main.rs:1970:18:1970:23 | T | -| main.rs:1970:51:1972:5 | { ... } | | {EXTERNAL LOCATION} | Output | -| main.rs:1971:9:1971:9 | a | | main.rs:1970:18:1970:23 | T | -| main.rs:1971:9:1971:13 | ... + ... | | {EXTERNAL LOCATION} | Output | -| main.rs:1971:13:1971:13 | b | | main.rs:1970:18:1970:23 | T | -| main.rs:1974:16:2105:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1978:13:1978:18 | i64_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1978:22:1978:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1978:23:1978:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1978:23:1978:34 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1978:31:1978:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1979:13:1979:18 | i64_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1979:22:1979:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1979:23:1979:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1979:23:1979:34 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1979:31:1979:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1980:13:1980:18 | i64_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1980:22:1980:34 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1980:23:1980:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1980:23:1980:33 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1980:30:1980:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1981:13:1981:18 | i64_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1981:22:1981:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1981:23:1981:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1981:23:1981:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1981:31:1981:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1982:13:1982:18 | i64_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1982:22:1982:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1982:23:1982:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1982:23:1982:34 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1982:30:1982:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1983:13:1983:18 | i64_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1983:22:1983:37 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1983:23:1983:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1983:23:1983:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1983:32:1983:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1986:13:1986:19 | i64_add | | {EXTERNAL LOCATION} | i64 | -| main.rs:1986:23:1986:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1986:23:1986:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1986:31:1986:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1987:13:1987:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | -| main.rs:1987:23:1987:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1987:23:1987:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1987:31:1987:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1988:13:1988:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | -| main.rs:1988:23:1988:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1988:23:1988:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1988:31:1988:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1989:13:1989:19 | i64_div | | {EXTERNAL LOCATION} | i64 | -| main.rs:1989:23:1989:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1989:23:1989:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1989:31:1989:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1990:13:1990:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | -| main.rs:1990:23:1990:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1990:23:1990:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1990:31:1990:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1991:39:1991:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1991:45:1991:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1994:17:1994:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1994:34:1994:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1995:9:1995:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1995:9:1995:31 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1995:27:1995:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1997:17:1997:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1997:34:1997:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1998:9:1998:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1998:9:1998:31 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1998:27:1998:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2000:17:2000:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2000:34:2000:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2001:9:2001:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2001:9:2001:31 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:2001:27:2001:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2003:17:2003:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2003:34:2003:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2004:9:2004:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2004:9:2004:31 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:2004:27:2004:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2006:17:2006:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2006:34:2006:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2007:9:2007:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2007:9:2007:31 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:2007:27:2007:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2010:13:2010:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | -| main.rs:2010:26:2010:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2010:26:2010:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2010:34:2010:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2011:13:2011:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | -| main.rs:2011:25:2011:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2011:25:2011:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2011:33:2011:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2012:13:2012:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | -| main.rs:2012:26:2012:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2012:26:2012:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2012:34:2012:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2013:13:2013:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | -| main.rs:2013:23:2013:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2013:23:2013:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2013:32:2013:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2014:13:2014:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | -| main.rs:2014:23:2014:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2014:23:2014:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2014:32:2014:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2017:17:2017:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2017:37:2017:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2018:9:2018:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2018:9:2018:34 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:2018:30:2018:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2020:17:2020:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2020:36:2020:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2021:9:2021:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2021:9:2021:33 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:2021:29:2021:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2023:17:2023:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2023:37:2023:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2024:9:2024:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2024:9:2024:34 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:2024:30:2024:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2026:17:2026:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2026:34:2026:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2027:9:2027:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2027:9:2027:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:2027:28:2027:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2029:17:2029:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2029:34:2029:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2030:9:2030:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2030:9:2030:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:2030:28:2030:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2032:13:2032:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | -| main.rs:2032:23:2032:28 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2032:24:2032:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2033:13:2033:19 | i64_not | | {EXTERNAL LOCATION} | i64 | -| main.rs:2033:23:2033:28 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2033:24:2033:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2036:13:2036:14 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2036:18:2036:36 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2036:28:2036:28 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2036:28:2036:28 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2036:34:2036:34 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2036:34:2036:34 | 2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2037:13:2037:14 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2037:18:2037:36 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2037:28:2037:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2037:28:2037:28 | 3 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2037:34:2037:34 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2037:34:2037:34 | 4 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2040:13:2040:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:2040:23:2040:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2040:23:2040:30 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2040:29:2040:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2041:13:2041:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:2041:23:2041:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2041:23:2041:30 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2041:29:2041:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2042:13:2042:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:2042:23:2042:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2042:23:2042:29 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2042:28:2042:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2043:13:2043:19 | vec2_le | | {EXTERNAL LOCATION} | bool | -| main.rs:2043:23:2043:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2043:23:2043:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2043:29:2043:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2044:13:2044:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:2044:23:2044:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2044:23:2044:29 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2044:28:2044:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2045:13:2045:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:2045:23:2045:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2045:23:2045:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2045:29:2045:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2048:13:2048:20 | vec2_add | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2048:24:2048:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2048:24:2048:30 | ... + ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2048:29:2048:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2049:13:2049:20 | vec2_sub | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2049:24:2049:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2049:24:2049:30 | ... - ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2049:29:2049:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2050:13:2050:20 | vec2_mul | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2050:24:2050:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2050:24:2050:30 | ... * ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2050:29:2050:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2051:13:2051:20 | vec2_div | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2051:24:2051:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2051:24:2051:30 | ... / ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2051:29:2051:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2052:13:2052:20 | vec2_rem | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2052:24:2052:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2052:24:2052:30 | ... % ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2052:29:2052:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2055:17:2055:31 | vec2_add_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2055:35:2055:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2056:9:2056:23 | vec2_add_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2056:9:2056:29 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:2056:28:2056:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2058:17:2058:31 | vec2_sub_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2058:35:2058:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2059:9:2059:23 | vec2_sub_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2059:9:2059:29 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:2059:28:2059:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2061:17:2061:31 | vec2_mul_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2061:35:2061:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2062:9:2062:23 | vec2_mul_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2062:9:2062:29 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:2062:28:2062:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2064:17:2064:31 | vec2_div_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2064:35:2064:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2065:9:2065:23 | vec2_div_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2065:9:2065:29 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:2065:28:2065:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2067:17:2067:31 | vec2_rem_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2067:35:2067:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2068:9:2068:23 | vec2_rem_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2068:9:2068:29 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:2068:28:2068:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2071:13:2071:23 | vec2_bitand | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2071:27:2071:28 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2071:27:2071:33 | ... & ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2071:32:2071:33 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2072:13:2072:22 | vec2_bitor | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2072:26:2072:27 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2072:26:2072:32 | ... \| ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2072:31:2072:32 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2073:13:2073:23 | vec2_bitxor | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2073:27:2073:28 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2073:27:2073:33 | ... ^ ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2073:32:2073:33 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2074:13:2074:20 | vec2_shl | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2074:24:2074:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2074:24:2074:33 | ... << ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2074:30:2074:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2075:13:2075:20 | vec2_shr | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2075:24:2075:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2075:24:2075:33 | ... >> ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2075:30:2075:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2078:17:2078:34 | vec2_bitand_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2078:38:2078:39 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2079:9:2079:26 | vec2_bitand_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2079:9:2079:32 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:2079:31:2079:32 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2081:17:2081:33 | vec2_bitor_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2081:37:2081:38 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2082:9:2082:25 | vec2_bitor_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2082:9:2082:31 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:2082:30:2082:31 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2084:17:2084:34 | vec2_bitxor_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2084:38:2084:39 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2085:9:2085:26 | vec2_bitxor_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2085:9:2085:32 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:2085:31:2085:32 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2087:17:2087:31 | vec2_shl_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2087:35:2087:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2088:9:2088:23 | vec2_shl_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2088:9:2088:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:2088:29:2088:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2090:17:2090:31 | vec2_shr_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2090:35:2090:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2091:9:2091:23 | vec2_shr_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2091:9:2091:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:2091:29:2091:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2094:13:2094:20 | vec2_neg | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2094:24:2094:26 | - ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2094:25:2094:26 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2095:13:2095:20 | vec2_not | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2095:24:2095:26 | ! ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2095:25:2095:26 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2098:13:2098:24 | default_vec2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2098:28:2098:45 | ...::default(...) | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2099:13:2099:26 | vec2_zero_plus | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2099:30:2099:48 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2099:30:2099:63 | ... + ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2099:40:2099:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2099:40:2099:40 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2099:46:2099:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2099:46:2099:46 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2099:52:2099:63 | default_vec2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2103:13:2103:24 | default_vec2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2103:28:2103:45 | ...::default(...) | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2104:13:2104:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | -| main.rs:2104:30:2104:48 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2104:30:2104:64 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2104:40:2104:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2104:40:2104:40 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2104:46:2104:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2104:46:2104:46 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2104:53:2104:64 | default_vec2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2114:18:2114:21 | SelfParam | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2114:24:2114:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2117:25:2119:5 | { ... } | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2118:9:2118:10 | S1 | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2121:41:2123:5 | { ... } | | main.rs:2121:16:2121:39 | impl ... | -| main.rs:2122:9:2122:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2122:9:2122:20 | { ... } | Output | main.rs:2111:5:2111:14 | S1 | -| main.rs:2122:17:2122:18 | S1 | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2125:41:2127:5 | { ... } | | main.rs:2125:16:2125:39 | impl ... | -| main.rs:2126:9:2126:16 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2126:9:2126:16 | { ... } | Output | file://:0:0:0:0 | () | -| main.rs:2135:13:2135:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:2135:13:2135:42 | SelfParam | Ptr | file://:0:0:0:0 | & | -| main.rs:2135:13:2135:42 | SelfParam | Ptr.&T | main.rs:2129:5:2129:14 | S2 | -| main.rs:2136:13:2136:15 | _cx | | file://:0:0:0:0 | & | -| main.rs:2136:13:2136:15 | _cx | &T | {EXTERNAL LOCATION} | Context | -| main.rs:2137:44:2139:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:2137:44:2139:9 | { ... } | T | main.rs:2111:5:2111:14 | S1 | -| main.rs:2138:13:2138:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | -| main.rs:2138:13:2138:38 | ...::Ready(...) | T | main.rs:2111:5:2111:14 | S1 | -| main.rs:2138:36:2138:37 | S1 | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2142:41:2144:5 | { ... } | | main.rs:2142:16:2142:39 | impl ... | -| main.rs:2143:9:2143:10 | S2 | | main.rs:2129:5:2129:14 | S2 | -| main.rs:2143:9:2143:10 | S2 | | main.rs:2142:16:2142:39 | impl ... | -| main.rs:2146:22:2154:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2147:9:2147:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2147:9:2147:12 | f1(...) | Output | main.rs:2111:5:2111:14 | S1 | -| main.rs:2147:9:2147:18 | await ... | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2147:9:2147:22 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2148:9:2148:12 | f2(...) | | main.rs:2121:16:2121:39 | impl ... | -| main.rs:2148:9:2148:18 | await ... | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2148:9:2148:22 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2149:9:2149:12 | f3(...) | | main.rs:2125:16:2125:39 | impl ... | -| main.rs:2149:9:2149:18 | await ... | | file://:0:0:0:0 | () | -| main.rs:2150:9:2150:12 | f4(...) | | main.rs:2142:16:2142:39 | impl ... | -| main.rs:2150:9:2150:18 | await ... | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2150:9:2150:22 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2151:9:2151:10 | S2 | | main.rs:2129:5:2129:14 | S2 | -| main.rs:2151:9:2151:16 | await S2 | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2151:9:2151:20 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2152:13:2152:13 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2152:13:2152:13 | b | Output | main.rs:2111:5:2111:14 | S1 | -| main.rs:2152:17:2152:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2152:17:2152:28 | { ... } | Output | main.rs:2111:5:2111:14 | S1 | -| main.rs:2152:25:2152:26 | S1 | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2153:9:2153:9 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2153:9:2153:9 | b | Output | main.rs:2111:5:2111:14 | S1 | -| main.rs:2153:9:2153:15 | await b | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2153:9:2153:19 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2164:15:2164:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2164:15:2164:19 | SelfParam | &T | main.rs:2163:5:2165:5 | Self [trait Trait1] | -| main.rs:2164:22:2164:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2168:15:2168:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2168:15:2168:19 | SelfParam | &T | main.rs:2167:5:2169:5 | Self [trait Trait2] | -| main.rs:2168:22:2168:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2172:15:2172:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2172:15:2172:19 | SelfParam | &T | main.rs:2158:5:2159:14 | S1 | -| main.rs:2172:22:2172:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2176:15:2176:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2176:15:2176:19 | SelfParam | &T | main.rs:2158:5:2159:14 | S1 | -| main.rs:2176:22:2176:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2179:37:2181:5 | { ... } | | main.rs:2179:16:2179:35 | impl ... + ... | -| main.rs:2180:9:2180:10 | S1 | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2180:9:2180:10 | S1 | | main.rs:2179:16:2179:35 | impl ... + ... | -| main.rs:2184:18:2184:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2184:18:2184:22 | SelfParam | &T | main.rs:2183:5:2185:5 | Self [trait MyTrait] | -| main.rs:2188:18:2188:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2188:18:2188:22 | SelfParam | &T | main.rs:2158:5:2159:14 | S1 | -| main.rs:2188:31:2190:9 | { ... } | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2189:13:2189:14 | S2 | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2194:18:2194:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2194:18:2194:22 | SelfParam | &T | main.rs:2161:5:2161:22 | S3 | -| main.rs:2194:18:2194:22 | SelfParam | &T.T3 | main.rs:2193:10:2193:17 | T | -| main.rs:2194:30:2197:9 | { ... } | | main.rs:2193:10:2193:17 | T | -| main.rs:2195:17:2195:21 | S3(...) | | file://:0:0:0:0 | & | -| main.rs:2195:17:2195:21 | S3(...) | | main.rs:2161:5:2161:22 | S3 | -| main.rs:2195:17:2195:21 | S3(...) | &T | main.rs:2161:5:2161:22 | S3 | -| main.rs:2195:17:2195:21 | S3(...) | &T.T3 | main.rs:2193:10:2193:17 | T | -| main.rs:2195:25:2195:28 | self | | file://:0:0:0:0 | & | -| main.rs:2195:25:2195:28 | self | &T | main.rs:2161:5:2161:22 | S3 | -| main.rs:2195:25:2195:28 | self | &T.T3 | main.rs:2193:10:2193:17 | T | -| main.rs:2196:13:2196:21 | t.clone() | | main.rs:2193:10:2193:17 | T | -| main.rs:2200:45:2202:5 | { ... } | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2201:9:2201:10 | S1 | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2201:9:2201:10 | S1 | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2204:41:2204:41 | t | | main.rs:2204:26:2204:38 | B | -| main.rs:2204:52:2206:5 | { ... } | | main.rs:2204:23:2204:23 | A | -| main.rs:2205:9:2205:9 | t | | main.rs:2204:26:2204:38 | B | -| main.rs:2205:9:2205:17 | t.get_a() | | main.rs:2204:23:2204:23 | A | -| main.rs:2208:34:2208:34 | x | | main.rs:2208:24:2208:31 | T | -| main.rs:2208:59:2210:5 | { ... } | | main.rs:2208:43:2208:57 | impl ... | -| main.rs:2208:59:2210:5 | { ... } | impl(T) | main.rs:2208:24:2208:31 | T | -| main.rs:2209:9:2209:13 | S3(...) | | main.rs:2161:5:2161:22 | S3 | -| main.rs:2209:9:2209:13 | S3(...) | | main.rs:2208:43:2208:57 | impl ... | -| main.rs:2209:9:2209:13 | S3(...) | T3 | main.rs:2208:24:2208:31 | T | -| main.rs:2209:9:2209:13 | S3(...) | impl(T) | main.rs:2208:24:2208:31 | T | -| main.rs:2209:12:2209:12 | x | | main.rs:2208:24:2208:31 | T | -| main.rs:2212:34:2212:34 | x | | main.rs:2212:24:2212:31 | T | -| main.rs:2212:67:2214:5 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2212:67:2214:5 | { ... } | T | main.rs:2212:50:2212:64 | impl ... | -| main.rs:2212:67:2214:5 | { ... } | T.impl(T) | main.rs:2212:24:2212:31 | T | -| main.rs:2213:9:2213:19 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2213:9:2213:19 | Some(...) | T | main.rs:2161:5:2161:22 | S3 | -| main.rs:2213:9:2213:19 | Some(...) | T | main.rs:2212:50:2212:64 | impl ... | -| main.rs:2213:9:2213:19 | Some(...) | T.T3 | main.rs:2212:24:2212:31 | T | -| main.rs:2213:9:2213:19 | Some(...) | T.impl(T) | main.rs:2212:24:2212:31 | T | -| main.rs:2213:14:2213:18 | S3(...) | | main.rs:2161:5:2161:22 | S3 | -| main.rs:2213:14:2213:18 | S3(...) | | main.rs:2212:50:2212:64 | impl ... | -| main.rs:2213:14:2213:18 | S3(...) | T3 | main.rs:2212:24:2212:31 | T | -| main.rs:2213:14:2213:18 | S3(...) | impl(T) | main.rs:2212:24:2212:31 | T | -| main.rs:2213:17:2213:17 | x | | main.rs:2212:24:2212:31 | T | -| main.rs:2216:34:2216:34 | x | | main.rs:2216:24:2216:31 | T | -| main.rs:2216:78:2218:5 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2216:78:2218:5 | { ... } | 0(2) | main.rs:2216:44:2216:58 | impl ... | -| main.rs:2216:78:2218:5 | { ... } | 0(2).impl(T) | main.rs:2216:24:2216:31 | T | -| main.rs:2216:78:2218:5 | { ... } | 1(2) | main.rs:2216:61:2216:75 | impl ... | -| main.rs:2216:78:2218:5 | { ... } | 1(2).impl(T) | main.rs:2216:24:2216:31 | T | -| main.rs:2217:9:2217:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2217:9:2217:30 | TupleExpr | 0(2) | main.rs:2161:5:2161:22 | S3 | -| main.rs:2217:9:2217:30 | TupleExpr | 0(2) | main.rs:2216:44:2216:58 | impl ... | -| main.rs:2217:9:2217:30 | TupleExpr | 0(2).T3 | main.rs:2216:24:2216:31 | T | -| main.rs:2217:9:2217:30 | TupleExpr | 0(2).impl(T) | main.rs:2216:24:2216:31 | T | -| main.rs:2217:9:2217:30 | TupleExpr | 1(2) | main.rs:2161:5:2161:22 | S3 | -| main.rs:2217:9:2217:30 | TupleExpr | 1(2) | main.rs:2216:61:2216:75 | impl ... | -| main.rs:2217:9:2217:30 | TupleExpr | 1(2).T3 | main.rs:2216:24:2216:31 | T | -| main.rs:2217:9:2217:30 | TupleExpr | 1(2).impl(T) | main.rs:2216:24:2216:31 | T | -| main.rs:2217:10:2217:22 | S3(...) | | main.rs:2161:5:2161:22 | S3 | -| main.rs:2217:10:2217:22 | S3(...) | | main.rs:2216:44:2216:58 | impl ... | -| main.rs:2217:10:2217:22 | S3(...) | T3 | main.rs:2216:24:2216:31 | T | -| main.rs:2217:10:2217:22 | S3(...) | impl(T) | main.rs:2216:24:2216:31 | T | -| main.rs:2217:13:2217:13 | x | | main.rs:2216:24:2216:31 | T | -| main.rs:2217:13:2217:21 | x.clone() | | main.rs:2216:24:2216:31 | T | -| main.rs:2217:25:2217:29 | S3(...) | | main.rs:2161:5:2161:22 | S3 | -| main.rs:2217:25:2217:29 | S3(...) | | main.rs:2216:61:2216:75 | impl ... | -| main.rs:2217:25:2217:29 | S3(...) | T3 | main.rs:2216:24:2216:31 | T | -| main.rs:2217:25:2217:29 | S3(...) | impl(T) | main.rs:2216:24:2216:31 | T | -| main.rs:2217:28:2217:28 | x | | main.rs:2216:24:2216:31 | T | -| main.rs:2220:26:2220:26 | t | | main.rs:2220:29:2220:43 | impl ... | -| main.rs:2220:51:2222:5 | { ... } | | main.rs:2220:23:2220:23 | A | -| main.rs:2221:9:2221:9 | t | | main.rs:2220:29:2220:43 | impl ... | -| main.rs:2221:9:2221:17 | t.get_a() | | main.rs:2220:23:2220:23 | A | -| main.rs:2224:16:2238:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2225:13:2225:13 | x | | main.rs:2179:16:2179:35 | impl ... + ... | -| main.rs:2225:17:2225:20 | f1(...) | | main.rs:2179:16:2179:35 | impl ... + ... | -| main.rs:2226:9:2226:9 | x | | main.rs:2179:16:2179:35 | impl ... + ... | -| main.rs:2226:9:2226:14 | x.f1() | | file://:0:0:0:0 | () | -| main.rs:2227:9:2227:9 | x | | main.rs:2179:16:2179:35 | impl ... + ... | -| main.rs:2227:9:2227:14 | x.f2() | | file://:0:0:0:0 | () | -| main.rs:2228:13:2228:13 | a | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2228:17:2228:32 | get_a_my_trait(...) | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2229:13:2229:13 | b | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2229:17:2229:33 | uses_my_trait1(...) | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2229:32:2229:32 | a | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2230:13:2230:13 | a | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2230:17:2230:32 | get_a_my_trait(...) | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2231:13:2231:13 | c | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2231:17:2231:33 | uses_my_trait2(...) | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2231:32:2231:32 | a | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2232:13:2232:13 | d | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2232:17:2232:34 | uses_my_trait2(...) | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2232:32:2232:33 | S1 | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2233:13:2233:13 | e | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2233:17:2233:35 | get_a_my_trait2(...) | | main.rs:2208:43:2208:57 | impl ... | -| main.rs:2233:17:2233:35 | get_a_my_trait2(...) | impl(T) | main.rs:2158:5:2159:14 | S1 | -| main.rs:2233:17:2233:43 | ... .get_a() | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2233:33:2233:34 | S1 | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2236:13:2236:13 | f | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2236:17:2236:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2236:17:2236:35 | get_a_my_trait3(...) | T | main.rs:2212:50:2212:64 | impl ... | -| main.rs:2236:17:2236:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2158:5:2159:14 | S1 | -| main.rs:2236:17:2236:44 | ... .unwrap() | | main.rs:2212:50:2212:64 | impl ... | -| main.rs:2236:17:2236:44 | ... .unwrap() | impl(T) | main.rs:2158:5:2159:14 | S1 | -| main.rs:2236:17:2236:52 | ... .get_a() | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2236:33:2236:34 | S1 | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2237:13:2237:13 | g | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2237:17:2237:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2237:17:2237:35 | get_a_my_trait4(...) | 0(2) | main.rs:2216:44:2216:58 | impl ... | -| main.rs:2237:17:2237:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2158:5:2159:14 | S1 | -| main.rs:2237:17:2237:35 | get_a_my_trait4(...) | 1(2) | main.rs:2216:61:2216:75 | impl ... | -| main.rs:2237:17:2237:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2158:5:2159:14 | S1 | -| main.rs:2237:17:2237:37 | ... .0 | | main.rs:2216:44:2216:58 | impl ... | -| main.rs:2237:17:2237:37 | ... .0 | impl(T) | main.rs:2158:5:2159:14 | S1 | -| main.rs:2237:17:2237:45 | ... .get_a() | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2237:33:2237:34 | S1 | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2248:16:2248:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2248:16:2248:20 | SelfParam | &T | main.rs:2244:5:2245:13 | S | -| main.rs:2248:31:2250:9 | { ... } | | main.rs:2244:5:2245:13 | S | -| main.rs:2249:13:2249:13 | S | | main.rs:2244:5:2245:13 | S | -| main.rs:2259:26:2261:9 | { ... } | | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2259:26:2261:9 | { ... } | T | main.rs:2258:10:2258:10 | T | -| main.rs:2260:13:2260:38 | MyVec {...} | | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2260:13:2260:38 | MyVec {...} | T | main.rs:2258:10:2258:10 | T | -| main.rs:2260:27:2260:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2260:27:2260:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2260:27:2260:36 | ...::new(...) | T | main.rs:2258:10:2258:10 | T | -| main.rs:2263:17:2263:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2263:17:2263:25 | SelfParam | &T | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2263:17:2263:25 | SelfParam | &T.T | main.rs:2258:10:2258:10 | T | -| main.rs:2263:28:2263:32 | value | | main.rs:2258:10:2258:10 | T | -| main.rs:2263:38:2265:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2264:13:2264:16 | self | | file://:0:0:0:0 | & | -| main.rs:2264:13:2264:16 | self | &T | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2264:13:2264:16 | self | &T.T | main.rs:2258:10:2258:10 | T | -| main.rs:2264:13:2264:21 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2264:13:2264:21 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2264:13:2264:21 | self.data | T | main.rs:2258:10:2258:10 | T | -| main.rs:2264:13:2264:33 | ... .push(...) | | file://:0:0:0:0 | () | -| main.rs:2264:28:2264:32 | value | | main.rs:2258:10:2258:10 | T | -| main.rs:2272:18:2272:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2272:18:2272:22 | SelfParam | &T | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2272:18:2272:22 | SelfParam | &T.T | main.rs:2268:10:2268:10 | T | -| main.rs:2272:25:2272:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2272:56:2274:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2272:56:2274:9 | { ... } | &T | main.rs:2268:10:2268:10 | T | -| main.rs:2273:13:2273:29 | &... | | file://:0:0:0:0 | & | -| main.rs:2273:13:2273:29 | &... | &T | main.rs:2268:10:2268:10 | T | -| main.rs:2273:14:2273:17 | self | | file://:0:0:0:0 | & | -| main.rs:2273:14:2273:17 | self | &T | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2273:14:2273:17 | self | &T.T | main.rs:2268:10:2268:10 | T | -| main.rs:2273:14:2273:22 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2273:14:2273:22 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2273:14:2273:22 | self.data | T | main.rs:2268:10:2268:10 | T | -| main.rs:2273:14:2273:29 | ...[index] | | main.rs:2268:10:2268:10 | T | -| main.rs:2273:24:2273:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2277:22:2277:26 | slice | | file://:0:0:0:0 | & | -| main.rs:2277:22:2277:26 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2277:22:2277:26 | slice | &T.[T] | main.rs:2244:5:2245:13 | S | -| main.rs:2277:35:2279:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2278:13:2278:13 | x | | main.rs:2244:5:2245:13 | S | -| main.rs:2278:17:2278:21 | slice | | file://:0:0:0:0 | & | -| main.rs:2278:17:2278:21 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2278:17:2278:21 | slice | &T.[T] | main.rs:2244:5:2245:13 | S | -| main.rs:2278:17:2278:24 | slice[0] | | main.rs:2244:5:2245:13 | S | -| main.rs:2278:17:2278:30 | ... .foo() | | main.rs:2244:5:2245:13 | S | -| main.rs:2278:23:2278:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2281:37:2281:37 | a | | main.rs:2281:20:2281:34 | T | -| main.rs:2281:43:2281:43 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2284:5:2286:5 | { ... } | | {EXTERNAL LOCATION} | Output | -| main.rs:2285:9:2285:9 | a | | main.rs:2281:20:2281:34 | T | -| main.rs:2285:9:2285:12 | a[b] | | {EXTERNAL LOCATION} | Output | -| main.rs:2285:11:2285:11 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2288:16:2299:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2289:17:2289:19 | vec | | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2289:17:2289:19 | vec | T | main.rs:2244:5:2245:13 | S | -| main.rs:2289:23:2289:34 | ...::new(...) | | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2289:23:2289:34 | ...::new(...) | T | main.rs:2244:5:2245:13 | S | -| main.rs:2290:9:2290:11 | vec | | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2290:9:2290:11 | vec | T | main.rs:2244:5:2245:13 | S | -| main.rs:2290:9:2290:19 | vec.push(...) | | file://:0:0:0:0 | () | -| main.rs:2290:18:2290:18 | S | | main.rs:2244:5:2245:13 | S | -| main.rs:2291:9:2291:11 | vec | | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2291:9:2291:11 | vec | T | main.rs:2244:5:2245:13 | S | -| main.rs:2291:9:2291:14 | vec[0] | | main.rs:2244:5:2245:13 | S | -| main.rs:2291:9:2291:20 | ... .foo() | | main.rs:2244:5:2245:13 | S | -| main.rs:2291:13:2291:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2291:13:2291:13 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2293:13:2293:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:2293:13:2293:14 | xs | [T;...] | main.rs:2244:5:2245:13 | S | -| main.rs:2293:21:2293:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2293:26:2293:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2293:26:2293:28 | [...] | [T;...] | main.rs:2244:5:2245:13 | S | -| main.rs:2293:27:2293:27 | S | | main.rs:2244:5:2245:13 | S | -| main.rs:2294:13:2294:13 | x | | main.rs:2244:5:2245:13 | S | -| main.rs:2294:17:2294:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:2294:17:2294:18 | xs | [T;...] | main.rs:2244:5:2245:13 | S | -| main.rs:2294:17:2294:21 | xs[0] | | main.rs:2244:5:2245:13 | S | -| main.rs:2294:17:2294:27 | ... .foo() | | main.rs:2244:5:2245:13 | S | -| main.rs:2294:20:2294:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2296:29:2296:31 | vec | | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2296:29:2296:31 | vec | T | main.rs:2244:5:2245:13 | S | -| main.rs:2296:34:2296:34 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2296:34:2296:34 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2298:9:2298:26 | analyze_slice(...) | | file://:0:0:0:0 | () | -| main.rs:2298:23:2298:25 | &xs | | file://:0:0:0:0 | & | -| main.rs:2298:23:2298:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2298:23:2298:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2298:23:2298:25 | &xs | &T.[T;...] | main.rs:2244:5:2245:13 | S | -| main.rs:2298:23:2298:25 | &xs | &T.[T] | main.rs:2244:5:2245:13 | S | -| main.rs:2298:24:2298:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:2298:24:2298:25 | xs | [T;...] | main.rs:2244:5:2245:13 | S | -| main.rs:2303:16:2305:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2304:13:2304:13 | x | | {EXTERNAL LOCATION} | String | -| main.rs:2304:17:2304:46 | MacroExpr | | {EXTERNAL LOCATION} | String | -| main.rs:2304:25:2304:35 | "Hello, {}" | | file://:0:0:0:0 | & | -| main.rs:2304:25:2304:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2304:25:2304:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2304:25:2304:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2304:25:2304:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2304:25:2304:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2304:25:2304:45 | { ... } | | {EXTERNAL LOCATION} | String | -| main.rs:2304:38:2304:45 | "World!" | | file://:0:0:0:0 | & | -| main.rs:2304:38:2304:45 | "World!" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2313:19:2313:22 | SelfParam | | main.rs:2309:5:2314:5 | Self [trait MyAdd] | -| main.rs:2313:25:2313:27 | rhs | | main.rs:2309:17:2309:26 | Rhs | -| main.rs:2320:19:2320:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2320:25:2320:29 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2320:45:2322:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2321:13:2321:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2329:19:2329:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2329:25:2329:29 | value | | file://:0:0:0:0 | & | -| main.rs:2329:25:2329:29 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2329:46:2331:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2330:13:2330:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2330:14:2330:18 | value | | file://:0:0:0:0 | & | -| main.rs:2330:14:2330:18 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2338:19:2338:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2338:25:2338:29 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2338:46:2344:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2339:13:2343:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2339:13:2343:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2339:16:2339:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2339:22:2341:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2339:22:2341:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2340:17:2340:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2340:17:2340:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2341:20:2343:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2341:20:2343:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2342:17:2342:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2342:17:2342:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2353:19:2353:22 | SelfParam | | main.rs:2347:5:2347:19 | S | -| main.rs:2353:19:2353:22 | SelfParam | T | main.rs:2349:10:2349:17 | T | -| main.rs:2353:25:2353:29 | other | | main.rs:2347:5:2347:19 | S | -| main.rs:2353:25:2353:29 | other | T | main.rs:2349:10:2349:17 | T | -| main.rs:2353:54:2355:9 | { ... } | | main.rs:2347:5:2347:19 | S | -| main.rs:2353:54:2355:9 | { ... } | T | main.rs:2310:9:2310:20 | Output | -| main.rs:2354:13:2354:39 | S(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2354:13:2354:39 | S(...) | T | main.rs:2310:9:2310:20 | Output | -| main.rs:2354:15:2354:22 | (...) | | main.rs:2349:10:2349:17 | T | -| main.rs:2354:15:2354:38 | ... .my_add(...) | | main.rs:2310:9:2310:20 | Output | -| main.rs:2354:16:2354:19 | self | | main.rs:2347:5:2347:19 | S | -| main.rs:2354:16:2354:19 | self | T | main.rs:2349:10:2349:17 | T | -| main.rs:2354:16:2354:21 | self.0 | | main.rs:2349:10:2349:17 | T | -| main.rs:2354:31:2354:35 | other | | main.rs:2347:5:2347:19 | S | -| main.rs:2354:31:2354:35 | other | T | main.rs:2349:10:2349:17 | T | -| main.rs:2354:31:2354:37 | other.0 | | main.rs:2349:10:2349:17 | T | -| main.rs:2362:19:2362:22 | SelfParam | | main.rs:2347:5:2347:19 | S | -| main.rs:2362:19:2362:22 | SelfParam | T | main.rs:2358:10:2358:17 | T | -| main.rs:2362:25:2362:29 | other | | main.rs:2358:10:2358:17 | T | -| main.rs:2362:51:2364:9 | { ... } | | main.rs:2347:5:2347:19 | S | -| main.rs:2362:51:2364:9 | { ... } | T | main.rs:2310:9:2310:20 | Output | -| main.rs:2363:13:2363:37 | S(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2363:13:2363:37 | S(...) | T | main.rs:2310:9:2310:20 | Output | -| main.rs:2363:15:2363:22 | (...) | | main.rs:2358:10:2358:17 | T | -| main.rs:2363:15:2363:36 | ... .my_add(...) | | main.rs:2310:9:2310:20 | Output | -| main.rs:2363:16:2363:19 | self | | main.rs:2347:5:2347:19 | S | -| main.rs:2363:16:2363:19 | self | T | main.rs:2358:10:2358:17 | T | -| main.rs:2363:16:2363:21 | self.0 | | main.rs:2358:10:2358:17 | T | -| main.rs:2363:31:2363:35 | other | | main.rs:2358:10:2358:17 | T | -| main.rs:2374:19:2374:22 | SelfParam | | main.rs:2347:5:2347:19 | S | -| main.rs:2374:19:2374:22 | SelfParam | T | main.rs:2367:14:2367:14 | T | -| main.rs:2374:25:2374:29 | other | | file://:0:0:0:0 | & | -| main.rs:2374:25:2374:29 | other | &T | main.rs:2367:14:2367:14 | T | -| main.rs:2374:55:2376:9 | { ... } | | main.rs:2347:5:2347:19 | S | -| main.rs:2375:13:2375:37 | S(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2375:15:2375:22 | (...) | | main.rs:2367:14:2367:14 | T | -| main.rs:2375:16:2375:19 | self | | main.rs:2347:5:2347:19 | S | -| main.rs:2375:16:2375:19 | self | T | main.rs:2367:14:2367:14 | T | -| main.rs:2375:16:2375:21 | self.0 | | main.rs:2367:14:2367:14 | T | -| main.rs:2375:31:2375:35 | other | | file://:0:0:0:0 | & | -| main.rs:2375:31:2375:35 | other | &T | main.rs:2367:14:2367:14 | T | -| main.rs:2381:20:2381:24 | value | | main.rs:2379:18:2379:18 | T | -| main.rs:2386:20:2386:24 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2386:40:2388:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2387:13:2387:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2393:20:2393:24 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2393:41:2399:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2394:13:2398:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2394:13:2398:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2394:16:2394:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2394:22:2396:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2394:22:2396:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2395:17:2395:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2395:17:2395:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2396:20:2398:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2396:20:2398:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2397:17:2397:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2397:17:2397:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2404:21:2404:25 | value | | main.rs:2402:19:2402:19 | T | -| main.rs:2404:31:2404:31 | x | | main.rs:2402:5:2405:5 | Self [trait MyFrom2] | -| main.rs:2409:21:2409:25 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2409:33:2409:33 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2409:48:2411:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2410:13:2410:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2416:21:2416:25 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2416:34:2416:34 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2416:49:2422:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2417:13:2421:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2417:16:2417:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2417:22:2419:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2418:17:2418:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2419:20:2421:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2420:17:2420:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2427:15:2427:15 | x | | main.rs:2425:5:2431:5 | Self [trait MySelfTrait] | -| main.rs:2430:15:2430:15 | x | | main.rs:2425:5:2431:5 | Self [trait MySelfTrait] | -| main.rs:2435:15:2435:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2435:31:2437:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2436:13:2436:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2436:13:2436:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2436:17:2436:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2440:15:2440:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2440:32:2442:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2441:13:2441:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2441:13:2441:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2441:17:2441:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2447:15:2447:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2447:31:2449:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2448:13:2448:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2448:13:2448:13 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2452:15:2452:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2452:32:2454:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2453:13:2453:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2457:16:2482:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2458:13:2458:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2458:22:2458:23 | 73 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2458:22:2458:23 | 73 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2459:9:2459:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2459:9:2459:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2459:18:2459:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2460:9:2460:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2460:9:2460:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2460:18:2460:22 | &5i64 | | file://:0:0:0:0 | & | -| main.rs:2460:18:2460:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2460:19:2460:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2461:9:2461:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2461:9:2461:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2461:18:2461:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2463:9:2463:15 | S(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2463:9:2463:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2463:9:2463:31 | ... .my_add(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2463:11:2463:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2463:24:2463:30 | S(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2463:24:2463:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2463:26:2463:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2464:9:2464:15 | S(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2464:9:2464:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2464:11:2464:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2464:24:2464:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:9:2465:15 | S(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2465:9:2465:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:9:2465:29 | ... .my_add(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2465:11:2465:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:24:2465:28 | &3i64 | | file://:0:0:0:0 | & | -| main.rs:2465:24:2465:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:25:2465:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2467:13:2467:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2467:17:2467:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2467:30:2467:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2468:13:2468:13 | y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2468:17:2468:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2468:30:2468:33 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2469:13:2469:13 | z | | {EXTERNAL LOCATION} | i64 | -| main.rs:2469:22:2469:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2469:38:2469:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2470:9:2470:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2470:23:2470:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2470:30:2470:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2471:9:2471:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2471:23:2471:26 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2471:29:2471:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2472:9:2472:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2472:27:2472:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2472:34:2472:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2474:9:2474:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2474:17:2474:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2475:9:2475:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2475:17:2475:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2476:9:2476:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2476:18:2476:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2477:9:2477:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2477:18:2477:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2478:9:2478:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2478:25:2478:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2479:9:2479:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2479:25:2479:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2480:9:2480:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2480:25:2480:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2481:9:2481:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2481:25:2481:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2489:26:2491:9 | { ... } | | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2490:13:2490:25 | MyCallable {...} | | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2493:17:2493:21 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2493:17:2493:21 | SelfParam | &T | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2493:31:2495:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2494:13:2494:13 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2494:13:2494:13 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2498:16:2605:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2501:9:2501:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2501:13:2501:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2501:18:2501:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2501:18:2501:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2501:19:2501:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2501:22:2501:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2501:25:2501:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2501:28:2501:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2502:9:2502:44 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2502:18:2502:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2502:18:2502:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2502:18:2502:41 | ... .map(...) | | file://:0:0:0:0 | [] | -| main.rs:2502:19:2502:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2502:22:2502:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2502:25:2502:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2502:32:2502:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:2502:32:2502:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:2502:40:2502:40 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2502:43:2502:44 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2503:9:2503:41 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2503:13:2503:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2503:13:2503:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2503:18:2503:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2503:18:2503:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2503:18:2503:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | -| main.rs:2503:18:2503:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2503:19:2503:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2503:22:2503:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2503:25:2503:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2503:40:2503:41 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2505:13:2505:17 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2505:13:2505:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:13:2505:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2505:21:2505:31 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2505:21:2505:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:21:2505:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2505:22:2505:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2505:27:2505:27 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:27:2505:27 | 2 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2505:30:2505:30 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:30:2505:30 | 3 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2506:9:2506:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2506:13:2506:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:13:2506:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2506:18:2506:22 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2506:18:2506:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:18:2506:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2506:24:2506:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2508:13:2508:17 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2508:13:2508:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2508:21:2508:29 | [1u16; 3] | | file://:0:0:0:0 | [] | -| main.rs:2508:21:2508:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2508:22:2508:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2508:28:2508:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2509:9:2509:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2509:13:2509:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2509:18:2509:22 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2509:18:2509:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2509:24:2509:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2511:13:2511:17 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2511:13:2511:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2511:26:2511:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2511:31:2511:39 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2511:31:2511:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2511:31:2511:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2511:32:2511:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2511:32:2511:32 | 1 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2511:35:2511:35 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2511:35:2511:35 | 2 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2511:38:2511:38 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2511:38:2511:38 | 3 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2512:9:2512:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2512:13:2512:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2512:18:2512:22 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2512:18:2512:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2512:24:2512:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2514:13:2514:17 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2514:13:2514:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2514:26:2514:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2514:31:2514:36 | [1; 3] | | file://:0:0:0:0 | [] | -| main.rs:2514:31:2514:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2514:31:2514:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2514:32:2514:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2514:32:2514:32 | 1 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2514:35:2514:35 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2515:9:2515:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2515:13:2515:13 | u | | {EXTERNAL LOCATION} | u64 | -| main.rs:2515:18:2515:22 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2515:18:2515:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2515:24:2515:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2517:17:2517:24 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2517:17:2517:24 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2517:17:2517:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2517:28:2517:48 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2517:28:2517:48 | [...] | [T;...] | file://:0:0:0:0 | & | -| main.rs:2517:28:2517:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2517:29:2517:33 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2517:29:2517:33 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2517:36:2517:40 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2517:36:2517:40 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2517:43:2517:47 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2517:43:2517:47 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2518:9:2518:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2518:13:2518:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2518:13:2518:13 | s | | file://:0:0:0:0 | & | -| main.rs:2518:13:2518:13 | s | &T | file://:0:0:0:0 | & | -| main.rs:2518:13:2518:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2518:18:2518:26 | &strings1 | | file://:0:0:0:0 | & | -| main.rs:2518:18:2518:26 | &strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2518:18:2518:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2518:18:2518:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2518:19:2518:26 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2518:19:2518:26 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2518:19:2518:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2518:28:2518:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2519:9:2519:33 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2519:13:2519:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2519:13:2519:13 | s | | file://:0:0:0:0 | & | -| main.rs:2519:13:2519:13 | s | &T | file://:0:0:0:0 | & | -| main.rs:2519:13:2519:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2519:18:2519:30 | &mut strings1 | | file://:0:0:0:0 | & | -| main.rs:2519:18:2519:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2519:18:2519:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2519:18:2519:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2519:23:2519:30 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2519:23:2519:30 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2519:23:2519:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2519:32:2519:33 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2520:9:2520:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2520:13:2520:13 | s | | file://:0:0:0:0 | & | -| main.rs:2520:13:2520:13 | s | &T | {EXTERNAL LOCATION} | str | -| main.rs:2520:18:2520:25 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2520:18:2520:25 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2520:18:2520:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2520:27:2520:28 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2522:13:2522:20 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2522:13:2522:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2523:9:2527:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2523:9:2527:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2524:13:2524:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2524:26:2524:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2524:26:2524:30 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2525:13:2525:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2525:26:2525:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2525:26:2525:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2526:13:2526:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2526:26:2526:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2526:26:2526:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2528:9:2528:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2528:13:2528:13 | s | | {EXTERNAL LOCATION} | String | -| main.rs:2528:18:2528:25 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2528:18:2528:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2528:27:2528:28 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2530:13:2530:20 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2530:13:2530:20 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2530:13:2530:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2531:9:2535:9 | &... | | file://:0:0:0:0 | & | -| main.rs:2531:9:2535:9 | &... | &T | file://:0:0:0:0 | [] | -| main.rs:2531:9:2535:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2531:10:2535:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2531:10:2535:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2532:13:2532:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2532:26:2532:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2532:26:2532:30 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2533:13:2533:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2533:26:2533:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2533:26:2533:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2534:13:2534:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2534:26:2534:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2534:26:2534:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2536:9:2536:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2536:13:2536:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2536:13:2536:13 | s | | file://:0:0:0:0 | & | -| main.rs:2536:13:2536:13 | s | &T | {EXTERNAL LOCATION} | String | -| main.rs:2536:18:2536:25 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2536:18:2536:25 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2536:18:2536:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2536:27:2536:28 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2538:13:2538:21 | callables | | file://:0:0:0:0 | [] | -| main.rs:2538:13:2538:21 | callables | [T;...] | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2538:25:2538:81 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2538:25:2538:81 | [...] | [T;...] | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2538:26:2538:42 | ...::new(...) | | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2538:45:2538:61 | ...::new(...) | | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2538:64:2538:80 | ...::new(...) | | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2539:9:2543:9 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2539:13:2539:13 | c | | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2540:12:2540:20 | callables | | file://:0:0:0:0 | [] | -| main.rs:2540:12:2540:20 | callables | [T;...] | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2541:9:2543:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2542:17:2542:22 | result | | {EXTERNAL LOCATION} | i64 | -| main.rs:2542:26:2542:26 | c | | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2542:26:2542:33 | c.call() | | {EXTERNAL LOCATION} | i64 | -| main.rs:2547:9:2547:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2547:13:2547:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2547:13:2547:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2547:18:2547:18 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2547:18:2547:22 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2547:18:2547:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2547:21:2547:22 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2547:24:2547:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2548:9:2548:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2548:13:2548:13 | u | | {EXTERNAL LOCATION} | Range | -| main.rs:2548:13:2548:13 | u | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2548:13:2548:13 | u | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2548:18:2548:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2548:18:2548:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | -| main.rs:2548:18:2548:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2548:18:2548:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2548:19:2548:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2548:19:2548:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2548:19:2548:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2548:19:2548:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2548:24:2548:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2548:24:2548:25 | 10 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2548:28:2548:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2549:13:2549:17 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2549:13:2549:17 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2549:21:2549:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2549:21:2549:25 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2549:21:2549:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2549:24:2549:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2550:9:2550:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2550:13:2550:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2550:13:2550:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2550:18:2550:22 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2550:18:2550:22 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2550:24:2550:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2551:13:2551:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2551:26:2551:27 | .. | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2552:9:2552:51 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2552:13:2552:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2552:18:2552:48 | &... | | file://:0:0:0:0 | & | -| main.rs:2552:19:2552:36 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2552:19:2552:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | -| main.rs:2552:20:2552:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2552:26:2552:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2552:32:2552:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2552:38:2552:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2552:50:2552:51 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2554:13:2554:18 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2554:13:2554:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2555:9:2558:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | -| main.rs:2555:9:2558:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2556:20:2556:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2557:18:2557:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2559:9:2559:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2559:13:2559:13 | u | | {EXTERNAL LOCATION} | Item | -| main.rs:2559:13:2559:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2559:18:2559:23 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2559:18:2559:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2559:25:2559:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2563:26:2563:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2563:29:2563:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2563:32:2563:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2564:9:2564:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2564:24:2564:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2566:13:2566:18 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2566:13:2566:18 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2566:13:2566:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2566:32:2566:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2566:32:2566:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2566:32:2566:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2566:32:2566:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2566:32:2566:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2566:32:2566:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2566:33:2566:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2566:39:2566:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2566:42:2566:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2567:9:2567:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2567:13:2567:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2567:13:2567:13 | u | | file://:0:0:0:0 | & | -| main.rs:2567:18:2567:23 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2567:18:2567:23 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2567:18:2567:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2567:25:2567:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2569:22:2569:33 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2569:22:2569:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2569:22:2569:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2569:23:2569:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2569:29:2569:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2569:32:2569:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2570:9:2570:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2570:25:2570:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2572:13:2572:17 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2572:13:2572:17 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2572:13:2572:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2572:13:2572:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2572:21:2572:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2572:21:2572:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2572:21:2572:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2572:21:2572:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2572:31:2572:42 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2572:31:2572:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2572:31:2572:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2572:32:2572:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2572:38:2572:38 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2572:41:2572:41 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2573:9:2573:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2573:13:2573:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2573:13:2573:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2573:13:2573:13 | u | | file://:0:0:0:0 | & | -| main.rs:2573:18:2573:22 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2573:18:2573:22 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2573:18:2573:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2573:18:2573:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2573:24:2573:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2575:13:2575:17 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2575:13:2575:17 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2575:13:2575:17 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2575:13:2575:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2575:32:2575:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2575:32:2575:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2575:32:2575:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2575:32:2575:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2575:32:2575:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2575:32:2575:60 | ... .collect() | T | file://:0:0:0:0 | & | -| main.rs:2575:32:2575:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2575:33:2575:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2575:39:2575:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2575:42:2575:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2576:9:2576:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2576:13:2576:13 | u | | file://:0:0:0:0 | & | -| main.rs:2576:13:2576:13 | u | &T | {EXTERNAL LOCATION} | u64 | -| main.rs:2576:18:2576:22 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2576:18:2576:22 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2576:18:2576:22 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2576:18:2576:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2576:24:2576:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2578:17:2578:21 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2578:17:2578:21 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2578:17:2578:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2578:25:2578:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2578:25:2578:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2578:25:2578:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2579:9:2579:13 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2579:9:2579:13 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2579:9:2579:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2579:9:2579:23 | vals7.push(...) | | file://:0:0:0:0 | () | -| main.rs:2579:20:2579:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2580:9:2580:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2580:13:2580:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2580:13:2580:13 | u | | file://:0:0:0:0 | & | -| main.rs:2580:18:2580:22 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2580:18:2580:22 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2580:18:2580:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2580:24:2580:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2582:33:2582:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2582:36:2582:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2582:45:2582:45 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2582:48:2582:48 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2584:13:2584:13 | _ | | file://:0:0:0:0 | () | -| main.rs:2584:17:2587:9 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2584:36:2587:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2585:13:2586:13 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2585:29:2586:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2589:17:2589:20 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2589:17:2589:20 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2589:17:2589:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2589:17:2589:20 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2589:17:2589:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2589:17:2589:20 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2589:17:2589:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2589:24:2589:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2589:24:2589:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2589:24:2589:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2589:24:2589:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | -| main.rs:2589:24:2589:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2589:24:2589:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | -| main.rs:2589:24:2589:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2590:9:2590:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2590:9:2590:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2590:9:2590:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2590:9:2590:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2590:9:2590:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2590:9:2590:12 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2590:9:2590:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2590:9:2590:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2590:9:2590:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2590:9:2590:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2590:9:2590:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | -| main.rs:2590:9:2590:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2590:21:2590:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2590:24:2590:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2590:24:2590:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2590:24:2590:38 | ...::new(...) | T | file://:0:0:0:0 | & | -| main.rs:2590:24:2590:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2590:33:2590:37 | "one" | | file://:0:0:0:0 | & | -| main.rs:2590:33:2590:37 | "one" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2591:9:2591:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2591:9:2591:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2591:9:2591:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2591:9:2591:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2591:9:2591:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2591:9:2591:12 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2591:9:2591:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2591:9:2591:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2591:9:2591:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2591:9:2591:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2591:9:2591:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | -| main.rs:2591:9:2591:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2591:21:2591:21 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2591:24:2591:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2591:24:2591:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2591:24:2591:38 | ...::new(...) | T | file://:0:0:0:0 | & | -| main.rs:2591:24:2591:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2591:33:2591:37 | "two" | | file://:0:0:0:0 | & | -| main.rs:2591:33:2591:37 | "two" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2592:9:2592:33 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2592:13:2592:15 | key | | {EXTERNAL LOCATION} | Item | -| main.rs:2592:13:2592:15 | key | | file://:0:0:0:0 | & | -| main.rs:2592:13:2592:15 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2592:20:2592:23 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2592:20:2592:23 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2592:20:2592:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2592:20:2592:23 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2592:20:2592:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2592:20:2592:23 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2592:20:2592:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2592:20:2592:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | -| main.rs:2592:20:2592:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2592:20:2592:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2592:20:2592:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2592:20:2592:30 | map1.keys() | V.T | file://:0:0:0:0 | & | -| main.rs:2592:20:2592:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2592:32:2592:33 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2593:9:2593:37 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2593:13:2593:17 | value | | {EXTERNAL LOCATION} | Item | -| main.rs:2593:13:2593:17 | value | | file://:0:0:0:0 | & | -| main.rs:2593:13:2593:17 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2593:13:2593:17 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2593:13:2593:17 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2593:13:2593:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2593:22:2593:25 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2593:22:2593:25 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2593:22:2593:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2593:22:2593:25 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2593:22:2593:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2593:22:2593:25 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2593:22:2593:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2593:22:2593:34 | map1.values() | | {EXTERNAL LOCATION} | Values | -| main.rs:2593:22:2593:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2593:22:2593:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2593:22:2593:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2593:22:2593:34 | map1.values() | V.T | file://:0:0:0:0 | & | -| main.rs:2593:22:2593:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2593:36:2593:37 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2594:9:2594:42 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2594:13:2594:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2594:13:2594:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | -| main.rs:2594:13:2594:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2594:13:2594:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | -| main.rs:2594:13:2594:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2594:13:2594:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2594:13:2594:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | -| main.rs:2594:13:2594:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2594:14:2594:16 | key | | file://:0:0:0:0 | & | -| main.rs:2594:14:2594:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2594:19:2594:23 | value | | file://:0:0:0:0 | & | -| main.rs:2594:19:2594:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2594:19:2594:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2594:19:2594:23 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2594:19:2594:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2594:29:2594:32 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2594:29:2594:32 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2594:29:2594:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2594:29:2594:32 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2594:29:2594:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2594:29:2594:32 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2594:29:2594:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2594:29:2594:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | -| main.rs:2594:29:2594:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2594:29:2594:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2594:29:2594:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2594:29:2594:39 | map1.iter() | V.T | file://:0:0:0:0 | & | -| main.rs:2594:29:2594:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2594:41:2594:42 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2595:9:2595:36 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2595:13:2595:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2595:13:2595:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | -| main.rs:2595:13:2595:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2595:13:2595:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | -| main.rs:2595:13:2595:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2595:13:2595:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2595:13:2595:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | -| main.rs:2595:13:2595:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2595:14:2595:16 | key | | file://:0:0:0:0 | & | -| main.rs:2595:14:2595:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2595:19:2595:23 | value | | file://:0:0:0:0 | & | -| main.rs:2595:19:2595:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2595:19:2595:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2595:19:2595:23 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2595:19:2595:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2595:29:2595:33 | &map1 | | file://:0:0:0:0 | & | -| main.rs:2595:29:2595:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | -| main.rs:2595:29:2595:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | -| main.rs:2595:29:2595:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2595:29:2595:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | -| main.rs:2595:29:2595:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2595:29:2595:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | -| main.rs:2595:29:2595:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2595:30:2595:33 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2595:30:2595:33 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2595:30:2595:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2595:30:2595:33 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2595:30:2595:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2595:30:2595:33 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2595:30:2595:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2595:35:2595:36 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2599:17:2599:17 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2599:26:2599:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2599:26:2599:26 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2601:13:2601:13 | _ | | file://:0:0:0:0 | () | -| main.rs:2601:17:2604:9 | while ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2601:23:2601:23 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2601:23:2601:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2601:27:2601:28 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2601:27:2601:28 | 10 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2602:9:2604:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2603:13:2603:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2603:13:2603:18 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:2603:18:2603:18 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2615:40:2617:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2615:40:2617:9 | { ... } | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2615:40:2617:9 | { ... } | T.T | main.rs:2614:10:2614:19 | T | -| main.rs:2616:13:2616:16 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2616:13:2616:16 | None | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2616:13:2616:16 | None | T.T | main.rs:2614:10:2614:19 | T | -| main.rs:2619:30:2621:9 | { ... } | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2619:30:2621:9 | { ... } | T | main.rs:2614:10:2614:19 | T | -| main.rs:2620:13:2620:28 | S1(...) | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2620:13:2620:28 | S1(...) | T | main.rs:2614:10:2614:19 | T | -| main.rs:2620:16:2620:27 | ...::default(...) | | main.rs:2614:10:2614:19 | T | -| main.rs:2623:19:2623:22 | SelfParam | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2623:19:2623:22 | SelfParam | T | main.rs:2614:10:2614:19 | T | -| main.rs:2623:33:2625:9 | { ... } | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2623:33:2625:9 | { ... } | T | main.rs:2614:10:2614:19 | T | -| main.rs:2624:13:2624:16 | self | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2624:13:2624:16 | self | T | main.rs:2614:10:2614:19 | T | -| main.rs:2636:15:2636:15 | x | | main.rs:2636:12:2636:12 | T | -| main.rs:2636:26:2638:5 | { ... } | | main.rs:2636:12:2636:12 | T | -| main.rs:2637:9:2637:9 | x | | main.rs:2636:12:2636:12 | T | -| main.rs:2640:16:2662:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2641:13:2641:14 | x1 | | {EXTERNAL LOCATION} | Option | -| main.rs:2641:13:2641:14 | x1 | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2641:13:2641:14 | x1 | T.T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2641:34:2641:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2641:34:2641:48 | ...::assoc_fun(...) | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2641:34:2641:48 | ...::assoc_fun(...) | T.T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2642:13:2642:14 | x2 | | {EXTERNAL LOCATION} | Option | -| main.rs:2642:13:2642:14 | x2 | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2642:13:2642:14 | x2 | T.T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2642:18:2642:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2642:18:2642:38 | ...::assoc_fun(...) | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2642:18:2642:38 | ...::assoc_fun(...) | T.T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2643:13:2643:14 | x3 | | {EXTERNAL LOCATION} | Option | -| main.rs:2643:13:2643:14 | x3 | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2643:13:2643:14 | x3 | T.T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2643:18:2643:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2643:18:2643:32 | ...::assoc_fun(...) | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2643:18:2643:32 | ...::assoc_fun(...) | T.T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2644:13:2644:14 | x4 | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2644:13:2644:14 | x4 | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2644:18:2644:48 | ...::method(...) | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2644:18:2644:48 | ...::method(...) | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2644:35:2644:47 | ...::default(...) | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2644:35:2644:47 | ...::default(...) | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2645:13:2645:14 | x5 | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2645:13:2645:14 | x5 | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2645:18:2645:42 | ...::method(...) | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2645:18:2645:42 | ...::method(...) | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2645:29:2645:41 | ...::default(...) | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2645:29:2645:41 | ...::default(...) | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2646:13:2646:14 | x6 | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2646:13:2646:14 | x6 | T4 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2646:18:2646:45 | S4::<...>(...) | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2646:18:2646:45 | S4::<...>(...) | T4 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2646:27:2646:44 | ...::default(...) | | main.rs:2611:5:2612:14 | S2 | -| main.rs:2647:13:2647:14 | x7 | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2647:13:2647:14 | x7 | T4 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2647:18:2647:23 | S4(...) | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2647:18:2647:23 | S4(...) | T4 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2647:21:2647:22 | S2 | | main.rs:2611:5:2612:14 | S2 | -| main.rs:2648:13:2648:14 | x8 | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2648:13:2648:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2648:18:2648:22 | S4(...) | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2648:18:2648:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2648:21:2648:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2649:13:2649:14 | x9 | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2649:13:2649:14 | x9 | T4 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2649:18:2649:34 | S4(...) | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2649:18:2649:34 | S4(...) | T4 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2649:21:2649:33 | ...::default(...) | | main.rs:2611:5:2612:14 | S2 | -| main.rs:2650:13:2650:15 | x10 | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2650:13:2650:15 | x10 | T5 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2650:19:2653:9 | S5::<...> {...} | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2650:19:2653:9 | S5::<...> {...} | T5 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2652:20:2652:37 | ...::default(...) | | main.rs:2611:5:2612:14 | S2 | -| main.rs:2654:13:2654:15 | x11 | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2654:13:2654:15 | x11 | T5 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2654:19:2654:34 | S5 {...} | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2654:19:2654:34 | S5 {...} | T5 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2654:31:2654:32 | S2 | | main.rs:2611:5:2612:14 | S2 | -| main.rs:2655:13:2655:15 | x12 | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2655:13:2655:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2655:19:2655:33 | S5 {...} | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2655:19:2655:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2655:31:2655:31 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2656:13:2656:15 | x13 | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2656:13:2656:15 | x13 | T5 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2656:19:2659:9 | S5 {...} | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2656:19:2659:9 | S5 {...} | T5 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2658:20:2658:32 | ...::default(...) | | main.rs:2611:5:2612:14 | S2 | -| main.rs:2660:13:2660:15 | x14 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2660:19:2660:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2660:30:2660:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2661:13:2661:15 | x15 | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2661:13:2661:15 | x15 | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2661:19:2661:37 | ...::default(...) | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2661:19:2661:37 | ...::default(...) | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2670:35:2672:9 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2670:35:2672:9 | { ... } | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2670:35:2672:9 | { ... } | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2671:13:2671:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2671:13:2671:26 | TupleExpr | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2671:13:2671:26 | TupleExpr | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2671:14:2671:18 | S1 {...} | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2671:21:2671:25 | S1 {...} | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2673:16:2673:19 | SelfParam | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2673:22:2673:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2676:16:2710:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2677:13:2677:13 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2677:13:2677:13 | a | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2677:13:2677:13 | a | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2677:17:2677:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2677:17:2677:30 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2677:17:2677:30 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2678:17:2678:17 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2678:17:2678:17 | b | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2678:17:2678:17 | b | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2678:21:2678:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2678:21:2678:34 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2678:21:2678:34 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2679:13:2679:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2679:13:2679:18 | TuplePat | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2679:13:2679:18 | TuplePat | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2679:14:2679:14 | c | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2679:17:2679:17 | d | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2679:22:2679:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2679:22:2679:35 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2679:22:2679:35 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2680:13:2680:22 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2680:13:2680:22 | TuplePat | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2680:13:2680:22 | TuplePat | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2680:18:2680:18 | e | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2680:21:2680:21 | f | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2680:26:2680:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2680:26:2680:39 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2680:26:2680:39 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2681:13:2681:26 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2681:13:2681:26 | TuplePat | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2681:13:2681:26 | TuplePat | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2681:18:2681:18 | g | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2681:25:2681:25 | h | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2681:30:2681:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2681:30:2681:43 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2681:30:2681:43 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2683:9:2683:9 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2683:9:2683:9 | a | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2683:9:2683:9 | a | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2683:9:2683:11 | a.0 | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2683:9:2683:17 | ... .foo() | | file://:0:0:0:0 | () | -| main.rs:2684:9:2684:9 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2684:9:2684:9 | b | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2684:9:2684:9 | b | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2684:9:2684:11 | b.1 | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2684:9:2684:17 | ... .foo() | | file://:0:0:0:0 | () | -| main.rs:2685:9:2685:9 | c | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2685:9:2685:15 | c.foo() | | file://:0:0:0:0 | () | -| main.rs:2686:9:2686:9 | d | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2686:9:2686:15 | d.foo() | | file://:0:0:0:0 | () | -| main.rs:2687:9:2687:9 | e | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2687:9:2687:15 | e.foo() | | file://:0:0:0:0 | () | -| main.rs:2688:9:2688:9 | f | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2688:9:2688:15 | f.foo() | | file://:0:0:0:0 | () | -| main.rs:2689:9:2689:9 | g | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2689:9:2689:15 | g.foo() | | file://:0:0:0:0 | () | -| main.rs:2690:9:2690:9 | h | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2690:9:2690:15 | h.foo() | | file://:0:0:0:0 | () | -| main.rs:2695:13:2695:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2695:17:2695:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2696:13:2696:13 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2696:17:2696:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2697:13:2697:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2697:13:2697:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2697:13:2697:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2697:20:2697:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2697:20:2697:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2697:20:2697:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2697:21:2697:21 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2697:24:2697:24 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2698:13:2698:13 | i | | {EXTERNAL LOCATION} | i64 | -| main.rs:2698:22:2698:25 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2698:22:2698:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2698:22:2698:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2698:22:2698:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2699:13:2699:13 | j | | {EXTERNAL LOCATION} | bool | -| main.rs:2699:23:2699:26 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2699:23:2699:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2699:23:2699:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2699:23:2699:28 | pair.1 | | {EXTERNAL LOCATION} | bool | -| main.rs:2701:13:2701:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2701:13:2701:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:13:2701:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:20:2701:25 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2701:20:2701:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:20:2701:32 | ... .into() | | file://:0:0:0:0 | (T_2) | -| main.rs:2701:20:2701:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:20:2701:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:21:2701:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:24:2701:24 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2702:9:2705:9 | match pair { ... } | | file://:0:0:0:0 | () | -| main.rs:2702:15:2702:18 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2702:15:2702:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2702:15:2702:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2703:13:2703:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2703:13:2703:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2703:13:2703:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2703:14:2703:14 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2703:17:2703:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2703:23:2703:42 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:2703:30:2703:41 | "unexpected" | | file://:0:0:0:0 | & | -| main.rs:2703:30:2703:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2703:30:2703:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2703:30:2703:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2703:30:2703:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2703:30:2703:41 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2704:13:2704:13 | _ | | file://:0:0:0:0 | (T_2) | -| main.rs:2704:13:2704:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2704:13:2704:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2704:18:2704:35 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:2704:25:2704:34 | "expected" | | file://:0:0:0:0 | & | -| main.rs:2704:25:2704:34 | "expected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2704:25:2704:34 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2704:25:2704:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2704:25:2704:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2704:25:2704:34 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2706:13:2706:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2706:17:2706:20 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2706:17:2706:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2706:17:2706:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2706:17:2706:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2708:13:2708:13 | y | | file://:0:0:0:0 | & | -| main.rs:2708:13:2708:13 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2708:13:2708:13 | y | &T.0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2708:13:2708:13 | y | &T.1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2708:17:2708:31 | &... | | file://:0:0:0:0 | & | -| main.rs:2708:17:2708:31 | &... | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2708:17:2708:31 | &... | &T.0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2708:17:2708:31 | &... | &T.1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2708:18:2708:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2708:18:2708:31 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2708:18:2708:31 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2709:9:2709:9 | y | | file://:0:0:0:0 | & | -| main.rs:2709:9:2709:9 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2709:9:2709:9 | y | &T.0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2709:9:2709:9 | y | &T.1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2709:9:2709:11 | y.0 | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2709:9:2709:17 | ... .foo() | | file://:0:0:0:0 | () | -| main.rs:2715:27:2737:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2716:13:2716:23 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2716:13:2716:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2716:13:2716:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2716:27:2716:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2716:27:2716:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2716:27:2716:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2716:36:2716:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2719:9:2727:9 | match boxed_value { ... } | | file://:0:0:0:0 | () | -| main.rs:2719:15:2719:25 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2719:15:2719:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2719:15:2719:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2720:13:2720:19 | box 100 | | {EXTERNAL LOCATION} | Box | -| main.rs:2720:13:2720:19 | box 100 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2720:13:2720:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2720:17:2720:19 | 100 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2720:24:2722:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2721:26:2721:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | -| main.rs:2721:26:2721:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2721:26:2721:36 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2721:26:2721:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2721:26:2721:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2721:26:2721:36 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2723:13:2723:17 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2723:13:2723:17 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2723:13:2723:17 | box ... | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2723:22:2726:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2725:26:2725:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2725:26:2725:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2725:26:2725:51 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2725:26:2725:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2725:26:2725:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2725:26:2725:51 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2730:13:2730:22 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2730:13:2730:22 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2730:13:2730:22 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2730:13:2730:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2730:13:2730:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2730:26:2730:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2730:26:2730:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2730:26:2730:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2730:26:2730:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2730:26:2730:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2730:35:2730:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2730:35:2730:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2730:35:2730:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2730:44:2730:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2731:9:2736:9 | match nested_box { ... } | | file://:0:0:0:0 | () | -| main.rs:2731:15:2731:24 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2731:15:2731:24 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2731:15:2731:24 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2731:15:2731:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2731:15:2731:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2732:13:2732:21 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2732:13:2732:21 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2732:13:2732:21 | box ... | T | {EXTERNAL LOCATION} | Box | -| main.rs:2732:13:2732:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2732:13:2732:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2732:26:2735:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2734:26:2734:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2734:26:2734:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2734:26:2734:59 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2734:26:2734:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2734:26:2734:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2734:26:2734:59 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2746:36:2748:9 | { ... } | | main.rs:2743:5:2743:22 | Path | -| main.rs:2747:13:2747:19 | Path {...} | | main.rs:2743:5:2743:22 | Path | -| main.rs:2750:29:2750:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2750:29:2750:33 | SelfParam | &T | main.rs:2743:5:2743:22 | Path | -| main.rs:2750:59:2752:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:2750:59:2752:9 | { ... } | E | file://:0:0:0:0 | () | -| main.rs:2750:59:2752:9 | { ... } | T | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2751:13:2751:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2751:13:2751:30 | Ok(...) | E | file://:0:0:0:0 | () | -| main.rs:2751:13:2751:30 | Ok(...) | T | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2751:16:2751:29 | ...::new(...) | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2758:39:2760:9 | { ... } | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2759:13:2759:22 | PathBuf {...} | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2768:18:2768:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2768:18:2768:22 | SelfParam | &T | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2768:34:2772:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2768:34:2772:9 | { ... } | &T | main.rs:2743:5:2743:22 | Path | -| main.rs:2770:33:2770:43 | ...::new(...) | | main.rs:2743:5:2743:22 | Path | -| main.rs:2771:13:2771:17 | &path | | file://:0:0:0:0 | & | -| main.rs:2771:13:2771:17 | &path | &T | main.rs:2743:5:2743:22 | Path | -| main.rs:2771:14:2771:17 | path | | main.rs:2743:5:2743:22 | Path | -| main.rs:2775:16:2783:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2776:13:2776:17 | path1 | | main.rs:2743:5:2743:22 | Path | -| main.rs:2776:21:2776:31 | ...::new(...) | | main.rs:2743:5:2743:22 | Path | -| main.rs:2777:13:2777:17 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2777:13:2777:17 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2777:13:2777:17 | path2 | T | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2777:21:2777:25 | path1 | | main.rs:2743:5:2743:22 | Path | -| main.rs:2777:21:2777:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | -| main.rs:2777:21:2777:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | -| main.rs:2777:21:2777:40 | path1.canonicalize() | T | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2778:13:2778:17 | path3 | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2778:21:2778:25 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2778:21:2778:25 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2778:21:2778:25 | path2 | T | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2778:21:2778:34 | path2.unwrap() | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2780:13:2780:20 | pathbuf1 | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2780:24:2780:37 | ...::new(...) | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2781:24:2781:31 | pathbuf1 | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2788:14:2788:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2788:14:2788:18 | SelfParam | &T | main.rs:2787:5:2789:5 | Self [trait MyTrait] | -| main.rs:2795:14:2795:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2795:14:2795:18 | SelfParam | &T | main.rs:2791:5:2792:19 | S | -| main.rs:2795:14:2795:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2795:28:2797:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2796:13:2796:16 | self | | file://:0:0:0:0 | & | -| main.rs:2796:13:2796:16 | self | &T | main.rs:2791:5:2792:19 | S | -| main.rs:2796:13:2796:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2796:13:2796:18 | self.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2801:14:2801:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2801:14:2801:18 | SelfParam | &T | main.rs:2791:5:2792:19 | S | -| main.rs:2801:14:2801:18 | SelfParam | &T.T | main.rs:2791:5:2792:19 | S | -| main.rs:2801:14:2801:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2801:28:2803:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2802:13:2802:16 | self | | file://:0:0:0:0 | & | -| main.rs:2802:13:2802:16 | self | &T | main.rs:2791:5:2792:19 | S | -| main.rs:2802:13:2802:16 | self | &T.T | main.rs:2791:5:2792:19 | S | -| main.rs:2802:13:2802:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2802:13:2802:18 | self.0 | | main.rs:2791:5:2792:19 | S | -| main.rs:2802:13:2802:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2802:13:2802:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2807:15:2807:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2807:15:2807:19 | SelfParam | &T | main.rs:2791:5:2792:19 | S | -| main.rs:2807:15:2807:19 | SelfParam | &T.T | main.rs:2806:10:2806:16 | T | -| main.rs:2807:33:2809:9 | { ... } | | main.rs:2791:5:2792:19 | S | -| main.rs:2807:33:2809:9 | { ... } | T | main.rs:2791:5:2792:19 | S | -| main.rs:2807:33:2809:9 | { ... } | T.T | main.rs:2806:10:2806:16 | T | -| main.rs:2808:13:2808:24 | S(...) | | main.rs:2791:5:2792:19 | S | -| main.rs:2808:13:2808:24 | S(...) | T | main.rs:2791:5:2792:19 | S | -| main.rs:2808:13:2808:24 | S(...) | T.T | main.rs:2806:10:2806:16 | T | -| main.rs:2808:15:2808:23 | S(...) | | main.rs:2791:5:2792:19 | S | -| main.rs:2808:15:2808:23 | S(...) | T | main.rs:2806:10:2806:16 | T | -| main.rs:2808:17:2808:20 | self | | file://:0:0:0:0 | & | -| main.rs:2808:17:2808:20 | self | &T | main.rs:2791:5:2792:19 | S | -| main.rs:2808:17:2808:20 | self | &T.T | main.rs:2806:10:2806:16 | T | -| main.rs:2808:17:2808:22 | self.0 | | main.rs:2806:10:2806:16 | T | -| main.rs:2812:14:2812:14 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2812:48:2829:5 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2812:48:2829:5 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2812:48:2829:5 | { ... } | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2812:48:2829:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2813:13:2813:13 | x | | main.rs:2791:5:2792:19 | S | -| main.rs:2813:13:2813:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2813:17:2818:9 | if b {...} else {...} | | main.rs:2791:5:2792:19 | S | -| main.rs:2813:17:2818:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2813:20:2813:20 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2813:22:2816:9 | { ... } | | main.rs:2791:5:2792:19 | S | -| main.rs:2813:22:2816:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2814:17:2814:17 | y | | main.rs:2791:5:2792:19 | S | -| main.rs:2814:17:2814:17 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2814:21:2814:38 | ...::default(...) | | main.rs:2791:5:2792:19 | S | -| main.rs:2814:21:2814:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2815:13:2815:13 | y | | main.rs:2791:5:2792:19 | S | -| main.rs:2815:13:2815:13 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2816:16:2818:9 | { ... } | | main.rs:2791:5:2792:19 | S | -| main.rs:2816:16:2818:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2817:13:2817:16 | S(...) | | main.rs:2791:5:2792:19 | S | -| main.rs:2817:13:2817:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2817:15:2817:15 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2822:13:2822:13 | x | | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2822:13:2822:13 | x | | main.rs:2791:5:2792:19 | S | -| main.rs:2822:13:2822:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2822:13:2822:13 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2822:17:2822:20 | S(...) | | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2822:17:2822:20 | S(...) | | main.rs:2791:5:2792:19 | S | -| main.rs:2822:17:2822:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2822:17:2822:20 | S(...) | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2822:19:2822:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2823:9:2828:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | -| main.rs:2823:9:2828:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | -| main.rs:2823:9:2828:9 | if b {...} else {...} | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2823:9:2828:9 | if b {...} else {...} | T | main.rs:2791:5:2792:19 | S | -| main.rs:2823:9:2828:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2823:9:2828:9 | if b {...} else {...} | T.T | main.rs:2791:5:2792:19 | S | -| main.rs:2823:9:2828:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2823:9:2828:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2823:12:2823:12 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2823:14:2826:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2823:14:2826:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2823:14:2826:9 | { ... } | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2823:14:2826:9 | { ... } | T | main.rs:2791:5:2792:19 | S | -| main.rs:2823:14:2826:9 | { ... } | T.T | main.rs:2791:5:2792:19 | S | -| main.rs:2823:14:2826:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2823:14:2826:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2824:17:2824:17 | x | | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2824:17:2824:17 | x | | main.rs:2791:5:2792:19 | S | -| main.rs:2824:17:2824:17 | x | T | main.rs:2791:5:2792:19 | S | -| main.rs:2824:17:2824:17 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2824:17:2824:17 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2824:21:2824:21 | x | | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2824:21:2824:21 | x | | main.rs:2791:5:2792:19 | S | -| main.rs:2824:21:2824:21 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2824:21:2824:21 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2824:21:2824:26 | x.m2() | | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2824:21:2824:26 | x.m2() | | main.rs:2791:5:2792:19 | S | -| main.rs:2824:21:2824:26 | x.m2() | T | main.rs:2791:5:2792:19 | S | -| main.rs:2824:21:2824:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2824:21:2824:26 | x.m2() | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2825:13:2825:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2825:13:2825:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2825:13:2825:23 | ...::new(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2825:13:2825:23 | ...::new(...) | T | main.rs:2791:5:2792:19 | S | -| main.rs:2825:13:2825:23 | ...::new(...) | T.T | main.rs:2791:5:2792:19 | S | -| main.rs:2825:13:2825:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2825:13:2825:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2825:22:2825:22 | x | | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2825:22:2825:22 | x | | main.rs:2791:5:2792:19 | S | -| main.rs:2825:22:2825:22 | x | T | main.rs:2791:5:2792:19 | S | -| main.rs:2825:22:2825:22 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2825:22:2825:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2826:16:2828:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2826:16:2828:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2826:16:2828:9 | { ... } | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2826:16:2828:9 | { ... } | T | main.rs:2791:5:2792:19 | S | -| main.rs:2826:16:2828:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2826:16:2828:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2827:13:2827:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2827:13:2827:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2827:13:2827:23 | ...::new(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2827:13:2827:23 | ...::new(...) | T | main.rs:2791:5:2792:19 | S | -| main.rs:2827:13:2827:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2827:13:2827:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2827:22:2827:22 | x | | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2827:22:2827:22 | x | | main.rs:2791:5:2792:19 | S | -| main.rs:2827:22:2827:22 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2827:22:2827:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2833:22:2837:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2834:18:2834:18 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2834:33:2836:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2835:13:2835:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2835:13:2835:17 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:2835:17:2835:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2842:11:2842:14 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2842:30:2850:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2844:13:2844:13 | a | | file://:0:0:0:0 | () | -| main.rs:2844:17:2848:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2845:13:2847:13 | if cond {...} | | file://:0:0:0:0 | () | -| main.rs:2845:16:2845:19 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2845:21:2847:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2846:24:2846:25 | 12 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2849:9:2849:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2853:20:2860:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2856:26:2856:27 | 12 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2858:18:2858:26 | "b: {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:2858:18:2858:26 | "b: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2858:18:2858:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2858:18:2858:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2858:18:2858:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2858:18:2858:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2859:9:2859:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2862:20:2864:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2863:16:2863:16 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2867:11:2867:14 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2867:30:2875:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2868:13:2868:13 | a | | file://:0:0:0:0 | () | -| main.rs:2868:17:2872:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2869:13:2871:13 | if cond {...} | | file://:0:0:0:0 | () | -| main.rs:2869:16:2869:19 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2869:21:2871:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2870:24:2870:25 | 12 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2873:18:2873:26 | "a: {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:2873:18:2873:26 | "a: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2873:18:2873:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2873:18:2873:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2873:18:2873:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2873:18:2873:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2873:29:2873:29 | a | | file://:0:0:0:0 | () | -| main.rs:2874:9:2874:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2883:11:2918:1 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2884:5:2884:21 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2885:5:2885:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2886:5:2886:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2886:20:2886:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2886:41:2886:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2887:5:2887:35 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2888:5:2888:41 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2889:5:2889:45 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2890:5:2890:30 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2891:5:2891:33 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2892:5:2892:21 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2893:5:2893:27 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2894:5:2894:32 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2895:5:2895:23 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2896:5:2896:36 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2897:5:2897:35 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2898:5:2898:29 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2899:5:2899:23 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2900:5:2900:24 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2901:5:2901:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2902:5:2902:18 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2903:5:2903:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2903:5:2903:15 | ...::f(...) | Output | file://:0:0:0:0 | () | -| main.rs:2904:5:2904:19 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2905:5:2905:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2906:5:2906:14 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2907:5:2907:27 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2908:5:2908:15 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2909:5:2909:43 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2910:5:2910:15 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2911:5:2911:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2912:5:2912:23 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2913:5:2913:41 | ...::test_all_patterns(...) | | file://:0:0:0:0 | () | -| main.rs:2914:5:2914:49 | ...::box_patterns(...) | | file://:0:0:0:0 | () | -| main.rs:2915:5:2915:20 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2916:5:2916:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2916:5:2916:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2916:5:2916:20 | ...::f(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2916:5:2916:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2916:16:2916:19 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2917:5:2917:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:860:13:860:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:860:17:860:38 | call_trait_assoc_2(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:860:36:860:37 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:860:36:860:37 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:861:18:861:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:861:18:861:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:861:18:861:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:861:18:861:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:861:26:861:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:862:13:862:13 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:862:17:862:38 | call_trait_assoc_1(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:862:36:862:37 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:862:36:862:37 | y2 | T | main.rs:745:5:746:14 | S2 | +| main.rs:863:18:863:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:863:18:863:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:863:18:863:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:863:18:863:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:863:26:863:26 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:864:13:864:13 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:864:17:864:38 | call_trait_assoc_2(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:864:36:864:37 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:864:36:864:37 | y2 | T | main.rs:745:5:746:14 | S2 | +| main.rs:865:18:865:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:865:18:865:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:865:18:865:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:865:18:865:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:865:26:865:26 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:867:13:867:14 | x3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:867:13:867:14 | x3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:867:13:867:14 | x3 | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:867:18:869:9 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:867:18:869:9 | MyThing {...} | T | main.rs:738:5:741:5 | MyThing | +| main.rs:867:18:869:9 | MyThing {...} | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:868:16:868:32 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:868:16:868:32 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | +| main.rs:868:29:868:30 | S1 | | main.rs:743:5:744:14 | S1 | +| main.rs:870:13:870:14 | y3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:870:13:870:14 | y3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:870:13:870:14 | y3 | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:870:18:872:9 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:870:18:872:9 | MyThing {...} | T | main.rs:738:5:741:5 | MyThing | +| main.rs:870:18:872:9 | MyThing {...} | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:871:16:871:32 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:871:16:871:32 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | +| main.rs:871:29:871:30 | S2 | | main.rs:745:5:746:14 | S2 | +| main.rs:874:13:874:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:874:17:874:39 | call_trait_thing_m1(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:874:37:874:38 | x3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:874:37:874:38 | x3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:874:37:874:38 | x3 | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:875:18:875:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:875:18:875:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:875:18:875:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:875:18:875:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:875:26:875:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:876:13:876:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:876:17:876:41 | call_trait_thing_m1_2(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:876:39:876:40 | x3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:876:39:876:40 | x3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:876:39:876:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:877:18:877:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:877:18:877:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:877:18:877:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:877:18:877:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:877:26:877:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:878:13:878:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:878:17:878:41 | call_trait_thing_m1_3(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:878:39:878:40 | x3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:878:39:878:40 | x3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:878:39:878:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:879:18:879:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:879:18:879:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:879:18:879:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:879:18:879:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:879:26:879:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:880:13:880:13 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:880:17:880:39 | call_trait_thing_m1(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:880:37:880:38 | y3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:880:37:880:38 | y3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:880:37:880:38 | y3 | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:881:18:881:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:881:18:881:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:881:18:881:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:881:18:881:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:881:26:881:26 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:882:13:882:13 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:882:17:882:41 | call_trait_thing_m1_2(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:882:39:882:40 | y3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:882:39:882:40 | y3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:882:39:882:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:883:18:883:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:883:18:883:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:883:18:883:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:883:18:883:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:883:26:883:26 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:884:13:884:13 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:884:17:884:41 | call_trait_thing_m1_3(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:884:39:884:40 | y3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:884:39:884:40 | y3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:884:39:884:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:885:18:885:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:885:18:885:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:885:18:885:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:885:18:885:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:885:26:885:26 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:886:13:886:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:886:17:886:26 | ...::m2(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:886:24:886:25 | S1 | | main.rs:743:5:744:14 | S1 | +| main.rs:887:13:887:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:887:22:887:31 | ...::m2(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:887:29:887:30 | S2 | | main.rs:745:5:746:14 | S2 | +| main.rs:898:19:898:22 | SelfParam | | main.rs:892:5:895:5 | Wrapper | +| main.rs:898:19:898:22 | SelfParam | A | main.rs:897:10:897:10 | A | +| main.rs:898:30:900:9 | { ... } | | main.rs:897:10:897:10 | A | +| main.rs:899:13:899:16 | self | | main.rs:892:5:895:5 | Wrapper | +| main.rs:899:13:899:16 | self | A | main.rs:897:10:897:10 | A | +| main.rs:899:13:899:22 | self.field | | main.rs:897:10:897:10 | A | +| main.rs:907:15:907:18 | SelfParam | | main.rs:903:5:917:5 | Self [trait MyTrait] | +| main.rs:909:15:909:18 | SelfParam | | main.rs:903:5:917:5 | Self [trait MyTrait] | +| main.rs:913:9:916:9 | { ... } | | main.rs:904:9:904:28 | AssociatedType | +| main.rs:914:13:914:16 | self | | main.rs:903:5:917:5 | Self [trait MyTrait] | +| main.rs:914:13:914:21 | self.m1() | | main.rs:904:9:904:28 | AssociatedType | +| main.rs:915:13:915:43 | ...::default(...) | | main.rs:904:9:904:28 | AssociatedType | +| main.rs:923:19:923:23 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:923:19:923:23 | SelfParam | TRef | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | +| main.rs:923:26:923:26 | a | | main.rs:923:16:923:16 | A | +| main.rs:925:22:925:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:925:22:925:26 | SelfParam | TRef | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | +| main.rs:925:29:925:29 | a | | main.rs:925:19:925:19 | A | +| main.rs:925:35:925:35 | b | | main.rs:925:19:925:19 | A | +| main.rs:925:75:928:9 | { ... } | | main.rs:920:9:920:52 | GenericAssociatedType | +| main.rs:926:13:926:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:926:13:926:16 | self | TRef | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | +| main.rs:926:13:926:23 | self.put(...) | | main.rs:920:9:920:52 | GenericAssociatedType | +| main.rs:926:22:926:22 | a | | main.rs:925:19:925:19 | A | +| main.rs:927:13:927:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:927:13:927:16 | self | TRef | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | +| main.rs:927:13:927:23 | self.put(...) | | main.rs:920:9:920:52 | GenericAssociatedType | +| main.rs:927:22:927:22 | b | | main.rs:925:19:925:19 | A | +| main.rs:936:21:936:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:936:21:936:25 | SelfParam | TRef | main.rs:931:5:941:5 | Self [trait TraitMultipleAssoc] | +| main.rs:938:20:938:24 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:938:20:938:24 | SelfParam | TRef | main.rs:931:5:941:5 | Self [trait TraitMultipleAssoc] | +| main.rs:940:20:940:24 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:940:20:940:24 | SelfParam | TRef | main.rs:931:5:941:5 | Self [trait TraitMultipleAssoc] | +| main.rs:956:15:956:18 | SelfParam | | main.rs:943:5:944:13 | S | +| main.rs:956:45:958:9 | { ... } | | main.rs:949:5:950:14 | AT | +| main.rs:957:13:957:14 | AT | | main.rs:949:5:950:14 | AT | +| main.rs:966:19:966:23 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:966:19:966:23 | SelfParam | TRef | main.rs:943:5:944:13 | S | +| main.rs:966:26:966:26 | a | | main.rs:966:16:966:16 | A | +| main.rs:966:46:968:9 | { ... } | | main.rs:892:5:895:5 | Wrapper | +| main.rs:966:46:968:9 | { ... } | A | main.rs:966:16:966:16 | A | +| main.rs:967:13:967:32 | Wrapper {...} | | main.rs:892:5:895:5 | Wrapper | +| main.rs:967:13:967:32 | Wrapper {...} | A | main.rs:966:16:966:16 | A | +| main.rs:967:30:967:30 | a | | main.rs:966:16:966:16 | A | +| main.rs:975:15:975:18 | SelfParam | | main.rs:946:5:947:14 | S2 | +| main.rs:975:45:977:9 | { ... } | | main.rs:892:5:895:5 | Wrapper | +| main.rs:975:45:977:9 | { ... } | A | main.rs:946:5:947:14 | S2 | +| main.rs:976:13:976:35 | Wrapper {...} | | main.rs:892:5:895:5 | Wrapper | +| main.rs:976:13:976:35 | Wrapper {...} | A | main.rs:946:5:947:14 | S2 | +| main.rs:976:30:976:33 | self | | main.rs:946:5:947:14 | S2 | +| main.rs:982:30:984:9 | { ... } | | main.rs:892:5:895:5 | Wrapper | +| main.rs:982:30:984:9 | { ... } | A | main.rs:946:5:947:14 | S2 | +| main.rs:983:13:983:33 | Wrapper {...} | | main.rs:892:5:895:5 | Wrapper | +| main.rs:983:13:983:33 | Wrapper {...} | A | main.rs:946:5:947:14 | S2 | +| main.rs:983:30:983:31 | S2 | | main.rs:946:5:947:14 | S2 | +| main.rs:989:22:989:26 | thing | | main.rs:989:10:989:19 | T | +| main.rs:990:9:990:13 | thing | | main.rs:989:10:989:19 | T | +| main.rs:997:21:997:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:997:21:997:25 | SelfParam | TRef | main.rs:949:5:950:14 | AT | +| main.rs:997:34:999:9 | { ... } | | main.rs:949:5:950:14 | AT | +| main.rs:998:13:998:14 | AT | | main.rs:949:5:950:14 | AT | +| main.rs:1001:20:1001:24 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1001:20:1001:24 | SelfParam | TRef | main.rs:949:5:950:14 | AT | +| main.rs:1001:43:1003:9 | { ... } | | main.rs:943:5:944:13 | S | +| main.rs:1002:13:1002:13 | S | | main.rs:943:5:944:13 | S | +| main.rs:1005:20:1005:24 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1005:20:1005:24 | SelfParam | TRef | main.rs:949:5:950:14 | AT | +| main.rs:1005:43:1007:9 | { ... } | | main.rs:946:5:947:14 | S2 | +| main.rs:1006:13:1006:14 | S2 | | main.rs:946:5:947:14 | S2 | +| main.rs:1010:16:1038:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1011:13:1011:14 | x1 | | main.rs:943:5:944:13 | S | +| main.rs:1011:18:1011:18 | S | | main.rs:943:5:944:13 | S | +| main.rs:1013:18:1013:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1013:18:1013:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1013:18:1013:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1013:18:1013:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1013:26:1013:27 | x1 | | main.rs:943:5:944:13 | S | +| main.rs:1013:26:1013:32 | x1.m1() | | main.rs:949:5:950:14 | AT | +| main.rs:1015:13:1015:14 | x2 | | main.rs:943:5:944:13 | S | +| main.rs:1015:18:1015:18 | S | | main.rs:943:5:944:13 | S | +| main.rs:1017:13:1017:13 | y | | main.rs:949:5:950:14 | AT | +| main.rs:1017:17:1017:18 | x2 | | main.rs:943:5:944:13 | S | +| main.rs:1017:17:1017:23 | x2.m2() | | main.rs:949:5:950:14 | AT | +| main.rs:1018:18:1018:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1018:18:1018:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1018:18:1018:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1018:18:1018:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1018:26:1018:26 | y | | main.rs:949:5:950:14 | AT | +| main.rs:1020:13:1020:14 | x3 | | main.rs:943:5:944:13 | S | +| main.rs:1020:18:1020:18 | S | | main.rs:943:5:944:13 | S | +| main.rs:1022:18:1022:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1022:18:1022:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1022:18:1022:43 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1022:18:1022:43 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1022:26:1022:27 | x3 | | main.rs:943:5:944:13 | S | +| main.rs:1022:26:1022:34 | x3.put(...) | | main.rs:892:5:895:5 | Wrapper | +| main.rs:1022:26:1022:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | +| main.rs:1022:26:1022:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1022:33:1022:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1025:18:1025:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1025:18:1025:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1025:18:1025:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1025:18:1025:49 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1025:26:1025:27 | x3 | | main.rs:943:5:944:13 | S | +| main.rs:1025:26:1025:40 | x3.putTwo(...) | | main.rs:892:5:895:5 | Wrapper | +| main.rs:1025:26:1025:40 | x3.putTwo(...) | A | main.rs:963:36:963:50 | AssociatedParam | +| main.rs:1025:26:1025:49 | ... .unwrap() | | main.rs:963:36:963:50 | AssociatedParam | +| main.rs:1025:36:1025:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1025:39:1025:39 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1027:20:1027:20 | S | | main.rs:943:5:944:13 | S | +| main.rs:1028:18:1028:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1028:18:1028:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1028:18:1028:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1028:18:1028:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1030:13:1030:14 | x5 | | main.rs:946:5:947:14 | S2 | +| main.rs:1030:18:1030:19 | S2 | | main.rs:946:5:947:14 | S2 | +| main.rs:1031:18:1031:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1031:18:1031:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1031:18:1031:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1031:18:1031:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1031:26:1031:27 | x5 | | main.rs:946:5:947:14 | S2 | +| main.rs:1031:26:1031:32 | x5.m1() | | main.rs:892:5:895:5 | Wrapper | +| main.rs:1031:26:1031:32 | x5.m1() | A | main.rs:946:5:947:14 | S2 | +| main.rs:1032:13:1032:14 | x6 | | main.rs:946:5:947:14 | S2 | +| main.rs:1032:18:1032:19 | S2 | | main.rs:946:5:947:14 | S2 | +| main.rs:1033:18:1033:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1033:18:1033:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1033:18:1033:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1033:18:1033:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1033:26:1033:27 | x6 | | main.rs:946:5:947:14 | S2 | +| main.rs:1033:26:1033:32 | x6.m2() | | main.rs:892:5:895:5 | Wrapper | +| main.rs:1033:26:1033:32 | x6.m2() | A | main.rs:946:5:947:14 | S2 | +| main.rs:1035:13:1035:22 | assoc_zero | | main.rs:949:5:950:14 | AT | +| main.rs:1035:26:1035:27 | AT | | main.rs:949:5:950:14 | AT | +| main.rs:1035:26:1035:38 | AT.get_zero() | | main.rs:949:5:950:14 | AT | +| main.rs:1036:13:1036:21 | assoc_one | | main.rs:943:5:944:13 | S | +| main.rs:1036:25:1036:26 | AT | | main.rs:949:5:950:14 | AT | +| main.rs:1036:25:1036:36 | AT.get_one() | | main.rs:943:5:944:13 | S | +| main.rs:1037:13:1037:21 | assoc_two | | main.rs:946:5:947:14 | S2 | +| main.rs:1037:25:1037:26 | AT | | main.rs:949:5:950:14 | AT | +| main.rs:1037:25:1037:36 | AT.get_two() | | main.rs:946:5:947:14 | S2 | +| main.rs:1045:19:1045:23 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1045:19:1045:23 | SelfParam | TRef | main.rs:1042:5:1046:5 | Self [trait Supertrait] | +| main.rs:1045:26:1045:32 | content | | main.rs:1043:9:1043:21 | Content | +| main.rs:1050:24:1050:28 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1050:24:1050:28 | SelfParam | TRef | main.rs:1048:5:1051:5 | Self [trait Subtrait] | +| main.rs:1059:23:1059:27 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1059:23:1059:27 | SelfParam | TRef | main.rs:1053:5:1063:5 | Self [trait Subtrait2] | +| main.rs:1059:30:1059:31 | c1 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1059:49:1059:50 | c2 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1059:68:1062:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1060:13:1060:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1060:13:1060:16 | self | TRef | main.rs:1053:5:1063:5 | Self [trait Subtrait2] | +| main.rs:1060:13:1060:27 | self.insert(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1060:25:1060:26 | c1 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1061:13:1061:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1061:13:1061:16 | self | TRef | main.rs:1053:5:1063:5 | Self [trait Subtrait2] | +| main.rs:1061:13:1061:27 | self.insert(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1061:25:1061:26 | c2 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1069:19:1069:23 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1069:19:1069:23 | SelfParam | TRef | main.rs:1065:5:1065:24 | MyType | +| main.rs:1069:19:1069:23 | SelfParam | TRef.T | main.rs:1067:10:1067:10 | T | +| main.rs:1069:26:1069:33 | _content | | main.rs:1067:10:1067:10 | T | +| main.rs:1069:51:1071:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1070:22:1070:42 | "Inserting content: \\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1070:22:1070:42 | "Inserting content: \\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1070:22:1070:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1070:22:1070:42 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1076:24:1076:28 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1076:24:1076:28 | SelfParam | TRef | main.rs:1065:5:1065:24 | MyType | +| main.rs:1076:24:1076:28 | SelfParam | TRef.T | main.rs:1074:10:1074:17 | T | +| main.rs:1076:48:1078:9 | { ... } | | main.rs:1074:10:1074:17 | T | +| main.rs:1077:13:1077:19 | (...) | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1077:13:1077:19 | (...) | T | main.rs:1074:10:1074:17 | T | +| main.rs:1077:13:1077:21 | ... .0 | | main.rs:1074:10:1074:17 | T | +| main.rs:1077:13:1077:29 | ... .clone() | | main.rs:1074:10:1074:17 | T | +| main.rs:1077:14:1077:18 | * ... | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1077:14:1077:18 | * ... | T | main.rs:1074:10:1074:17 | T | +| main.rs:1077:15:1077:18 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1077:15:1077:18 | self | TRef | main.rs:1065:5:1065:24 | MyType | +| main.rs:1077:15:1077:18 | self | TRef.T | main.rs:1074:10:1074:17 | T | +| main.rs:1081:33:1081:36 | item | | {EXTERNAL LOCATION} | & | +| main.rs:1081:33:1081:36 | item | TRef | main.rs:1081:20:1081:30 | T | +| main.rs:1081:57:1083:5 | { ... } | | main.rs:1043:9:1043:21 | Content | +| main.rs:1082:9:1082:12 | item | | {EXTERNAL LOCATION} | & | +| main.rs:1082:9:1082:12 | item | TRef | main.rs:1081:20:1081:30 | T | +| main.rs:1082:9:1082:26 | item.get_content() | | main.rs:1043:9:1043:21 | Content | +| main.rs:1085:35:1085:38 | item | | {EXTERNAL LOCATION} | & | +| main.rs:1085:35:1085:38 | item | TRef | main.rs:1085:21:1085:32 | T | +| main.rs:1085:45:1085:46 | c1 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1085:61:1085:62 | c2 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1085:77:1085:78 | c3 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1085:93:1088:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1086:9:1086:12 | item | | {EXTERNAL LOCATION} | & | +| main.rs:1086:9:1086:12 | item | TRef | main.rs:1085:21:1085:32 | T | +| main.rs:1086:9:1086:23 | item.insert(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1086:21:1086:22 | c1 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1087:9:1087:12 | item | | {EXTERNAL LOCATION} | & | +| main.rs:1087:9:1087:12 | item | TRef | main.rs:1085:21:1085:32 | T | +| main.rs:1087:9:1087:31 | item.insert_two(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1087:25:1087:26 | c2 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1087:29:1087:30 | c3 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1090:15:1096:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1091:13:1091:17 | item1 | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1091:13:1091:17 | item1 | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1091:21:1091:33 | MyType(...) | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1091:21:1091:33 | MyType(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1091:28:1091:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1092:25:1092:29 | item1 | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1092:25:1092:29 | item1 | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1094:13:1094:17 | item2 | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1094:13:1094:17 | item2 | T | {EXTERNAL LOCATION} | bool | +| main.rs:1094:21:1094:32 | MyType(...) | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1094:21:1094:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | +| main.rs:1094:28:1094:31 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1095:37:1095:42 | &item2 | | {EXTERNAL LOCATION} | & | +| main.rs:1095:37:1095:42 | &item2 | TRef | main.rs:1065:5:1065:24 | MyType | +| main.rs:1095:37:1095:42 | &item2 | TRef.T | {EXTERNAL LOCATION} | bool | +| main.rs:1095:38:1095:42 | item2 | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1095:38:1095:42 | item2 | T | {EXTERNAL LOCATION} | bool | +| main.rs:1112:15:1112:18 | SelfParam | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1112:15:1112:18 | SelfParam | A | main.rs:1111:10:1111:10 | T | +| main.rs:1112:26:1117:9 | { ... } | | main.rs:1111:10:1111:10 | T | +| main.rs:1113:13:1116:13 | match self { ... } | | main.rs:1111:10:1111:10 | T | +| main.rs:1113:19:1113:22 | self | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1113:19:1113:22 | self | A | main.rs:1111:10:1111:10 | T | +| main.rs:1114:17:1114:29 | ...::C1(...) | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1114:17:1114:29 | ...::C1(...) | A | main.rs:1111:10:1111:10 | T | +| main.rs:1114:28:1114:28 | a | | main.rs:1111:10:1111:10 | T | +| main.rs:1114:34:1114:34 | a | | main.rs:1111:10:1111:10 | T | +| main.rs:1115:17:1115:32 | ...::C2 {...} | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1115:17:1115:32 | ...::C2 {...} | A | main.rs:1111:10:1111:10 | T | +| main.rs:1115:30:1115:30 | a | | main.rs:1111:10:1111:10 | T | +| main.rs:1115:37:1115:37 | a | | main.rs:1111:10:1111:10 | T | +| main.rs:1120:16:1126:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1121:13:1121:13 | x | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1121:13:1121:13 | x | A | main.rs:1106:5:1107:14 | S1 | +| main.rs:1121:17:1121:30 | ...::C1(...) | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1121:17:1121:30 | ...::C1(...) | A | main.rs:1106:5:1107:14 | S1 | +| main.rs:1121:28:1121:29 | S1 | | main.rs:1106:5:1107:14 | S1 | +| main.rs:1122:13:1122:13 | y | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1122:13:1122:13 | y | A | main.rs:1108:5:1109:14 | S2 | +| main.rs:1122:17:1122:36 | ...::C2 {...} | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1122:17:1122:36 | ...::C2 {...} | A | main.rs:1108:5:1109:14 | S2 | +| main.rs:1122:33:1122:34 | S2 | | main.rs:1108:5:1109:14 | S2 | +| main.rs:1124:18:1124:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1124:18:1124:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1124:18:1124:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1124:18:1124:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1124:26:1124:26 | x | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1124:26:1124:26 | x | A | main.rs:1106:5:1107:14 | S1 | +| main.rs:1124:26:1124:31 | x.m1() | | main.rs:1106:5:1107:14 | S1 | +| main.rs:1125:18:1125:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1125:18:1125:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1125:18:1125:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1125:18:1125:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1125:26:1125:26 | y | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1125:26:1125:26 | y | A | main.rs:1108:5:1109:14 | S2 | +| main.rs:1125:26:1125:31 | y.m1() | | main.rs:1108:5:1109:14 | S2 | +| main.rs:1147:15:1147:18 | SelfParam | | main.rs:1145:5:1148:5 | Self [trait MyTrait1] | +| main.rs:1152:15:1152:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1152:15:1152:19 | SelfParam | TRef | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | +| main.rs:1155:9:1161:9 | { ... } | | main.rs:1150:20:1150:22 | Tr2 | +| main.rs:1156:13:1160:13 | if ... {...} else {...} | | main.rs:1150:20:1150:22 | Tr2 | +| main.rs:1156:16:1156:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1156:16:1156:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1156:20:1156:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1156:22:1158:13 | { ... } | | main.rs:1150:20:1150:22 | Tr2 | +| main.rs:1157:17:1157:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1157:17:1157:20 | self | TRef | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | +| main.rs:1157:17:1157:25 | self.m1() | | main.rs:1150:20:1150:22 | Tr2 | +| main.rs:1158:20:1160:13 | { ... } | | main.rs:1150:20:1150:22 | Tr2 | +| main.rs:1159:17:1159:31 | ...::m1(...) | | main.rs:1150:20:1150:22 | Tr2 | +| main.rs:1159:26:1159:30 | * ... | | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | +| main.rs:1159:27:1159:30 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1159:27:1159:30 | self | TRef | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | +| main.rs:1166:15:1166:18 | SelfParam | | main.rs:1164:5:1176:5 | Self [trait MyTrait3] | +| main.rs:1169:9:1175:9 | { ... } | | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1170:13:1174:13 | if ... {...} else {...} | | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1170:16:1170:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1170:16:1170:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1170:20:1170:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1170:22:1172:13 | { ... } | | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1171:17:1171:20 | self | | main.rs:1164:5:1176:5 | Self [trait MyTrait3] | +| main.rs:1171:17:1171:25 | self.m2() | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1171:17:1171:25 | self.m2() | A | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1171:17:1171:27 | ... .a | | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1172:20:1174:13 | { ... } | | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1173:17:1173:31 | ...::m2(...) | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1173:17:1173:31 | ...::m2(...) | A | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1173:17:1173:33 | ... .a | | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1173:26:1173:30 | &self | | {EXTERNAL LOCATION} | & | +| main.rs:1173:26:1173:30 | &self | TRef | main.rs:1164:5:1176:5 | Self [trait MyTrait3] | +| main.rs:1173:27:1173:30 | self | | main.rs:1164:5:1176:5 | Self [trait MyTrait3] | +| main.rs:1180:15:1180:18 | SelfParam | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1180:15:1180:18 | SelfParam | A | main.rs:1178:10:1178:10 | T | +| main.rs:1180:26:1182:9 | { ... } | | main.rs:1178:10:1178:10 | T | +| main.rs:1181:13:1181:16 | self | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1181:13:1181:16 | self | A | main.rs:1178:10:1178:10 | T | +| main.rs:1181:13:1181:18 | self.a | | main.rs:1178:10:1178:10 | T | +| main.rs:1189:15:1189:18 | SelfParam | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1189:15:1189:18 | SelfParam | A | main.rs:1187:10:1187:10 | T | +| main.rs:1189:35:1191:9 | { ... } | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1189:35:1191:9 | { ... } | A | main.rs:1187:10:1187:10 | T | +| main.rs:1190:13:1190:33 | MyThing {...} | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1190:13:1190:33 | MyThing {...} | A | main.rs:1187:10:1187:10 | T | +| main.rs:1190:26:1190:29 | self | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1190:26:1190:29 | self | A | main.rs:1187:10:1187:10 | T | +| main.rs:1190:26:1190:31 | self.a | | main.rs:1187:10:1187:10 | T | +| main.rs:1198:44:1198:44 | x | | main.rs:1198:26:1198:41 | T2 | +| main.rs:1198:57:1200:5 | { ... } | | main.rs:1198:22:1198:23 | T1 | +| main.rs:1199:9:1199:9 | x | | main.rs:1198:26:1198:41 | T2 | +| main.rs:1199:9:1199:14 | x.m1() | | main.rs:1198:22:1198:23 | T1 | +| main.rs:1202:56:1202:56 | x | | main.rs:1202:39:1202:53 | T | +| main.rs:1202:62:1206:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1204:13:1204:13 | a | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1204:13:1204:13 | a | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1204:17:1204:17 | x | | main.rs:1202:39:1202:53 | T | +| main.rs:1204:17:1204:22 | x.m1() | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1204:17:1204:22 | x.m1() | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1205:18:1205:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1205:18:1205:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1205:18:1205:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1205:18:1205:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1205:26:1205:26 | a | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1205:26:1205:26 | a | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1208:16:1232:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1209:13:1209:13 | x | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1209:13:1209:13 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1209:17:1209:33 | MyThing {...} | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1209:17:1209:33 | MyThing {...} | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1209:30:1209:31 | S1 | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1210:13:1210:13 | y | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1210:13:1210:13 | y | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1210:17:1210:33 | MyThing {...} | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1210:17:1210:33 | MyThing {...} | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1210:30:1210:31 | S2 | | main.rs:1142:5:1143:14 | S2 | +| main.rs:1212:18:1212:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1212:18:1212:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1212:18:1212:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1212:18:1212:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1212:26:1212:26 | x | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1212:26:1212:26 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1212:26:1212:31 | x.m1() | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1213:18:1213:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1213:18:1213:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1213:18:1213:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1213:18:1213:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1213:26:1213:26 | y | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1213:26:1213:26 | y | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1213:26:1213:31 | y.m1() | | main.rs:1142:5:1143:14 | S2 | +| main.rs:1215:13:1215:13 | x | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1215:13:1215:13 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1215:17:1215:33 | MyThing {...} | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1215:17:1215:33 | MyThing {...} | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1215:30:1215:31 | S1 | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1216:13:1216:13 | y | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1216:13:1216:13 | y | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1216:17:1216:33 | MyThing {...} | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1216:17:1216:33 | MyThing {...} | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1216:30:1216:31 | S2 | | main.rs:1142:5:1143:14 | S2 | +| main.rs:1218:18:1218:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1218:18:1218:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1218:18:1218:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1218:18:1218:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1218:26:1218:26 | x | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1218:26:1218:26 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1218:26:1218:31 | x.m2() | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1219:18:1219:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1219:18:1219:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1219:18:1219:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1219:18:1219:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1219:26:1219:26 | y | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1219:26:1219:26 | y | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1219:26:1219:31 | y.m2() | | main.rs:1142:5:1143:14 | S2 | +| main.rs:1221:13:1221:13 | x | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1221:13:1221:13 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1221:17:1221:34 | MyThing2 {...} | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1221:17:1221:34 | MyThing2 {...} | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1221:31:1221:32 | S1 | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1222:13:1222:13 | y | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1222:13:1222:13 | y | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1222:17:1222:34 | MyThing2 {...} | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1222:17:1222:34 | MyThing2 {...} | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1222:31:1222:32 | S2 | | main.rs:1142:5:1143:14 | S2 | +| main.rs:1224:18:1224:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1224:18:1224:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1224:18:1224:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1224:18:1224:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1224:26:1224:26 | x | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1224:26:1224:26 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1224:26:1224:31 | x.m3() | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1225:18:1225:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1225:18:1225:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1225:18:1225:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1225:18:1225:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1225:26:1225:26 | y | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1225:26:1225:26 | y | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1225:26:1225:31 | y.m3() | | main.rs:1142:5:1143:14 | S2 | +| main.rs:1227:13:1227:13 | x | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1227:13:1227:13 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1227:17:1227:33 | MyThing {...} | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1227:17:1227:33 | MyThing {...} | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1227:30:1227:31 | S1 | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1228:13:1228:13 | s | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1228:17:1228:32 | call_trait_m1(...) | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1228:31:1228:31 | x | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1228:31:1228:31 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1230:13:1230:13 | x | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1230:13:1230:13 | x | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1230:17:1230:34 | MyThing2 {...} | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1230:17:1230:34 | MyThing2 {...} | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1230:31:1230:32 | S2 | | main.rs:1142:5:1143:14 | S2 | +| main.rs:1231:13:1231:13 | s | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1231:13:1231:13 | s | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1231:17:1231:32 | call_trait_m1(...) | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1231:17:1231:32 | call_trait_m1(...) | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1231:31:1231:31 | x | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1231:31:1231:31 | x | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1248:22:1248:22 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1248:22:1248:22 | x | TRef | main.rs:1248:11:1248:19 | T | +| main.rs:1248:35:1250:5 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1248:35:1250:5 | { ... } | TRef | main.rs:1248:11:1248:19 | T | +| main.rs:1249:9:1249:9 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1249:9:1249:9 | x | TRef | main.rs:1248:11:1248:19 | T | +| main.rs:1253:17:1253:20 | SelfParam | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1253:29:1255:9 | { ... } | | main.rs:1241:5:1242:14 | S2 | +| main.rs:1254:13:1254:14 | S2 | | main.rs:1241:5:1242:14 | S2 | +| main.rs:1258:21:1258:21 | x | | main.rs:1258:13:1258:14 | T1 | +| main.rs:1261:5:1263:5 | { ... } | | main.rs:1258:17:1258:18 | T2 | +| main.rs:1262:9:1262:9 | x | | main.rs:1258:13:1258:14 | T1 | +| main.rs:1262:9:1262:16 | x.into() | | main.rs:1258:17:1258:18 | T2 | +| main.rs:1265:16:1281:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1266:13:1266:13 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1266:17:1266:18 | S1 | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1267:18:1267:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1267:18:1267:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1267:18:1267:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1267:18:1267:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1267:26:1267:31 | id(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1267:26:1267:31 | id(...) | TRef | main.rs:1238:5:1239:14 | S1 | +| main.rs:1267:29:1267:30 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:1267:29:1267:30 | &x | TRef | main.rs:1238:5:1239:14 | S1 | +| main.rs:1267:30:1267:30 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1269:13:1269:13 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1269:17:1269:18 | S1 | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1270:18:1270:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1270:18:1270:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1270:18:1270:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1270:18:1270:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1270:26:1270:37 | id::<...>(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1270:26:1270:37 | id::<...>(...) | TRef | main.rs:1238:5:1239:14 | S1 | +| main.rs:1270:35:1270:36 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:1270:35:1270:36 | &x | TRef | main.rs:1238:5:1239:14 | S1 | +| main.rs:1270:36:1270:36 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1272:13:1272:13 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1272:17:1272:18 | S1 | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1274:18:1274:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1274:18:1274:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1274:18:1274:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1274:18:1274:44 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1274:26:1274:44 | id::<...>(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1274:26:1274:44 | id::<...>(...) | TRef | main.rs:1244:5:1244:25 | dyn Trait | +| main.rs:1274:42:1274:43 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:1274:42:1274:43 | &x | TRef | main.rs:1238:5:1239:14 | S1 | +| main.rs:1274:43:1274:43 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1276:13:1276:13 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1276:17:1276:18 | S1 | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1277:9:1277:25 | into::<...>(...) | | main.rs:1241:5:1242:14 | S2 | +| main.rs:1277:24:1277:24 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1279:13:1279:13 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1279:17:1279:18 | S1 | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1280:13:1280:13 | y | | main.rs:1241:5:1242:14 | S2 | +| main.rs:1280:21:1280:27 | into(...) | | main.rs:1241:5:1242:14 | S2 | +| main.rs:1280:26:1280:26 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1294:22:1294:25 | SelfParam | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1294:22:1294:25 | SelfParam | Fst | main.rs:1293:10:1293:12 | Fst | +| main.rs:1294:22:1294:25 | SelfParam | Snd | main.rs:1293:15:1293:17 | Snd | +| main.rs:1294:35:1301:9 | { ... } | | main.rs:1293:15:1293:17 | Snd | +| main.rs:1295:13:1300:13 | match self { ... } | | file://:0:0:0:0 | ! | +| main.rs:1295:13:1300:13 | match self { ... } | | main.rs:1293:15:1293:17 | Snd | +| main.rs:1295:19:1295:22 | self | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1295:19:1295:22 | self | Fst | main.rs:1293:10:1293:12 | Fst | +| main.rs:1295:19:1295:22 | self | Snd | main.rs:1293:15:1293:17 | Snd | +| main.rs:1296:17:1296:38 | ...::PairNone(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1296:17:1296:38 | ...::PairNone(...) | Fst | main.rs:1293:10:1293:12 | Fst | +| main.rs:1296:17:1296:38 | ...::PairNone(...) | Snd | main.rs:1293:15:1293:17 | Snd | +| main.rs:1296:43:1296:82 | MacroExpr | | file://:0:0:0:0 | ! | +| main.rs:1296:50:1296:81 | "PairNone has no second elemen... | | {EXTERNAL LOCATION} | & | +| main.rs:1296:50:1296:81 | "PairNone has no second elemen... | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1296:50:1296:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:1296:50:1296:81 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1296:50:1296:81 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1297:17:1297:38 | ...::PairFst(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1297:17:1297:38 | ...::PairFst(...) | Fst | main.rs:1293:10:1293:12 | Fst | +| main.rs:1297:17:1297:38 | ...::PairFst(...) | Snd | main.rs:1293:15:1293:17 | Snd | +| main.rs:1297:37:1297:37 | _ | | main.rs:1293:10:1293:12 | Fst | +| main.rs:1297:43:1297:81 | MacroExpr | | file://:0:0:0:0 | ! | +| main.rs:1297:50:1297:80 | "PairFst has no second element... | | {EXTERNAL LOCATION} | & | +| main.rs:1297:50:1297:80 | "PairFst has no second element... | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1297:50:1297:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:1297:50:1297:80 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1297:50:1297:80 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1298:17:1298:40 | ...::PairSnd(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1298:17:1298:40 | ...::PairSnd(...) | Fst | main.rs:1293:10:1293:12 | Fst | +| main.rs:1298:17:1298:40 | ...::PairSnd(...) | Snd | main.rs:1293:15:1293:17 | Snd | +| main.rs:1298:37:1298:39 | snd | | main.rs:1293:15:1293:17 | Snd | +| main.rs:1298:45:1298:47 | snd | | main.rs:1293:15:1293:17 | Snd | +| main.rs:1299:17:1299:44 | ...::PairBoth(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1299:17:1299:44 | ...::PairBoth(...) | Fst | main.rs:1293:10:1293:12 | Fst | +| main.rs:1299:17:1299:44 | ...::PairBoth(...) | Snd | main.rs:1293:15:1293:17 | Snd | +| main.rs:1299:38:1299:38 | _ | | main.rs:1293:10:1293:12 | Fst | +| main.rs:1299:41:1299:43 | snd | | main.rs:1293:15:1293:17 | Snd | +| main.rs:1299:49:1299:51 | snd | | main.rs:1293:15:1293:17 | Snd | +| main.rs:1325:10:1325:10 | t | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1325:10:1325:10 | t | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1325:10:1325:10 | t | Snd | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1325:10:1325:10 | t | Snd.Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1325:10:1325:10 | t | Snd.Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1325:30:1328:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1326:13:1326:13 | x | | main.rs:1310:5:1311:14 | S3 | +| main.rs:1326:17:1326:17 | t | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1326:17:1326:17 | t | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1326:17:1326:17 | t | Snd | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1326:17:1326:17 | t | Snd.Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1326:17:1326:17 | t | Snd.Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1326:17:1326:29 | t.unwrapSnd() | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1326:17:1326:29 | t.unwrapSnd() | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1326:17:1326:29 | t.unwrapSnd() | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1326:17:1326:41 | ... .unwrapSnd() | | main.rs:1310:5:1311:14 | S3 | +| main.rs:1327:18:1327:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1327:18:1327:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1327:18:1327:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1327:18:1327:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1327:26:1327:26 | x | | main.rs:1310:5:1311:14 | S3 | +| main.rs:1342:22:1342:25 | SelfParam | | main.rs:1340:5:1343:5 | Self [trait TraitWithAssocType] | +| main.rs:1350:22:1350:25 | SelfParam | | main.rs:1338:5:1338:28 | GenS | +| main.rs:1350:22:1350:25 | SelfParam | GenT | main.rs:1345:10:1345:15 | Output | +| main.rs:1350:44:1352:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1350:44:1352:9 | { ... } | E | main.rs:1345:10:1345:15 | Output | +| main.rs:1350:44:1352:9 | { ... } | T | main.rs:1345:10:1345:15 | Output | +| main.rs:1351:13:1351:22 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1351:13:1351:22 | Ok(...) | E | main.rs:1345:10:1345:15 | Output | +| main.rs:1351:13:1351:22 | Ok(...) | T | main.rs:1345:10:1345:15 | Output | +| main.rs:1351:16:1351:19 | self | | main.rs:1338:5:1338:28 | GenS | +| main.rs:1351:16:1351:19 | self | GenT | main.rs:1345:10:1345:15 | Output | +| main.rs:1351:16:1351:21 | self.0 | | main.rs:1345:10:1345:15 | Output | +| main.rs:1355:16:1377:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1357:13:1357:14 | p1 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1357:13:1357:14 | p1 | Fst | main.rs:1304:5:1305:14 | S1 | +| main.rs:1357:13:1357:14 | p1 | Snd | main.rs:1307:5:1308:14 | S2 | +| main.rs:1357:26:1357:53 | ...::PairBoth(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1357:26:1357:53 | ...::PairBoth(...) | Fst | main.rs:1304:5:1305:14 | S1 | +| main.rs:1357:26:1357:53 | ...::PairBoth(...) | Snd | main.rs:1307:5:1308:14 | S2 | +| main.rs:1357:47:1357:48 | S1 | | main.rs:1304:5:1305:14 | S1 | +| main.rs:1357:51:1357:52 | S2 | | main.rs:1307:5:1308:14 | S2 | +| main.rs:1358:18:1358:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1358:18:1358:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1358:18:1358:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1358:18:1358:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1358:26:1358:27 | p1 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1358:26:1358:27 | p1 | Fst | main.rs:1304:5:1305:14 | S1 | +| main.rs:1358:26:1358:27 | p1 | Snd | main.rs:1307:5:1308:14 | S2 | +| main.rs:1361:13:1361:14 | p2 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1361:13:1361:14 | p2 | Fst | main.rs:1304:5:1305:14 | S1 | +| main.rs:1361:13:1361:14 | p2 | Snd | main.rs:1307:5:1308:14 | S2 | +| main.rs:1361:26:1361:47 | ...::PairNone(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1361:26:1361:47 | ...::PairNone(...) | Fst | main.rs:1304:5:1305:14 | S1 | +| main.rs:1361:26:1361:47 | ...::PairNone(...) | Snd | main.rs:1307:5:1308:14 | S2 | +| main.rs:1362:18:1362:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1362:18:1362:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1362:18:1362:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1362:18:1362:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1362:26:1362:27 | p2 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1362:26:1362:27 | p2 | Fst | main.rs:1304:5:1305:14 | S1 | +| main.rs:1362:26:1362:27 | p2 | Snd | main.rs:1307:5:1308:14 | S2 | +| main.rs:1365:13:1365:14 | p3 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1365:13:1365:14 | p3 | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1365:13:1365:14 | p3 | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1365:34:1365:56 | ...::PairSnd(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1365:34:1365:56 | ...::PairSnd(...) | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1365:34:1365:56 | ...::PairSnd(...) | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1365:54:1365:55 | S3 | | main.rs:1310:5:1311:14 | S3 | +| main.rs:1366:18:1366:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1366:18:1366:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1366:18:1366:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1366:18:1366:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1366:26:1366:27 | p3 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1366:26:1366:27 | p3 | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1366:26:1366:27 | p3 | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1369:13:1369:14 | p3 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1369:13:1369:14 | p3 | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1369:13:1369:14 | p3 | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1369:35:1369:56 | ...::PairNone(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1369:35:1369:56 | ...::PairNone(...) | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1369:35:1369:56 | ...::PairNone(...) | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1370:18:1370:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1370:18:1370:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1370:18:1370:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1370:18:1370:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1370:26:1370:27 | p3 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1370:26:1370:27 | p3 | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1370:26:1370:27 | p3 | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1372:9:1372:55 | g(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1372:11:1372:54 | ...::PairSnd(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1372:11:1372:54 | ...::PairSnd(...) | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1372:11:1372:54 | ...::PairSnd(...) | Snd | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1372:11:1372:54 | ...::PairSnd(...) | Snd.Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1372:11:1372:54 | ...::PairSnd(...) | Snd.Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1372:31:1372:53 | ...::PairSnd(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1372:31:1372:53 | ...::PairSnd(...) | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1372:31:1372:53 | ...::PairSnd(...) | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1372:51:1372:52 | S3 | | main.rs:1310:5:1311:14 | S3 | +| main.rs:1374:13:1374:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1374:13:1374:13 | x | E | main.rs:1304:5:1305:14 | S1 | +| main.rs:1374:13:1374:13 | x | T | main.rs:1330:5:1330:34 | S4 | +| main.rs:1374:13:1374:13 | x | T.T41 | main.rs:1307:5:1308:14 | S2 | +| main.rs:1374:13:1374:13 | x | T.T42 | main.rs:1332:5:1332:22 | S5 | +| main.rs:1374:13:1374:13 | x | T.T42.T5 | main.rs:1307:5:1308:14 | S2 | +| main.rs:1376:13:1376:13 | y | | {EXTERNAL LOCATION} | Result | +| main.rs:1376:13:1376:13 | y | E | {EXTERNAL LOCATION} | bool | +| main.rs:1376:13:1376:13 | y | T | {EXTERNAL LOCATION} | bool | +| main.rs:1376:17:1376:26 | GenS(...) | | main.rs:1338:5:1338:28 | GenS | +| main.rs:1376:17:1376:26 | GenS(...) | GenT | {EXTERNAL LOCATION} | bool | +| main.rs:1376:17:1376:38 | ... .get_input() | | {EXTERNAL LOCATION} | Result | +| main.rs:1376:17:1376:38 | ... .get_input() | E | {EXTERNAL LOCATION} | bool | +| main.rs:1376:17:1376:38 | ... .get_input() | T | {EXTERNAL LOCATION} | bool | +| main.rs:1376:22:1376:25 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1389:16:1389:24 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1389:16:1389:24 | SelfParam | TRef | main.rs:1387:5:1394:5 | Self [trait MyTrait] | +| main.rs:1389:27:1389:31 | value | | main.rs:1387:19:1387:19 | S | +| main.rs:1391:21:1391:29 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1391:21:1391:29 | SelfParam | TRef | main.rs:1387:5:1394:5 | Self [trait MyTrait] | +| main.rs:1391:32:1391:36 | value | | main.rs:1387:19:1387:19 | S | +| main.rs:1391:42:1393:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1392:13:1392:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1392:13:1392:16 | self | TRef | main.rs:1387:5:1394:5 | Self [trait MyTrait] | +| main.rs:1392:13:1392:27 | self.set(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1392:22:1392:26 | value | | main.rs:1387:19:1387:19 | S | +| main.rs:1398:16:1398:24 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1398:16:1398:24 | SelfParam | TRef | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1398:16:1398:24 | SelfParam | TRef.T | main.rs:1396:10:1396:10 | T | +| main.rs:1398:27:1398:31 | value | | main.rs:1396:10:1396:10 | T | +| main.rs:1398:37:1398:38 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1402:26:1404:9 | { ... } | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1402:26:1404:9 | { ... } | T | main.rs:1401:10:1401:10 | T | +| main.rs:1403:13:1403:30 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1403:13:1403:30 | ...::MyNone(...) | T | main.rs:1401:10:1401:10 | T | +| main.rs:1408:20:1408:23 | SelfParam | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1408:20:1408:23 | SelfParam | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1408:20:1408:23 | SelfParam | T.T | main.rs:1407:10:1407:10 | T | +| main.rs:1408:41:1413:9 | { ... } | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1408:41:1413:9 | { ... } | T | main.rs:1407:10:1407:10 | T | +| main.rs:1409:13:1412:13 | match self { ... } | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1409:13:1412:13 | match self { ... } | T | main.rs:1407:10:1407:10 | T | +| main.rs:1409:19:1409:22 | self | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1409:19:1409:22 | self | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1409:19:1409:22 | self | T.T | main.rs:1407:10:1407:10 | T | +| main.rs:1410:17:1410:34 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1410:17:1410:34 | ...::MyNone(...) | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1410:17:1410:34 | ...::MyNone(...) | T.T | main.rs:1407:10:1407:10 | T | +| main.rs:1410:39:1410:56 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1410:39:1410:56 | ...::MyNone(...) | T | main.rs:1407:10:1407:10 | T | +| main.rs:1411:17:1411:35 | ...::MySome(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1411:17:1411:35 | ...::MySome(...) | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1411:17:1411:35 | ...::MySome(...) | T.T | main.rs:1407:10:1407:10 | T | +| main.rs:1411:34:1411:34 | x | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1411:34:1411:34 | x | T | main.rs:1407:10:1407:10 | T | +| main.rs:1411:40:1411:40 | x | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1411:40:1411:40 | x | T | main.rs:1407:10:1407:10 | T | +| main.rs:1419:16:1465:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1420:13:1420:14 | x1 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1420:13:1420:14 | x1 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1420:18:1420:37 | ...::new(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1420:18:1420:37 | ...::new(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1421:18:1421:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1421:18:1421:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1421:18:1421:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1421:18:1421:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1421:26:1421:27 | x1 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1421:26:1421:27 | x1 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1423:17:1423:18 | x2 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1423:17:1423:18 | x2 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1423:22:1423:36 | ...::new(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1423:22:1423:36 | ...::new(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1424:9:1424:10 | x2 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1424:9:1424:10 | x2 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1424:9:1424:17 | x2.set(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1424:16:1424:16 | S | | main.rs:1416:5:1417:13 | S | +| main.rs:1425:18:1425:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1425:18:1425:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1425:18:1425:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1425:18:1425:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1425:26:1425:27 | x2 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1425:26:1425:27 | x2 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1428:17:1428:18 | x3 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1428:22:1428:36 | ...::new(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1429:9:1429:10 | x3 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1429:9:1429:22 | x3.call_set(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1429:21:1429:21 | S | | main.rs:1416:5:1417:13 | S | +| main.rs:1430:18:1430:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1430:18:1430:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1430:18:1430:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1430:18:1430:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1430:26:1430:27 | x3 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1432:17:1432:18 | x4 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1432:17:1432:18 | x4 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1432:22:1432:36 | ...::new(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1432:22:1432:36 | ...::new(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1433:9:1433:33 | ...::set(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1433:23:1433:29 | &mut x4 | | {EXTERNAL LOCATION} | & | +| main.rs:1433:23:1433:29 | &mut x4 | TRef | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1433:23:1433:29 | &mut x4 | TRef.T | main.rs:1416:5:1417:13 | S | +| main.rs:1433:28:1433:29 | x4 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1433:28:1433:29 | x4 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1433:32:1433:32 | S | | main.rs:1416:5:1417:13 | S | +| main.rs:1434:18:1434:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1434:18:1434:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1434:18:1434:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1434:18:1434:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1434:26:1434:27 | x4 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1434:26:1434:27 | x4 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1436:13:1436:14 | x5 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1436:13:1436:14 | x5 | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1436:13:1436:14 | x5 | T.T | main.rs:1416:5:1417:13 | S | +| main.rs:1436:18:1436:58 | ...::MySome(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1436:18:1436:58 | ...::MySome(...) | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1436:18:1436:58 | ...::MySome(...) | T.T | main.rs:1416:5:1417:13 | S | +| main.rs:1436:35:1436:57 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1436:35:1436:57 | ...::MyNone(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1437:18:1437:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1437:18:1437:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1437:18:1437:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1437:18:1437:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1437:26:1437:27 | x5 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1437:26:1437:27 | x5 | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1437:26:1437:27 | x5 | T.T | main.rs:1416:5:1417:13 | S | +| main.rs:1437:26:1437:37 | x5.flatten() | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1437:26:1437:37 | x5.flatten() | T | main.rs:1416:5:1417:13 | S | +| main.rs:1439:13:1439:14 | x6 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1439:13:1439:14 | x6 | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1439:13:1439:14 | x6 | T.T | main.rs:1416:5:1417:13 | S | +| main.rs:1439:18:1439:58 | ...::MySome(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1439:18:1439:58 | ...::MySome(...) | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1439:18:1439:58 | ...::MySome(...) | T.T | main.rs:1416:5:1417:13 | S | +| main.rs:1439:35:1439:57 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1439:35:1439:57 | ...::MyNone(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1440:18:1440:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1440:18:1440:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1440:18:1440:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1440:18:1440:61 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1440:26:1440:61 | ...::flatten(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1440:26:1440:61 | ...::flatten(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1440:59:1440:60 | x6 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1440:59:1440:60 | x6 | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1440:59:1440:60 | x6 | T.T | main.rs:1416:5:1417:13 | S | +| main.rs:1443:13:1443:19 | from_if | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1443:13:1443:19 | from_if | T | main.rs:1416:5:1417:13 | S | +| main.rs:1443:23:1447:9 | if ... {...} else {...} | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1443:23:1447:9 | if ... {...} else {...} | T | main.rs:1416:5:1417:13 | S | +| main.rs:1443:26:1443:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1443:26:1443:30 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1443:30:1443:30 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1443:32:1445:9 | { ... } | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1443:32:1445:9 | { ... } | T | main.rs:1416:5:1417:13 | S | +| main.rs:1444:13:1444:30 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1444:13:1444:30 | ...::MyNone(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1445:16:1447:9 | { ... } | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1445:16:1447:9 | { ... } | T | main.rs:1416:5:1417:13 | S | +| main.rs:1446:13:1446:31 | ...::MySome(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1446:13:1446:31 | ...::MySome(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1446:30:1446:30 | S | | main.rs:1416:5:1417:13 | S | +| main.rs:1448:18:1448:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1448:18:1448:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1448:18:1448:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1448:18:1448:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1448:26:1448:32 | from_if | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1448:26:1448:32 | from_if | T | main.rs:1416:5:1417:13 | S | +| main.rs:1451:13:1451:22 | from_match | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1451:13:1451:22 | from_match | T | main.rs:1416:5:1417:13 | S | +| main.rs:1451:26:1454:9 | match ... { ... } | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1451:26:1454:9 | match ... { ... } | T | main.rs:1416:5:1417:13 | S | +| main.rs:1451:32:1451:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1451:32:1451:36 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1451:36:1451:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1452:13:1452:16 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1452:21:1452:38 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1452:21:1452:38 | ...::MyNone(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1453:13:1453:17 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1453:22:1453:40 | ...::MySome(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1453:22:1453:40 | ...::MySome(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1453:39:1453:39 | S | | main.rs:1416:5:1417:13 | S | +| main.rs:1455:18:1455:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1455:18:1455:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1455:18:1455:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1455:18:1455:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1455:26:1455:35 | from_match | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1455:26:1455:35 | from_match | T | main.rs:1416:5:1417:13 | S | +| main.rs:1458:13:1458:21 | from_loop | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1458:13:1458:21 | from_loop | T | main.rs:1416:5:1417:13 | S | +| main.rs:1458:25:1463:9 | loop { ... } | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1458:25:1463:9 | loop { ... } | T | main.rs:1416:5:1417:13 | S | +| main.rs:1458:30:1463:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1459:13:1461:13 | if ... {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1459:16:1459:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1459:16:1459:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1459:20:1459:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1459:22:1461:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1460:23:1460:40 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1460:23:1460:40 | ...::MyNone(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1462:19:1462:37 | ...::MySome(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1462:19:1462:37 | ...::MySome(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1462:36:1462:36 | S | | main.rs:1416:5:1417:13 | S | +| main.rs:1464:18:1464:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1464:18:1464:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1464:18:1464:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1464:18:1464:34 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1464:26:1464:34 | from_loop | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1464:26:1464:34 | from_loop | T | main.rs:1416:5:1417:13 | S | +| main.rs:1482:15:1482:18 | SelfParam | | main.rs:1470:5:1471:19 | S | +| main.rs:1482:15:1482:18 | SelfParam | T | main.rs:1481:10:1481:10 | T | +| main.rs:1482:26:1484:9 | { ... } | | main.rs:1481:10:1481:10 | T | +| main.rs:1483:13:1483:16 | self | | main.rs:1470:5:1471:19 | S | +| main.rs:1483:13:1483:16 | self | T | main.rs:1481:10:1481:10 | T | +| main.rs:1483:13:1483:18 | self.0 | | main.rs:1481:10:1481:10 | T | +| main.rs:1486:15:1486:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1486:15:1486:19 | SelfParam | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1486:15:1486:19 | SelfParam | TRef.T | main.rs:1481:10:1481:10 | T | +| main.rs:1486:28:1488:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1486:28:1488:9 | { ... } | TRef | main.rs:1481:10:1481:10 | T | +| main.rs:1487:13:1487:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1487:13:1487:19 | &... | TRef | main.rs:1481:10:1481:10 | T | +| main.rs:1487:14:1487:17 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1487:14:1487:17 | self | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1487:14:1487:17 | self | TRef.T | main.rs:1481:10:1481:10 | T | +| main.rs:1487:14:1487:19 | self.0 | | main.rs:1481:10:1481:10 | T | +| main.rs:1490:15:1490:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1490:15:1490:25 | SelfParam | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1490:15:1490:25 | SelfParam | TRef.T | main.rs:1481:10:1481:10 | T | +| main.rs:1490:34:1492:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1490:34:1492:9 | { ... } | TRef | main.rs:1481:10:1481:10 | T | +| main.rs:1491:13:1491:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1491:13:1491:19 | &... | TRef | main.rs:1481:10:1481:10 | T | +| main.rs:1491:14:1491:17 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1491:14:1491:17 | self | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1491:14:1491:17 | self | TRef.T | main.rs:1481:10:1481:10 | T | +| main.rs:1491:14:1491:19 | self.0 | | main.rs:1481:10:1481:10 | T | +| main.rs:1496:29:1496:33 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1496:29:1496:33 | SelfParam | TRef | main.rs:1495:5:1498:5 | Self [trait ATrait] | +| main.rs:1497:33:1497:36 | SelfParam | | main.rs:1495:5:1498:5 | Self [trait ATrait] | +| main.rs:1503:29:1503:33 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1503:29:1503:33 | SelfParam | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1503:29:1503:33 | SelfParam | TRef.TRef | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1503:43:1505:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1504:13:1504:22 | (...) | | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1504:13:1504:24 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1504:14:1504:21 | * ... | | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1504:15:1504:21 | (...) | | {EXTERNAL LOCATION} | & | +| main.rs:1504:15:1504:21 | (...) | TRef | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1504:16:1504:20 | * ... | | {EXTERNAL LOCATION} | & | +| main.rs:1504:16:1504:20 | * ... | TRef | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1504:17:1504:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1504:17:1504:20 | self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1504:17:1504:20 | self | TRef.TRef | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1508:33:1508:36 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1508:33:1508:36 | SelfParam | TRef | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1508:46:1510:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:13:1509:19 | (...) | | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1509:13:1509:21 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:14:1509:18 | * ... | | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1509:15:1509:18 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1509:15:1509:18 | self | TRef | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1513:16:1563:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1514:13:1514:14 | x1 | | main.rs:1470:5:1471:19 | S | +| main.rs:1514:13:1514:14 | x1 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1514:18:1514:22 | S(...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1514:18:1514:22 | S(...) | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1514:20:1514:21 | S2 | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1515:18:1515:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1515:18:1515:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1515:18:1515:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1515:18:1515:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1515:26:1515:27 | x1 | | main.rs:1470:5:1471:19 | S | +| main.rs:1515:26:1515:27 | x1 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1515:26:1515:32 | x1.m1() | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1517:13:1517:14 | x2 | | main.rs:1470:5:1471:19 | S | +| main.rs:1517:13:1517:14 | x2 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1517:18:1517:22 | S(...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1517:18:1517:22 | S(...) | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1517:20:1517:21 | S2 | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1519:18:1519:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1519:18:1519:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1519:18:1519:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1519:18:1519:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1519:26:1519:27 | x2 | | main.rs:1470:5:1471:19 | S | +| main.rs:1519:26:1519:27 | x2 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1519:26:1519:32 | x2.m2() | | {EXTERNAL LOCATION} | & | +| main.rs:1519:26:1519:32 | x2.m2() | TRef | main.rs:1473:5:1474:14 | S2 | +| main.rs:1520:18:1520:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1520:18:1520:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1520:18:1520:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1520:18:1520:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1520:26:1520:27 | x2 | | main.rs:1470:5:1471:19 | S | +| main.rs:1520:26:1520:27 | x2 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1520:26:1520:32 | x2.m3() | | {EXTERNAL LOCATION} | & | +| main.rs:1520:26:1520:32 | x2.m3() | TRef | main.rs:1473:5:1474:14 | S2 | +| main.rs:1522:13:1522:14 | x3 | | main.rs:1470:5:1471:19 | S | +| main.rs:1522:13:1522:14 | x3 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1522:18:1522:22 | S(...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1522:18:1522:22 | S(...) | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1522:20:1522:21 | S2 | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1524:18:1524:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1524:18:1524:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1524:18:1524:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1524:18:1524:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1524:26:1524:41 | ...::m2(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1524:26:1524:41 | ...::m2(...) | TRef | main.rs:1473:5:1474:14 | S2 | +| main.rs:1524:38:1524:40 | &x3 | | {EXTERNAL LOCATION} | & | +| main.rs:1524:38:1524:40 | &x3 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1524:38:1524:40 | &x3 | TRef.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1524:39:1524:40 | x3 | | main.rs:1470:5:1471:19 | S | +| main.rs:1524:39:1524:40 | x3 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1525:18:1525:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1525:18:1525:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1525:18:1525:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1525:18:1525:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1525:26:1525:41 | ...::m3(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1525:26:1525:41 | ...::m3(...) | TRef | main.rs:1473:5:1474:14 | S2 | +| main.rs:1525:38:1525:40 | &x3 | | {EXTERNAL LOCATION} | & | +| main.rs:1525:38:1525:40 | &x3 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1525:38:1525:40 | &x3 | TRef.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1525:39:1525:40 | x3 | | main.rs:1470:5:1471:19 | S | +| main.rs:1525:39:1525:40 | x3 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1527:13:1527:14 | x4 | | {EXTERNAL LOCATION} | & | +| main.rs:1527:13:1527:14 | x4 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1527:13:1527:14 | x4 | TRef.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1527:18:1527:23 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1527:18:1527:23 | &... | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1527:18:1527:23 | &... | TRef.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1527:19:1527:23 | S(...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1527:19:1527:23 | S(...) | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1527:21:1527:22 | S2 | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1529:18:1529:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1529:18:1529:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1529:18:1529:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1529:18:1529:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1529:26:1529:27 | x4 | | {EXTERNAL LOCATION} | & | +| main.rs:1529:26:1529:27 | x4 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1529:26:1529:27 | x4 | TRef.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1529:26:1529:32 | x4.m2() | | {EXTERNAL LOCATION} | & | +| main.rs:1529:26:1529:32 | x4.m2() | TRef | main.rs:1473:5:1474:14 | S2 | +| main.rs:1530:18:1530:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1530:18:1530:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1530:18:1530:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1530:18:1530:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1530:26:1530:27 | x4 | | {EXTERNAL LOCATION} | & | +| main.rs:1530:26:1530:27 | x4 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1530:26:1530:27 | x4 | TRef.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1530:26:1530:32 | x4.m3() | | {EXTERNAL LOCATION} | & | +| main.rs:1530:26:1530:32 | x4.m3() | TRef | main.rs:1473:5:1474:14 | S2 | +| main.rs:1532:13:1532:14 | x5 | | {EXTERNAL LOCATION} | & | +| main.rs:1532:13:1532:14 | x5 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1532:13:1532:14 | x5 | TRef.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1532:18:1532:23 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1532:18:1532:23 | &... | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1532:18:1532:23 | &... | TRef.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1532:19:1532:23 | S(...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1532:19:1532:23 | S(...) | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1532:21:1532:22 | S2 | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1534:18:1534:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1534:18:1534:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1534:18:1534:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1534:18:1534:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1534:26:1534:27 | x5 | | {EXTERNAL LOCATION} | & | +| main.rs:1534:26:1534:27 | x5 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1534:26:1534:27 | x5 | TRef.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1534:26:1534:32 | x5.m1() | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1535:18:1535:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1535:18:1535:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1535:18:1535:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1535:18:1535:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1535:26:1535:27 | x5 | | {EXTERNAL LOCATION} | & | +| main.rs:1535:26:1535:27 | x5 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1535:26:1535:27 | x5 | TRef.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1535:26:1535:29 | x5.0 | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1537:13:1537:14 | x6 | | {EXTERNAL LOCATION} | & | +| main.rs:1537:13:1537:14 | x6 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1537:13:1537:14 | x6 | TRef.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1537:18:1537:23 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1537:18:1537:23 | &... | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1537:18:1537:23 | &... | TRef.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1537:19:1537:23 | S(...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1537:19:1537:23 | S(...) | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1537:21:1537:22 | S2 | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1540:18:1540:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1540:18:1540:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1540:18:1540:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1540:18:1540:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1540:26:1540:30 | (...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1540:26:1540:30 | (...) | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1540:26:1540:35 | ... .m1() | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1540:27:1540:29 | * ... | | main.rs:1470:5:1471:19 | S | +| main.rs:1540:27:1540:29 | * ... | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1540:28:1540:29 | x6 | | {EXTERNAL LOCATION} | & | +| main.rs:1540:28:1540:29 | x6 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1540:28:1540:29 | x6 | TRef.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1542:13:1542:14 | x7 | | main.rs:1470:5:1471:19 | S | +| main.rs:1542:13:1542:14 | x7 | T | {EXTERNAL LOCATION} | & | +| main.rs:1542:13:1542:14 | x7 | T.TRef | main.rs:1473:5:1474:14 | S2 | +| main.rs:1542:18:1542:23 | S(...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1542:18:1542:23 | S(...) | T | {EXTERNAL LOCATION} | & | +| main.rs:1542:18:1542:23 | S(...) | T.TRef | main.rs:1473:5:1474:14 | S2 | +| main.rs:1542:20:1542:22 | &S2 | | {EXTERNAL LOCATION} | & | +| main.rs:1542:20:1542:22 | &S2 | TRef | main.rs:1473:5:1474:14 | S2 | +| main.rs:1542:21:1542:22 | S2 | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1545:13:1545:13 | t | | {EXTERNAL LOCATION} | & | +| main.rs:1545:13:1545:13 | t | TRef | main.rs:1473:5:1474:14 | S2 | +| main.rs:1545:17:1545:18 | x7 | | main.rs:1470:5:1471:19 | S | +| main.rs:1545:17:1545:18 | x7 | T | {EXTERNAL LOCATION} | & | +| main.rs:1545:17:1545:18 | x7 | T.TRef | main.rs:1473:5:1474:14 | S2 | +| main.rs:1545:17:1545:23 | x7.m1() | | {EXTERNAL LOCATION} | & | +| main.rs:1545:17:1545:23 | x7.m1() | TRef | main.rs:1473:5:1474:14 | S2 | +| main.rs:1546:18:1546:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1546:18:1546:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1546:18:1546:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1546:18:1546:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1546:26:1546:27 | x7 | | main.rs:1470:5:1471:19 | S | +| main.rs:1546:26:1546:27 | x7 | T | {EXTERNAL LOCATION} | & | +| main.rs:1546:26:1546:27 | x7 | T.TRef | main.rs:1473:5:1474:14 | S2 | +| main.rs:1548:13:1548:14 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1548:26:1548:32 | "Hello" | | {EXTERNAL LOCATION} | & | +| main.rs:1548:26:1548:32 | "Hello" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1548:26:1548:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | +| main.rs:1552:13:1552:13 | u | | {EXTERNAL LOCATION} | Result | +| main.rs:1552:13:1552:13 | u | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1552:17:1552:18 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1552:17:1552:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | +| main.rs:1552:17:1552:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1554:13:1554:20 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1554:13:1554:20 | my_thing | TRef | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1554:24:1554:39 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1554:24:1554:39 | &... | TRef | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1554:25:1554:39 | MyInt {...} | | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1554:36:1554:37 | 37 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1556:13:1556:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1556:17:1556:24 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1556:17:1556:24 | my_thing | TRef | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1556:17:1556:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:1557:18:1557:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1557:18:1557:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1557:18:1557:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1557:18:1557:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1557:26:1557:26 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1560:13:1560:20 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1560:13:1560:20 | my_thing | TRef | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1560:24:1560:39 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1560:24:1560:39 | &... | TRef | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1560:25:1560:39 | MyInt {...} | | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1560:36:1560:37 | 38 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1561:13:1561:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1561:17:1561:24 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1561:17:1561:24 | my_thing | TRef | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1561:17:1561:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:1562:18:1562:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1562:18:1562:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1562:18:1562:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1562:18:1562:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1562:26:1562:26 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1569:16:1569:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1569:16:1569:20 | SelfParam | TRef | main.rs:1567:5:1575:5 | Self [trait MyTrait] | +| main.rs:1572:16:1572:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1572:16:1572:20 | SelfParam | TRef | main.rs:1567:5:1575:5 | Self [trait MyTrait] | +| main.rs:1572:32:1574:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1572:32:1574:9 | { ... } | TRef | main.rs:1567:5:1575:5 | Self [trait MyTrait] | +| main.rs:1573:13:1573:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1573:13:1573:16 | self | TRef | main.rs:1567:5:1575:5 | Self [trait MyTrait] | +| main.rs:1573:13:1573:22 | self.foo() | | {EXTERNAL LOCATION} | & | +| main.rs:1573:13:1573:22 | self.foo() | TRef | main.rs:1567:5:1575:5 | Self [trait MyTrait] | +| main.rs:1581:16:1581:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1581:16:1581:20 | SelfParam | TRef | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1581:36:1583:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1581:36:1583:9 | { ... } | TRef | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1582:13:1582:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1582:13:1582:16 | self | TRef | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1586:16:1589:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1587:13:1587:13 | x | | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1587:17:1587:24 | MyStruct | | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1588:9:1588:9 | x | | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1588:9:1588:15 | x.bar() | | {EXTERNAL LOCATION} | & | +| main.rs:1588:9:1588:15 | x.bar() | TRef | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1598:16:1598:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1598:16:1598:20 | SelfParam | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1598:16:1598:20 | SelfParam | TRef.T | main.rs:1597:10:1597:10 | T | +| main.rs:1598:32:1600:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1598:32:1600:9 | { ... } | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1598:32:1600:9 | { ... } | TRef.T | main.rs:1597:10:1597:10 | T | +| main.rs:1599:13:1599:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1599:13:1599:16 | self | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1599:13:1599:16 | self | TRef.T | main.rs:1597:10:1597:10 | T | +| main.rs:1602:16:1602:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1602:16:1602:20 | SelfParam | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1602:16:1602:20 | SelfParam | TRef.T | main.rs:1597:10:1597:10 | T | +| main.rs:1602:23:1602:23 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1602:23:1602:23 | x | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1602:23:1602:23 | x | TRef.T | main.rs:1597:10:1597:10 | T | +| main.rs:1602:42:1604:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1602:42:1604:9 | { ... } | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1602:42:1604:9 | { ... } | TRef.T | main.rs:1597:10:1597:10 | T | +| main.rs:1603:13:1603:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1603:13:1603:16 | self | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1603:13:1603:16 | self | TRef.T | main.rs:1597:10:1597:10 | T | +| main.rs:1607:16:1613:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1608:13:1608:13 | x | | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1608:13:1608:13 | x | T | main.rs:1593:5:1593:13 | S | +| main.rs:1608:17:1608:27 | MyStruct(...) | | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1608:17:1608:27 | MyStruct(...) | T | main.rs:1593:5:1593:13 | S | +| main.rs:1608:26:1608:26 | S | | main.rs:1593:5:1593:13 | S | +| main.rs:1609:9:1609:9 | x | | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1609:9:1609:9 | x | T | main.rs:1593:5:1593:13 | S | +| main.rs:1609:9:1609:15 | x.foo() | | {EXTERNAL LOCATION} | & | +| main.rs:1609:9:1609:15 | x.foo() | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1609:9:1609:15 | x.foo() | TRef.T | main.rs:1593:5:1593:13 | S | +| main.rs:1610:13:1610:13 | x | | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1610:13:1610:13 | x | T | main.rs:1593:5:1593:13 | S | +| main.rs:1610:17:1610:27 | MyStruct(...) | | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1610:17:1610:27 | MyStruct(...) | T | main.rs:1593:5:1593:13 | S | +| main.rs:1610:26:1610:26 | S | | main.rs:1593:5:1593:13 | S | +| main.rs:1612:9:1612:9 | x | | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1612:9:1612:9 | x | T | main.rs:1593:5:1593:13 | S | +| main.rs:1612:9:1612:18 | x.bar(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1612:9:1612:18 | x.bar(...) | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1612:9:1612:18 | x.bar(...) | TRef.T | main.rs:1593:5:1593:13 | S | +| main.rs:1612:15:1612:17 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1612:15:1612:17 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1612:15:1612:17 | &... | TRef.TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1612:15:1612:17 | &... | TRef.TRef.T | main.rs:1593:5:1593:13 | S | +| main.rs:1612:16:1612:17 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:1612:16:1612:17 | &x | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1612:16:1612:17 | &x | TRef.T | main.rs:1593:5:1593:13 | S | +| main.rs:1612:17:1612:17 | x | | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1612:17:1612:17 | x | T | main.rs:1593:5:1593:13 | S | +| main.rs:1623:17:1623:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1623:17:1623:25 | SelfParam | TRef | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1623:28:1625:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1624:13:1624:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1624:13:1624:16 | self | TRef | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1624:13:1624:21 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1624:13:1624:34 | ... = ... | | {EXTERNAL LOCATION} | () | +| main.rs:1624:25:1624:34 | ! ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1624:26:1624:29 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1624:26:1624:29 | self | TRef | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1624:26:1624:34 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1631:15:1631:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1631:15:1631:19 | SelfParam | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1631:31:1633:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1631:31:1633:9 | { ... } | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1632:13:1632:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1632:13:1632:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1632:13:1632:19 | &... | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1632:13:1632:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1632:13:1632:19 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1632:13:1632:19 | &... | TRef.TRef.TRef.TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1632:14:1632:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1632:14:1632:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1632:14:1632:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1632:14:1632:19 | &... | TRef.TRef.TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1632:15:1632:19 | &self | | {EXTERNAL LOCATION} | & | +| main.rs:1632:15:1632:19 | &self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1632:15:1632:19 | &self | TRef.TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1632:16:1632:19 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1632:16:1632:19 | self | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1635:15:1635:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1635:15:1635:25 | SelfParam | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1635:37:1637:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1635:37:1637:9 | { ... } | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1636:13:1636:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1636:13:1636:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1636:13:1636:19 | &... | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1636:13:1636:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1636:13:1636:19 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1636:13:1636:19 | &... | TRef.TRef.TRef.TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1636:14:1636:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1636:14:1636:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1636:14:1636:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1636:14:1636:19 | &... | TRef.TRef.TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1636:15:1636:19 | &self | | {EXTERNAL LOCATION} | & | +| main.rs:1636:15:1636:19 | &self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1636:15:1636:19 | &self | TRef.TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1636:16:1636:19 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1636:16:1636:19 | self | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1639:15:1639:15 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1639:15:1639:15 | x | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1639:34:1641:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1639:34:1641:9 | { ... } | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1640:13:1640:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1640:13:1640:13 | x | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1643:15:1643:15 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1643:15:1643:15 | x | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1643:34:1645:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1643:34:1645:9 | { ... } | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1644:13:1644:16 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1644:13:1644:16 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1644:13:1644:16 | &... | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1644:13:1644:16 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1644:13:1644:16 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1644:13:1644:16 | &... | TRef.TRef.TRef.TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1644:14:1644:16 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1644:14:1644:16 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1644:14:1644:16 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1644:14:1644:16 | &... | TRef.TRef.TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1644:15:1644:16 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:1644:15:1644:16 | &x | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1644:15:1644:16 | &x | TRef.TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1644:16:1644:16 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1644:16:1644:16 | x | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1648:16:1661:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1649:13:1649:13 | x | | main.rs:1628:5:1628:13 | S | +| main.rs:1649:17:1649:20 | S {...} | | main.rs:1628:5:1628:13 | S | +| main.rs:1650:9:1650:9 | x | | main.rs:1628:5:1628:13 | S | +| main.rs:1650:9:1650:14 | x.f1() | | {EXTERNAL LOCATION} | & | +| main.rs:1650:9:1650:14 | x.f1() | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1651:9:1651:9 | x | | main.rs:1628:5:1628:13 | S | +| main.rs:1651:9:1651:14 | x.f2() | | {EXTERNAL LOCATION} | & | +| main.rs:1651:9:1651:14 | x.f2() | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1652:9:1652:17 | ...::f3(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1652:9:1652:17 | ...::f3(...) | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1652:15:1652:16 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:1652:15:1652:16 | &x | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1652:16:1652:16 | x | | main.rs:1628:5:1628:13 | S | +| main.rs:1654:13:1654:13 | n | | {EXTERNAL LOCATION} | bool | +| main.rs:1654:17:1654:24 | * ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1654:18:1654:24 | * ... | | {EXTERNAL LOCATION} | & | +| main.rs:1654:18:1654:24 | * ... | TRef | {EXTERNAL LOCATION} | bool | +| main.rs:1654:19:1654:24 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1654:19:1654:24 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1654:19:1654:24 | &... | TRef.TRef | {EXTERNAL LOCATION} | bool | +| main.rs:1654:20:1654:24 | &true | | {EXTERNAL LOCATION} | & | +| main.rs:1654:20:1654:24 | &true | TRef | {EXTERNAL LOCATION} | bool | +| main.rs:1654:21:1654:24 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1658:17:1658:20 | flag | | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1658:24:1658:41 | ...::default(...) | | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1659:9:1659:31 | ...::flip(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1659:22:1659:30 | &mut flag | | {EXTERNAL LOCATION} | & | +| main.rs:1659:22:1659:30 | &mut flag | TRef | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1659:27:1659:30 | flag | | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1660:18:1660:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1660:18:1660:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1660:18:1660:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1660:18:1660:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1660:26:1660:29 | flag | | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1675:43:1678:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1675:43:1678:5 | { ... } | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1675:43:1678:5 | { ... } | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1676:13:1676:13 | x | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1676:17:1676:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1676:17:1676:30 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1676:17:1676:31 | TryExpr | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1676:28:1676:29 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1677:9:1677:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1677:9:1677:22 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1677:9:1677:22 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1677:20:1677:21 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1682:46:1686:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1682:46:1686:5 | { ... } | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1682:46:1686:5 | { ... } | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1683:13:1683:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1683:13:1683:13 | x | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1683:17:1683:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1683:17:1683:30 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1683:28:1683:29 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1684:13:1684:13 | y | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1684:17:1684:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1684:17:1684:17 | x | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1684:17:1684:18 | TryExpr | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1685:9:1685:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1685:9:1685:22 | ...::Ok(...) | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1685:9:1685:22 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1685:20:1685:21 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1690:40:1695:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1690:40:1695:5 | { ... } | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1690:40:1695:5 | { ... } | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1691:13:1691:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1691:13:1691:13 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1691:13:1691:13 | x | T.T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1691:17:1691:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1691:17:1691:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | +| main.rs:1691:17:1691:42 | ...::Ok(...) | T.T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1691:28:1691:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1691:28:1691:41 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1691:39:1691:40 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1693:17:1693:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1693:17:1693:17 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1693:17:1693:17 | x | T.T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1693:17:1693:18 | TryExpr | | {EXTERNAL LOCATION} | Result | +| main.rs:1693:17:1693:18 | TryExpr | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1693:17:1693:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1693:24:1693:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:1693:24:1693:28 | \|...\| s | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| main.rs:1694:9:1694:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1694:9:1694:22 | ...::Ok(...) | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1694:9:1694:22 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1694:20:1694:21 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1699:30:1699:34 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1699:30:1699:34 | input | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1699:30:1699:34 | input | T | main.rs:1699:20:1699:27 | T | +| main.rs:1699:69:1706:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1699:69:1706:5 | { ... } | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1699:69:1706:5 | { ... } | T | main.rs:1699:20:1699:27 | T | +| main.rs:1700:13:1700:17 | value | | main.rs:1699:20:1699:27 | T | +| main.rs:1700:21:1700:25 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1700:21:1700:25 | input | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1700:21:1700:25 | input | T | main.rs:1699:20:1699:27 | T | +| main.rs:1700:21:1700:26 | TryExpr | | main.rs:1699:20:1699:27 | T | +| main.rs:1701:22:1701:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1701:22:1701:38 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1701:22:1701:38 | ...::Ok(...) | T | main.rs:1699:20:1699:27 | T | +| main.rs:1701:22:1704:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1701:22:1704:10 | ... .and_then(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1701:33:1701:37 | value | | main.rs:1699:20:1699:27 | T | +| main.rs:1701:49:1704:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:1701:49:1704:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| main.rs:1701:49:1704:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | +| main.rs:1701:49:1704:9 | \|...\| ... | dyn(Output).E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1701:53:1704:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1701:53:1704:9 | { ... } | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1702:22:1702:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1702:22:1702:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1702:22:1702:30 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1702:22:1702:30 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1703:13:1703:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1703:13:1703:34 | ...::Ok::<...>(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1705:9:1705:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1705:9:1705:23 | ...::Err(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1705:9:1705:23 | ...::Err(...) | T | main.rs:1699:20:1699:27 | T | +| main.rs:1705:21:1705:22 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1709:16:1725:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1710:9:1712:9 | if ... {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1710:16:1710:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1710:16:1710:33 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1710:16:1710:33 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1710:27:1710:32 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1710:37:1710:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1710:37:1710:52 | try_same_error(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1710:37:1710:52 | try_same_error(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1710:54:1712:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1711:22:1711:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1711:22:1711:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1711:22:1711:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1711:22:1711:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1711:30:1711:35 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1714:9:1716:9 | if ... {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1714:16:1714:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1714:16:1714:33 | ...::Ok(...) | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1714:16:1714:33 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1714:27:1714:32 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1714:37:1714:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1714:37:1714:55 | try_convert_error(...) | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1714:37:1714:55 | try_convert_error(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1714:57:1716:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1715:22:1715:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1715:22:1715:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1715:22:1715:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1715:22:1715:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1715:30:1715:35 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1718:9:1720:9 | if ... {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1718:16:1718:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1718:16:1718:33 | ...::Ok(...) | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1718:16:1718:33 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1718:27:1718:32 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1718:37:1718:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1718:37:1718:49 | try_chained(...) | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1718:37:1718:49 | try_chained(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1718:51:1720:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1719:22:1719:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1719:22:1719:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1719:22:1719:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1719:22:1719:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1719:30:1719:35 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:9:1724:9 | if ... {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1722:16:1722:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1722:16:1722:33 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:16:1722:33 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:27:1722:32 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:37:1722:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1722:37:1722:63 | try_complex(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:37:1722:63 | try_complex(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:49:1722:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1722:49:1722:62 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:49:1722:62 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:60:1722:61 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:65:1724:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1723:22:1723:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1723:22:1723:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1723:22:1723:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1723:22:1723:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1723:30:1723:35 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1729:16:1820:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1730:13:1730:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1730:22:1730:22 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1731:13:1731:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1731:17:1731:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1732:13:1732:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1732:17:1732:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1732:17:1732:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:1732:21:1732:21 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1733:13:1733:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1733:17:1733:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1733:17:1733:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1734:13:1734:13 | c | | {EXTERNAL LOCATION} | char | +| main.rs:1734:17:1734:19 | 'c' | | {EXTERNAL LOCATION} | char | +| main.rs:1735:13:1735:17 | hello | | {EXTERNAL LOCATION} | & | +| main.rs:1735:13:1735:17 | hello | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1735:21:1735:27 | "Hello" | | {EXTERNAL LOCATION} | & | +| main.rs:1735:21:1735:27 | "Hello" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1736:13:1736:13 | f | | {EXTERNAL LOCATION} | f64 | +| main.rs:1736:17:1736:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | +| main.rs:1737:13:1737:13 | t | | {EXTERNAL LOCATION} | bool | +| main.rs:1737:17:1737:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1738:13:1738:13 | f | | {EXTERNAL LOCATION} | bool | +| main.rs:1738:17:1738:21 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1741:26:1741:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1741:26:1741:30 | SelfParam | TRef | main.rs:1740:9:1744:9 | Self [trait MyTrait] | +| main.rs:1747:26:1747:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1747:26:1747:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:1747:26:1747:30 | SelfParam | TRef.TArray | main.rs:1746:14:1746:23 | T | +| main.rs:1747:39:1749:13 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1747:39:1749:13 | { ... } | TRef | main.rs:1746:14:1746:23 | T | +| main.rs:1748:17:1748:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1748:17:1748:20 | self | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:1748:17:1748:20 | self | TRef.TArray | main.rs:1746:14:1746:23 | T | +| main.rs:1748:17:1748:36 | ... .unwrap() | | {EXTERNAL LOCATION} | & | +| main.rs:1748:17:1748:36 | ... .unwrap() | TRef | main.rs:1746:14:1746:23 | T | +| main.rs:1748:26:1748:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1751:31:1753:13 | { ... } | | main.rs:1746:14:1746:23 | T | +| main.rs:1752:17:1752:28 | ...::default(...) | | main.rs:1746:14:1746:23 | T | +| main.rs:1756:13:1756:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1756:13:1756:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1756:17:1756:25 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:1756:17:1756:25 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:1756:17:1756:37 | ... .my_method() | | {EXTERNAL LOCATION} | & | +| main.rs:1756:17:1756:37 | ... .my_method() | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1756:18:1756:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1756:21:1756:21 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1756:24:1756:24 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:13:1757:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1757:13:1757:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:17:1757:47 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1757:17:1757:47 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:22:1757:22 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:37:1757:46 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1757:37:1757:46 | &... | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:1757:37:1757:46 | &... | TRef.TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:38:1757:46 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:1757:38:1757:46 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:39:1757:39 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:42:1757:42 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:45:1757:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1758:13:1758:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1758:17:1758:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1758:24:1758:24 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1761:26:1761:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1761:26:1761:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1761:26:1761:30 | SelfParam | TRef.TSlice | main.rs:1760:14:1760:23 | T | +| main.rs:1761:39:1763:13 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1761:39:1763:13 | { ... } | TRef | main.rs:1760:14:1760:23 | T | +| main.rs:1762:17:1762:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1762:17:1762:20 | self | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1762:17:1762:20 | self | TRef.TSlice | main.rs:1760:14:1760:23 | T | +| main.rs:1762:17:1762:27 | self.get(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1762:17:1762:27 | self.get(...) | T | {EXTERNAL LOCATION} | & | +| main.rs:1762:17:1762:27 | self.get(...) | T.TRef | main.rs:1760:14:1760:23 | T | +| main.rs:1762:17:1762:36 | ... .unwrap() | | {EXTERNAL LOCATION} | & | +| main.rs:1762:17:1762:36 | ... .unwrap() | TRef | main.rs:1760:14:1760:23 | T | +| main.rs:1762:26:1762:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1765:31:1767:13 | { ... } | | main.rs:1760:14:1760:23 | T | +| main.rs:1766:17:1766:28 | ...::default(...) | | main.rs:1760:14:1760:23 | T | +| main.rs:1770:13:1770:13 | s | | {EXTERNAL LOCATION} | & | +| main.rs:1770:13:1770:13 | s | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1770:13:1770:13 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:25:1770:34 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1770:25:1770:34 | &... | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1770:25:1770:34 | &... | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:1770:25:1770:34 | &... | TRef.TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:25:1770:34 | &... | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:26:1770:34 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:1770:26:1770:34 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:27:1770:27 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:30:1770:30 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:33:1770:33 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1771:13:1771:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1771:13:1771:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1771:17:1771:17 | s | | {EXTERNAL LOCATION} | & | +| main.rs:1771:17:1771:17 | s | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1771:17:1771:17 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| main.rs:1771:17:1771:29 | s.my_method() | | {EXTERNAL LOCATION} | & | +| main.rs:1771:17:1771:29 | s.my_method() | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1772:13:1772:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1772:13:1772:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1772:17:1772:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1772:17:1772:35 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1772:34:1772:34 | s | | {EXTERNAL LOCATION} | & | +| main.rs:1772:34:1772:34 | s | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1772:34:1772:34 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| main.rs:1773:13:1773:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1773:17:1773:34 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1776:26:1776:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1776:26:1776:30 | SelfParam | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1776:26:1776:30 | SelfParam | TRef.T0 | main.rs:1775:14:1775:23 | T | +| main.rs:1776:26:1776:30 | SelfParam | TRef.T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1776:39:1778:13 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1776:39:1778:13 | { ... } | TRef | main.rs:1775:14:1775:23 | T | +| main.rs:1777:17:1777:23 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1777:17:1777:23 | &... | TRef | main.rs:1775:14:1775:23 | T | +| main.rs:1777:18:1777:21 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1777:18:1777:21 | self | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1777:18:1777:21 | self | TRef.T0 | main.rs:1775:14:1775:23 | T | +| main.rs:1777:18:1777:21 | self | TRef.T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1777:18:1777:23 | self.0 | | main.rs:1775:14:1775:23 | T | +| main.rs:1780:31:1782:13 | { ... } | | main.rs:1775:14:1775:23 | T | +| main.rs:1781:17:1781:28 | ...::default(...) | | main.rs:1775:14:1775:23 | T | +| main.rs:1785:13:1785:13 | p | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1785:13:1785:13 | p | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:1785:13:1785:13 | p | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1785:17:1785:23 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1785:17:1785:23 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:1785:17:1785:23 | TupleExpr | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1785:18:1785:19 | 42 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1785:22:1785:22 | 7 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1786:13:1786:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1786:13:1786:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1786:17:1786:17 | p | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1786:17:1786:17 | p | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:1786:17:1786:17 | p | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1786:17:1786:29 | p.my_method() | | {EXTERNAL LOCATION} | & | +| main.rs:1786:17:1786:29 | p.my_method() | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:13:1787:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1787:13:1787:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:17:1787:39 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1787:17:1787:39 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:37:1787:38 | &p | | {EXTERNAL LOCATION} | & | +| main.rs:1787:37:1787:38 | &p | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1787:37:1787:38 | &p | TRef.T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:37:1787:38 | &p | TRef.T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:38:1787:38 | p | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1787:38:1787:38 | p | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:38:1787:38 | p | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1788:13:1788:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1788:17:1788:39 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1791:26:1791:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1791:26:1791:30 | SelfParam | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1791:26:1791:30 | SelfParam | TRef.TRef | main.rs:1790:14:1790:23 | T | +| main.rs:1791:39:1793:13 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1791:39:1793:13 | { ... } | TRef | main.rs:1790:14:1790:23 | T | +| main.rs:1792:17:1792:21 | * ... | | {EXTERNAL LOCATION} | & | +| main.rs:1792:17:1792:21 | * ... | TRef | main.rs:1790:14:1790:23 | T | +| main.rs:1792:18:1792:21 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1792:18:1792:21 | self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1792:18:1792:21 | self | TRef.TRef | main.rs:1790:14:1790:23 | T | +| main.rs:1795:31:1797:13 | { ... } | | main.rs:1790:14:1790:23 | T | +| main.rs:1796:17:1796:28 | ...::default(...) | | main.rs:1790:14:1790:23 | T | +| main.rs:1800:13:1800:13 | r | | {EXTERNAL LOCATION} | & | +| main.rs:1800:13:1800:13 | r | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1800:17:1800:19 | &42 | | {EXTERNAL LOCATION} | & | +| main.rs:1800:17:1800:19 | &42 | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1800:18:1800:19 | 42 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1801:13:1801:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1801:13:1801:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1801:17:1801:17 | r | | {EXTERNAL LOCATION} | & | +| main.rs:1801:17:1801:17 | r | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1801:17:1801:29 | r.my_method() | | {EXTERNAL LOCATION} | & | +| main.rs:1801:17:1801:29 | r.my_method() | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1802:13:1802:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1802:13:1802:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1802:17:1802:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1802:17:1802:35 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1802:33:1802:34 | &r | | {EXTERNAL LOCATION} | & | +| main.rs:1802:33:1802:34 | &r | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1802:33:1802:34 | &r | TRef.TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1802:34:1802:34 | r | | {EXTERNAL LOCATION} | & | +| main.rs:1802:34:1802:34 | r | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1803:13:1803:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1803:17:1803:33 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1806:26:1806:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1806:26:1806:30 | SelfParam | TRef | file://:0:0:0:0 | * | +| main.rs:1806:26:1806:30 | SelfParam | TRef.TPtr | main.rs:1805:14:1805:23 | T | +| main.rs:1806:39:1808:13 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1806:39:1808:13 | { ... } | TRef | main.rs:1805:14:1805:23 | T | +| main.rs:1807:17:1807:34 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1807:17:1807:34 | { ... } | TRef | main.rs:1805:14:1805:23 | T | +| main.rs:1807:26:1807:32 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1807:26:1807:32 | &... | TRef | main.rs:1805:14:1805:23 | T | +| main.rs:1807:27:1807:32 | * ... | | main.rs:1805:14:1805:23 | T | +| main.rs:1807:28:1807:32 | * ... | | file://:0:0:0:0 | * | +| main.rs:1807:28:1807:32 | * ... | TPtr | main.rs:1805:14:1805:23 | T | +| main.rs:1807:29:1807:32 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1807:29:1807:32 | self | TRef | file://:0:0:0:0 | * | +| main.rs:1807:29:1807:32 | self | TRef.TPtr | main.rs:1805:14:1805:23 | T | +| main.rs:1810:31:1812:13 | { ... } | | main.rs:1805:14:1805:23 | T | +| main.rs:1811:17:1811:28 | ...::default(...) | | main.rs:1805:14:1805:23 | T | +| main.rs:1815:17:1815:17 | v | | {EXTERNAL LOCATION} | i32 | +| main.rs:1815:21:1815:22 | 42 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1816:13:1816:13 | p | | file://:0:0:0:0 | * | +| main.rs:1816:13:1816:13 | p | TPtr | {EXTERNAL LOCATION} | i32 | +| main.rs:1816:27:1816:32 | &mut v | | {EXTERNAL LOCATION} | & | +| main.rs:1816:27:1816:32 | &mut v | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1816:32:1816:32 | v | | {EXTERNAL LOCATION} | i32 | +| main.rs:1817:13:1817:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1817:13:1817:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1817:17:1817:40 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1817:17:1817:40 | { ... } | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1817:26:1817:26 | p | | file://:0:0:0:0 | * | +| main.rs:1817:26:1817:26 | p | TPtr | {EXTERNAL LOCATION} | i32 | +| main.rs:1817:26:1817:38 | p.my_method() | | {EXTERNAL LOCATION} | & | +| main.rs:1817:26:1817:38 | p.my_method() | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1818:13:1818:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1818:13:1818:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1818:17:1818:50 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1818:17:1818:50 | { ... } | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1818:26:1818:48 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1818:26:1818:48 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1818:46:1818:47 | &p | | {EXTERNAL LOCATION} | & | +| main.rs:1818:46:1818:47 | &p | TRef | file://:0:0:0:0 | * | +| main.rs:1818:46:1818:47 | &p | TRef.TPtr | {EXTERNAL LOCATION} | i32 | +| main.rs:1818:47:1818:47 | p | | file://:0:0:0:0 | * | +| main.rs:1818:47:1818:47 | p | TPtr | {EXTERNAL LOCATION} | i32 | +| main.rs:1819:13:1819:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1819:17:1819:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1825:16:1837:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1826:13:1826:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:1826:17:1826:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1826:17:1826:29 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1826:25:1826:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1827:13:1827:13 | y | | {EXTERNAL LOCATION} | bool | +| main.rs:1827:17:1827:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1827:17:1827:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1827:25:1827:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1829:17:1829:17 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1830:13:1830:16 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1830:20:1830:21 | 34 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1830:20:1830:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1830:26:1830:27 | 33 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1831:9:1835:9 | if cond {...} else {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1831:12:1831:15 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1831:17:1833:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1832:17:1832:17 | z | | {EXTERNAL LOCATION} | () | +| main.rs:1832:21:1832:27 | (...) | | {EXTERNAL LOCATION} | () | +| main.rs:1832:22:1832:22 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1832:22:1832:26 | ... = ... | | {EXTERNAL LOCATION} | () | +| main.rs:1832:26:1832:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1833:16:1835:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1834:13:1834:13 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1834:13:1834:17 | ... = ... | | {EXTERNAL LOCATION} | () | +| main.rs:1834:17:1834:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1836:9:1836:9 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1850:30:1852:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1851:13:1851:31 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1851:23:1851:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1851:29:1851:29 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1858:16:1858:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1858:22:1858:24 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1858:41:1863:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1859:13:1862:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1860:20:1860:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1860:20:1860:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1860:20:1860:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1860:29:1860:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1860:29:1860:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1861:20:1861:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1861:20:1861:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1861:20:1861:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1861:29:1861:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1861:29:1861:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1868:23:1868:31 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1868:23:1868:31 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1868:34:1868:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1868:45:1871:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1869:13:1869:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1869:13:1869:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1869:13:1869:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1869:13:1869:27 | ... += ... | | {EXTERNAL LOCATION} | () | +| main.rs:1869:23:1869:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1869:23:1869:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1870:13:1870:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1870:13:1870:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1870:13:1870:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1870:13:1870:27 | ... += ... | | {EXTERNAL LOCATION} | () | +| main.rs:1870:23:1870:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1870:23:1870:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1876:16:1876:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1876:22:1876:24 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1876:41:1881:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1877:13:1880:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1878:20:1878:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1878:20:1878:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1878:20:1878:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1878:29:1878:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1878:29:1878:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1879:20:1879:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1879:20:1879:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1879:20:1879:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1879:29:1879:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1879:29:1879:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1886:23:1886:31 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1886:23:1886:31 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1886:34:1886:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1886:45:1889:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1887:13:1887:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1887:13:1887:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1887:13:1887:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1887:13:1887:27 | ... -= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1887:23:1887:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1887:23:1887:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1888:13:1888:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1888:13:1888:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1888:13:1888:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1888:13:1888:27 | ... -= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1888:23:1888:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1888:23:1888:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1894:16:1894:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1894:22:1894:24 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1894:41:1899:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1895:13:1898:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1896:20:1896:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1896:20:1896:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1896:20:1896:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1896:29:1896:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1896:29:1896:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1897:20:1897:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1897:20:1897:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1897:20:1897:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1897:29:1897:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1897:29:1897:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1903:23:1903:31 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1903:23:1903:31 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1903:34:1903:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1903:45:1906:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1904:13:1904:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1904:13:1904:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1904:13:1904:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1904:13:1904:27 | ... *= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1904:23:1904:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1904:23:1904:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1905:13:1905:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1905:13:1905:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1905:13:1905:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1905:13:1905:27 | ... *= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1905:23:1905:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1905:23:1905:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1911:16:1911:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1911:22:1911:24 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1911:41:1916:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1912:13:1915:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1913:20:1913:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1913:20:1913:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:20:1913:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:29:1913:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1913:29:1913:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1914:20:1914:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1914:20:1914:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1914:20:1914:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1914:29:1914:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1914:29:1914:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1920:23:1920:31 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1920:23:1920:31 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1920:34:1920:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1920:45:1923:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1921:13:1921:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1921:13:1921:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1921:13:1921:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1921:13:1921:27 | ... /= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1921:23:1921:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1921:23:1921:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1922:13:1922:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1922:13:1922:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1922:13:1922:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1922:13:1922:27 | ... /= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1922:23:1922:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1922:23:1922:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1928:16:1928:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1928:22:1928:24 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1928:41:1933:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1929:13:1932:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1930:20:1930:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1930:20:1930:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1930:20:1930:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1930:29:1930:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1930:29:1930:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1931:20:1931:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1931:20:1931:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1931:20:1931:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1931:29:1931:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1931:29:1931:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1937:23:1937:31 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1937:23:1937:31 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1937:34:1937:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1937:45:1940:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1938:13:1938:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1938:13:1938:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1938:13:1938:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1938:13:1938:27 | ... %= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1938:23:1938:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1938:23:1938:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1939:13:1939:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1939:13:1939:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1939:13:1939:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1939:13:1939:27 | ... %= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1939:23:1939:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1939:23:1939:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1945:19:1945:22 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1945:25:1945:27 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1945:44:1950:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1946:13:1949:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1947:20:1947:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1947:20:1947:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1947:20:1947:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1947:29:1947:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1947:29:1947:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1948:20:1948:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1948:20:1948:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1948:20:1948:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1948:29:1948:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1948:29:1948:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1954:26:1954:34 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1954:26:1954:34 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1954:37:1954:39 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1954:48:1957:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1955:13:1955:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1955:13:1955:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1955:13:1955:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1955:13:1955:27 | ... &= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1955:23:1955:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1955:23:1955:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1956:13:1956:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1956:13:1956:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1956:13:1956:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1956:13:1956:27 | ... &= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1956:23:1956:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1956:23:1956:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1962:18:1962:21 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1962:24:1962:26 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1962:43:1967:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1963:13:1966:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1964:20:1964:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1964:20:1964:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1964:20:1964:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1964:29:1964:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1964:29:1964:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1965:20:1965:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1965:20:1965:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1965:20:1965:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1965:29:1965:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1965:29:1965:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1971:25:1971:33 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1971:25:1971:33 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1971:36:1971:38 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1971:47:1974:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1972:13:1972:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1972:13:1972:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1972:13:1972:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1972:13:1972:27 | ... \|= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1972:23:1972:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1972:23:1972:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:13:1973:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1973:13:1973:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1973:13:1973:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:13:1973:27 | ... \|= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1973:23:1973:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1973:23:1973:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1979:19:1979:22 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1979:25:1979:27 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1979:44:1984:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1980:13:1983:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1981:20:1981:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1981:20:1981:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1981:20:1981:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1981:29:1981:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1981:29:1981:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1982:20:1982:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1982:20:1982:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1982:20:1982:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1982:29:1982:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1982:29:1982:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1988:26:1988:34 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1988:26:1988:34 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1988:37:1988:39 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1988:48:1991:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1989:13:1989:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1989:13:1989:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1989:13:1989:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1989:13:1989:27 | ... ^= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1989:23:1989:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1989:23:1989:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1990:13:1990:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1990:13:1990:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1990:13:1990:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1990:13:1990:27 | ... ^= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1990:23:1990:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1990:23:1990:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1996:16:1996:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1996:22:1996:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1996:40:2001:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1997:13:2000:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1998:20:1998:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1998:20:1998:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1998:20:1998:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1998:30:1998:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1999:20:1999:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1999:20:1999:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1999:20:1999:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1999:30:1999:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2005:23:2005:31 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2005:23:2005:31 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2005:34:2005:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2005:44:2008:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2006:13:2006:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2006:13:2006:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2006:13:2006:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2006:13:2006:26 | ... <<= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2006:24:2006:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2007:13:2007:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2007:13:2007:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2007:13:2007:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2007:13:2007:26 | ... <<= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2007:24:2007:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2013:16:2013:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2013:22:2013:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2013:40:2018:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2014:13:2017:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2015:20:2015:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2015:20:2015:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2015:20:2015:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2015:30:2015:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2016:20:2016:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2016:20:2016:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2016:20:2016:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2016:30:2016:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2022:23:2022:31 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2022:23:2022:31 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2022:34:2022:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2022:44:2025:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2023:13:2023:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2023:13:2023:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2023:13:2023:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2023:13:2023:26 | ... >>= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2023:24:2023:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2024:13:2024:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2024:13:2024:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2024:13:2024:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2024:13:2024:26 | ... >>= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2024:24:2024:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2030:16:2030:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2030:30:2035:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2031:13:2034:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2032:20:2032:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2032:21:2032:24 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2032:21:2032:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2033:20:2033:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2033:21:2033:24 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2033:21:2033:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2040:16:2040:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2040:30:2045:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2041:13:2044:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2042:20:2042:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2042:21:2042:24 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2042:21:2042:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2043:20:2043:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2043:21:2043:24 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2043:21:2043:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2049:15:2049:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2049:15:2049:19 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2049:22:2049:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2049:22:2049:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2049:44:2051:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2050:13:2050:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2050:13:2050:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2050:13:2050:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2050:13:2050:29 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2050:13:2050:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2050:23:2050:27 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2050:23:2050:27 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2050:23:2050:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2050:34:2050:37 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2050:34:2050:37 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2050:34:2050:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2050:34:2050:50 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2050:44:2050:48 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2050:44:2050:48 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2050:44:2050:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2053:15:2053:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2053:15:2053:19 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2053:22:2053:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2053:22:2053:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2053:44:2055:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2054:13:2054:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2054:13:2054:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2054:13:2054:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2054:13:2054:29 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2054:13:2054:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2054:23:2054:27 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2054:23:2054:27 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2054:23:2054:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2054:34:2054:37 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2054:34:2054:37 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2054:34:2054:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2054:34:2054:50 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2054:44:2054:48 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2054:44:2054:48 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2054:44:2054:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2059:24:2059:28 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2059:24:2059:28 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2059:31:2059:35 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2059:31:2059:35 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2059:75:2061:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2059:75:2061:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:2060:13:2060:29 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:13:2060:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2060:13:2060:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:2060:14:2060:17 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2060:14:2060:17 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2060:14:2060:19 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:14:2060:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:23:2060:26 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2060:23:2060:26 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2060:23:2060:28 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:43:2060:62 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2060:43:2060:62 | &... | TRef | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:44:2060:62 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:45:2060:49 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2060:45:2060:49 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2060:45:2060:51 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:45:2060:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:55:2060:59 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2060:55:2060:59 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2060:55:2060:61 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2063:15:2063:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2063:15:2063:19 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2063:22:2063:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2063:22:2063:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2063:44:2065:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2064:13:2064:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2064:13:2064:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2064:13:2064:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2064:13:2064:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2064:13:2064:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2064:22:2064:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2064:22:2064:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2064:22:2064:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2064:33:2064:36 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2064:33:2064:36 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2064:33:2064:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2064:33:2064:48 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2064:42:2064:46 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2064:42:2064:46 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2064:42:2064:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2067:15:2067:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2067:15:2067:19 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2067:22:2067:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2067:22:2067:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2067:44:2069:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2068:13:2068:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2068:13:2068:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2068:13:2068:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2068:13:2068:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2068:13:2068:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2068:23:2068:27 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2068:23:2068:27 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2068:23:2068:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2068:34:2068:37 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2068:34:2068:37 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2068:34:2068:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2068:34:2068:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2068:44:2068:48 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2068:44:2068:48 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2068:44:2068:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2071:15:2071:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2071:15:2071:19 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2071:22:2071:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2071:22:2071:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2071:44:2073:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2072:13:2072:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2072:13:2072:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2072:13:2072:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2072:13:2072:28 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2072:13:2072:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2072:22:2072:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2072:22:2072:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2072:22:2072:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2072:33:2072:36 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2072:33:2072:36 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2072:33:2072:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2072:33:2072:48 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2072:42:2072:46 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2072:42:2072:46 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2072:42:2072:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2075:15:2075:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2075:15:2075:19 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2075:22:2075:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2075:22:2075:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2075:44:2077:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2076:13:2076:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2076:13:2076:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2076:13:2076:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2076:13:2076:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2076:13:2076:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2076:23:2076:27 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2076:23:2076:27 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2076:23:2076:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2076:34:2076:37 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2076:34:2076:37 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2076:34:2076:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2076:34:2076:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2076:44:2076:48 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2076:44:2076:48 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2076:44:2076:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2080:26:2080:26 | a | | main.rs:2080:18:2080:23 | T | +| main.rs:2080:32:2080:32 | b | | main.rs:2080:18:2080:23 | T | +| main.rs:2080:51:2082:5 | { ... } | | {EXTERNAL LOCATION} | Output | +| main.rs:2081:9:2081:9 | a | | main.rs:2080:18:2080:23 | T | +| main.rs:2081:9:2081:13 | ... + ... | | {EXTERNAL LOCATION} | Output | +| main.rs:2081:13:2081:13 | b | | main.rs:2080:18:2080:23 | T | +| main.rs:2084:16:2215:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2088:13:2088:18 | i64_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:2088:22:2088:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2088:23:2088:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2088:23:2088:34 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2088:31:2088:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2089:13:2089:18 | i64_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:2089:22:2089:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2089:23:2089:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2089:23:2089:34 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2089:31:2089:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2090:13:2090:18 | i64_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:2090:22:2090:34 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2090:23:2090:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2090:23:2090:33 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2090:30:2090:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2091:13:2091:18 | i64_le | | {EXTERNAL LOCATION} | bool | +| main.rs:2091:22:2091:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2091:23:2091:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2091:23:2091:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2091:31:2091:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2092:13:2092:18 | i64_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:2092:22:2092:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2092:23:2092:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2092:23:2092:34 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2092:30:2092:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2093:13:2093:18 | i64_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:2093:22:2093:37 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2093:23:2093:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2093:23:2093:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2093:32:2093:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2096:13:2096:19 | i64_add | | {EXTERNAL LOCATION} | i64 | +| main.rs:2096:23:2096:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2096:23:2096:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2096:31:2096:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2097:13:2097:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | +| main.rs:2097:23:2097:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2097:23:2097:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2097:31:2097:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2098:13:2098:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | +| main.rs:2098:23:2098:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2098:23:2098:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2098:31:2098:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2099:13:2099:19 | i64_div | | {EXTERNAL LOCATION} | i64 | +| main.rs:2099:23:2099:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2099:23:2099:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2099:31:2099:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2100:13:2100:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | +| main.rs:2100:23:2100:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2100:23:2100:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2100:31:2100:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2101:39:2101:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2101:45:2101:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2104:17:2104:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2104:34:2104:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2105:9:2105:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2105:9:2105:31 | ... += ... | | {EXTERNAL LOCATION} | () | +| main.rs:2105:27:2105:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2107:17:2107:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2107:34:2107:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2108:9:2108:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2108:9:2108:31 | ... -= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2108:27:2108:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2110:17:2110:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2110:34:2110:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2111:9:2111:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2111:9:2111:31 | ... *= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2111:27:2111:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2113:17:2113:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2113:34:2113:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2114:9:2114:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2114:9:2114:31 | ... /= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2114:27:2114:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2116:17:2116:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2116:34:2116:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2117:9:2117:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2117:9:2117:31 | ... %= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2117:27:2117:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2120:13:2120:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | +| main.rs:2120:26:2120:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2120:26:2120:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2120:34:2120:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2121:13:2121:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | +| main.rs:2121:25:2121:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2121:25:2121:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2121:33:2121:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2122:13:2122:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | +| main.rs:2122:26:2122:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2122:26:2122:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2122:34:2122:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2123:13:2123:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | +| main.rs:2123:23:2123:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2123:23:2123:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2123:32:2123:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2124:13:2124:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | +| main.rs:2124:23:2124:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2124:23:2124:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2124:32:2124:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2127:17:2127:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2127:37:2127:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2128:9:2128:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2128:9:2128:34 | ... &= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2128:30:2128:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2130:17:2130:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2130:36:2130:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2131:9:2131:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2131:9:2131:33 | ... \|= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2131:29:2131:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2133:17:2133:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2133:37:2133:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2134:9:2134:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2134:9:2134:34 | ... ^= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2134:30:2134:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2136:17:2136:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2136:34:2136:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2137:9:2137:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2137:9:2137:32 | ... <<= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2137:28:2137:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2139:17:2139:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2139:34:2139:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2140:9:2140:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2140:9:2140:32 | ... >>= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2140:28:2140:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2142:13:2142:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | +| main.rs:2142:23:2142:28 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2142:24:2142:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2143:13:2143:19 | i64_not | | {EXTERNAL LOCATION} | i64 | +| main.rs:2143:23:2143:28 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2143:24:2143:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2146:13:2146:14 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2146:18:2146:36 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2146:28:2146:28 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2146:34:2146:34 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2147:13:2147:14 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2147:18:2147:36 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2147:28:2147:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2147:34:2147:34 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2150:13:2150:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:2150:23:2150:24 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2150:23:2150:30 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2150:29:2150:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2151:13:2151:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:2151:23:2151:24 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2151:23:2151:30 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2151:29:2151:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2152:13:2152:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:2152:23:2152:24 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2152:23:2152:29 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2152:28:2152:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2153:13:2153:19 | vec2_le | | {EXTERNAL LOCATION} | bool | +| main.rs:2153:23:2153:24 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2153:23:2153:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2153:29:2153:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2154:13:2154:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:2154:23:2154:24 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2154:23:2154:29 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2154:28:2154:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2155:13:2155:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:2155:23:2155:24 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2155:23:2155:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2155:29:2155:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2158:13:2158:20 | vec2_add | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2158:24:2158:25 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2158:24:2158:30 | ... + ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2158:29:2158:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2159:13:2159:20 | vec2_sub | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2159:24:2159:25 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2159:24:2159:30 | ... - ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2159:29:2159:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2160:13:2160:20 | vec2_mul | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2160:24:2160:25 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2160:24:2160:30 | ... * ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2160:29:2160:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2161:13:2161:20 | vec2_div | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2161:24:2161:25 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2161:24:2161:30 | ... / ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2161:29:2161:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2162:13:2162:20 | vec2_rem | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2162:24:2162:25 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2162:24:2162:30 | ... % ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2162:29:2162:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2165:17:2165:31 | vec2_add_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2165:35:2165:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2166:9:2166:23 | vec2_add_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2166:9:2166:29 | ... += ... | | {EXTERNAL LOCATION} | () | +| main.rs:2166:28:2166:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2168:17:2168:31 | vec2_sub_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2168:35:2168:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2169:9:2169:23 | vec2_sub_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2169:9:2169:29 | ... -= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2169:28:2169:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2171:17:2171:31 | vec2_mul_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2171:35:2171:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2172:9:2172:23 | vec2_mul_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2172:9:2172:29 | ... *= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2172:28:2172:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2174:17:2174:31 | vec2_div_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2174:35:2174:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2175:9:2175:23 | vec2_div_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2175:9:2175:29 | ... /= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2175:28:2175:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2177:17:2177:31 | vec2_rem_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2177:35:2177:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2178:9:2178:23 | vec2_rem_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2178:9:2178:29 | ... %= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2178:28:2178:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2181:13:2181:23 | vec2_bitand | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2181:27:2181:28 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2181:27:2181:33 | ... & ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2181:32:2181:33 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2182:13:2182:22 | vec2_bitor | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2182:26:2182:27 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2182:26:2182:32 | ... \| ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2182:31:2182:32 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2183:13:2183:23 | vec2_bitxor | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2183:27:2183:28 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2183:27:2183:33 | ... ^ ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2183:32:2183:33 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2184:13:2184:20 | vec2_shl | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2184:24:2184:25 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2184:24:2184:33 | ... << ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2184:30:2184:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2185:13:2185:20 | vec2_shr | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2185:24:2185:25 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2185:24:2185:33 | ... >> ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2185:30:2185:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2188:17:2188:34 | vec2_bitand_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2188:38:2188:39 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2189:9:2189:26 | vec2_bitand_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2189:9:2189:32 | ... &= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2189:31:2189:32 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2191:17:2191:33 | vec2_bitor_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2191:37:2191:38 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2192:9:2192:25 | vec2_bitor_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2192:9:2192:31 | ... \|= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2192:30:2192:31 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2194:17:2194:34 | vec2_bitxor_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2194:38:2194:39 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2195:9:2195:26 | vec2_bitxor_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2195:9:2195:32 | ... ^= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2195:31:2195:32 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2197:17:2197:31 | vec2_shl_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2197:35:2197:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2198:9:2198:23 | vec2_shl_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2198:9:2198:32 | ... <<= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2198:29:2198:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2200:17:2200:31 | vec2_shr_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2200:35:2200:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2201:9:2201:23 | vec2_shr_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2201:9:2201:32 | ... >>= ... | | {EXTERNAL LOCATION} | () | +| main.rs:2201:29:2201:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2204:13:2204:20 | vec2_neg | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2204:24:2204:26 | - ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2204:25:2204:26 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2205:13:2205:20 | vec2_not | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2205:24:2205:26 | ! ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2205:25:2205:26 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2208:13:2208:24 | default_vec2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2208:28:2208:45 | ...::default(...) | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2209:13:2209:26 | vec2_zero_plus | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2209:30:2209:48 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2209:30:2209:63 | ... + ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2209:40:2209:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2209:46:2209:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2209:52:2209:63 | default_vec2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2213:13:2213:24 | default_vec2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2213:28:2213:45 | ...::default(...) | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2214:13:2214:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | +| main.rs:2214:30:2214:48 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2214:30:2214:64 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2214:40:2214:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2214:46:2214:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2214:53:2214:64 | default_vec2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2224:18:2224:21 | SelfParam | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2224:24:2224:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2227:25:2229:5 | { ... } | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2228:9:2228:10 | S1 | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2231:41:2233:5 | { ... } | | main.rs:2231:16:2231:39 | impl ... | +| main.rs:2232:9:2232:20 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2232:9:2232:20 | { ... } | dyn(Output) | main.rs:2221:5:2221:14 | S1 | +| main.rs:2232:17:2232:18 | S1 | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2235:41:2237:5 | { ... } | | main.rs:2235:16:2235:39 | impl ... | +| main.rs:2236:9:2236:16 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2236:9:2236:16 | { ... } | dyn(Output) | {EXTERNAL LOCATION} | () | +| main.rs:2245:13:2245:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:2245:13:2245:42 | SelfParam | Ptr | {EXTERNAL LOCATION} | & | +| main.rs:2245:13:2245:42 | SelfParam | Ptr.TRef | main.rs:2239:5:2239:14 | S2 | +| main.rs:2246:13:2246:15 | _cx | | {EXTERNAL LOCATION} | & | +| main.rs:2246:13:2246:15 | _cx | TRef | {EXTERNAL LOCATION} | Context | +| main.rs:2247:44:2249:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:2247:44:2249:9 | { ... } | T | main.rs:2221:5:2221:14 | S1 | +| main.rs:2248:13:2248:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:2248:13:2248:38 | ...::Ready(...) | T | main.rs:2221:5:2221:14 | S1 | +| main.rs:2248:36:2248:37 | S1 | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2252:41:2254:5 | { ... } | | main.rs:2252:16:2252:39 | impl ... | +| main.rs:2253:9:2253:10 | S2 | | main.rs:2239:5:2239:14 | S2 | +| main.rs:2253:9:2253:10 | S2 | | main.rs:2252:16:2252:39 | impl ... | +| main.rs:2256:22:2264:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2257:9:2257:12 | f1(...) | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2257:9:2257:12 | f1(...) | dyn(Output) | main.rs:2221:5:2221:14 | S1 | +| main.rs:2257:9:2257:18 | await ... | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2257:9:2257:22 | ... .f() | | {EXTERNAL LOCATION} | () | +| main.rs:2258:9:2258:12 | f2(...) | | main.rs:2231:16:2231:39 | impl ... | +| main.rs:2258:9:2258:18 | await ... | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2258:9:2258:22 | ... .f() | | {EXTERNAL LOCATION} | () | +| main.rs:2259:9:2259:12 | f3(...) | | main.rs:2235:16:2235:39 | impl ... | +| main.rs:2259:9:2259:18 | await ... | | {EXTERNAL LOCATION} | () | +| main.rs:2260:9:2260:12 | f4(...) | | main.rs:2252:16:2252:39 | impl ... | +| main.rs:2260:9:2260:18 | await ... | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2260:9:2260:22 | ... .f() | | {EXTERNAL LOCATION} | () | +| main.rs:2261:9:2261:10 | S2 | | main.rs:2239:5:2239:14 | S2 | +| main.rs:2261:9:2261:16 | await S2 | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2261:9:2261:20 | ... .f() | | {EXTERNAL LOCATION} | () | +| main.rs:2262:13:2262:13 | b | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2262:13:2262:13 | b | dyn(Output) | main.rs:2221:5:2221:14 | S1 | +| main.rs:2262:17:2262:28 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2262:17:2262:28 | { ... } | dyn(Output) | main.rs:2221:5:2221:14 | S1 | +| main.rs:2262:25:2262:26 | S1 | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2263:9:2263:9 | b | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2263:9:2263:9 | b | dyn(Output) | main.rs:2221:5:2221:14 | S1 | +| main.rs:2263:9:2263:15 | await b | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2263:9:2263:19 | ... .f() | | {EXTERNAL LOCATION} | () | +| main.rs:2274:15:2274:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2274:15:2274:19 | SelfParam | TRef | main.rs:2273:5:2275:5 | Self [trait Trait1] | +| main.rs:2274:22:2274:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2278:15:2278:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2278:15:2278:19 | SelfParam | TRef | main.rs:2277:5:2279:5 | Self [trait Trait2] | +| main.rs:2278:22:2278:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2282:15:2282:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2282:15:2282:19 | SelfParam | TRef | main.rs:2268:5:2269:14 | S1 | +| main.rs:2282:22:2282:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2286:15:2286:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2286:15:2286:19 | SelfParam | TRef | main.rs:2268:5:2269:14 | S1 | +| main.rs:2286:22:2286:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2289:37:2291:5 | { ... } | | main.rs:2289:16:2289:35 | impl ... + ... | +| main.rs:2290:9:2290:10 | S1 | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2290:9:2290:10 | S1 | | main.rs:2289:16:2289:35 | impl ... + ... | +| main.rs:2294:18:2294:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2294:18:2294:22 | SelfParam | TRef | main.rs:2293:5:2295:5 | Self [trait MyTrait] | +| main.rs:2298:18:2298:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2298:18:2298:22 | SelfParam | TRef | main.rs:2268:5:2269:14 | S1 | +| main.rs:2298:31:2300:9 | { ... } | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2299:13:2299:14 | S2 | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2304:18:2304:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2304:18:2304:22 | SelfParam | TRef | main.rs:2271:5:2271:22 | S3 | +| main.rs:2304:18:2304:22 | SelfParam | TRef.T3 | main.rs:2303:10:2303:17 | T | +| main.rs:2304:30:2307:9 | { ... } | | main.rs:2303:10:2303:17 | T | +| main.rs:2305:17:2305:21 | S3(...) | | {EXTERNAL LOCATION} | & | +| main.rs:2305:17:2305:21 | S3(...) | | main.rs:2271:5:2271:22 | S3 | +| main.rs:2305:17:2305:21 | S3(...) | TRef | main.rs:2271:5:2271:22 | S3 | +| main.rs:2305:17:2305:21 | S3(...) | TRef.T3 | main.rs:2303:10:2303:17 | T | +| main.rs:2305:25:2305:28 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2305:25:2305:28 | self | TRef | main.rs:2271:5:2271:22 | S3 | +| main.rs:2305:25:2305:28 | self | TRef.T3 | main.rs:2303:10:2303:17 | T | +| main.rs:2306:13:2306:21 | t.clone() | | main.rs:2303:10:2303:17 | T | +| main.rs:2310:45:2312:5 | { ... } | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2311:9:2311:10 | S1 | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2311:9:2311:10 | S1 | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2314:41:2314:41 | t | | main.rs:2314:26:2314:38 | B | +| main.rs:2314:52:2316:5 | { ... } | | main.rs:2314:23:2314:23 | A | +| main.rs:2315:9:2315:9 | t | | main.rs:2314:26:2314:38 | B | +| main.rs:2315:9:2315:17 | t.get_a() | | main.rs:2314:23:2314:23 | A | +| main.rs:2318:34:2318:34 | x | | main.rs:2318:24:2318:31 | T | +| main.rs:2318:59:2320:5 | { ... } | | main.rs:2318:43:2318:57 | impl ... | +| main.rs:2318:59:2320:5 | { ... } | impl(T) | main.rs:2318:24:2318:31 | T | +| main.rs:2319:9:2319:13 | S3(...) | | main.rs:2271:5:2271:22 | S3 | +| main.rs:2319:9:2319:13 | S3(...) | | main.rs:2318:43:2318:57 | impl ... | +| main.rs:2319:9:2319:13 | S3(...) | T3 | main.rs:2318:24:2318:31 | T | +| main.rs:2319:9:2319:13 | S3(...) | impl(T) | main.rs:2318:24:2318:31 | T | +| main.rs:2319:12:2319:12 | x | | main.rs:2318:24:2318:31 | T | +| main.rs:2322:34:2322:34 | x | | main.rs:2322:24:2322:31 | T | +| main.rs:2322:67:2324:5 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2322:67:2324:5 | { ... } | T | main.rs:2322:50:2322:64 | impl ... | +| main.rs:2322:67:2324:5 | { ... } | T.impl(T) | main.rs:2322:24:2322:31 | T | +| main.rs:2323:9:2323:19 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2323:9:2323:19 | Some(...) | T | main.rs:2271:5:2271:22 | S3 | +| main.rs:2323:9:2323:19 | Some(...) | T | main.rs:2322:50:2322:64 | impl ... | +| main.rs:2323:9:2323:19 | Some(...) | T.T3 | main.rs:2322:24:2322:31 | T | +| main.rs:2323:9:2323:19 | Some(...) | T.impl(T) | main.rs:2322:24:2322:31 | T | +| main.rs:2323:14:2323:18 | S3(...) | | main.rs:2271:5:2271:22 | S3 | +| main.rs:2323:14:2323:18 | S3(...) | T3 | main.rs:2322:24:2322:31 | T | +| main.rs:2323:17:2323:17 | x | | main.rs:2322:24:2322:31 | T | +| main.rs:2326:34:2326:34 | x | | main.rs:2326:24:2326:31 | T | +| main.rs:2326:78:2328:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2326:78:2328:5 | { ... } | T0 | main.rs:2326:44:2326:58 | impl ... | +| main.rs:2326:78:2328:5 | { ... } | T0.impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2326:78:2328:5 | { ... } | T1 | main.rs:2326:61:2326:75 | impl ... | +| main.rs:2326:78:2328:5 | { ... } | T1.impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2327:9:2327:30 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2327:9:2327:30 | TupleExpr | T0 | main.rs:2271:5:2271:22 | S3 | +| main.rs:2327:9:2327:30 | TupleExpr | T0 | main.rs:2326:44:2326:58 | impl ... | +| main.rs:2327:9:2327:30 | TupleExpr | T0.T3 | main.rs:2326:24:2326:31 | T | +| main.rs:2327:9:2327:30 | TupleExpr | T0.impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2327:9:2327:30 | TupleExpr | T1 | main.rs:2271:5:2271:22 | S3 | +| main.rs:2327:9:2327:30 | TupleExpr | T1 | main.rs:2326:61:2326:75 | impl ... | +| main.rs:2327:9:2327:30 | TupleExpr | T1.T3 | main.rs:2326:24:2326:31 | T | +| main.rs:2327:9:2327:30 | TupleExpr | T1.impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2327:10:2327:22 | S3(...) | | main.rs:2271:5:2271:22 | S3 | +| main.rs:2327:10:2327:22 | S3(...) | | main.rs:2326:44:2326:58 | impl ... | +| main.rs:2327:10:2327:22 | S3(...) | T3 | main.rs:2326:24:2326:31 | T | +| main.rs:2327:10:2327:22 | S3(...) | impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2327:13:2327:13 | x | | main.rs:2326:24:2326:31 | T | +| main.rs:2327:13:2327:21 | x.clone() | | main.rs:2326:24:2326:31 | T | +| main.rs:2327:25:2327:29 | S3(...) | | main.rs:2271:5:2271:22 | S3 | +| main.rs:2327:25:2327:29 | S3(...) | | main.rs:2326:61:2326:75 | impl ... | +| main.rs:2327:25:2327:29 | S3(...) | T3 | main.rs:2326:24:2326:31 | T | +| main.rs:2327:25:2327:29 | S3(...) | impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2327:28:2327:28 | x | | main.rs:2326:24:2326:31 | T | +| main.rs:2330:26:2330:26 | t | | main.rs:2330:29:2330:43 | impl ... | +| main.rs:2330:51:2332:5 | { ... } | | main.rs:2330:23:2330:23 | A | +| main.rs:2331:9:2331:9 | t | | main.rs:2330:29:2330:43 | impl ... | +| main.rs:2331:9:2331:17 | t.get_a() | | main.rs:2330:23:2330:23 | A | +| main.rs:2334:16:2348:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2335:13:2335:13 | x | | main.rs:2289:16:2289:35 | impl ... + ... | +| main.rs:2335:17:2335:20 | f1(...) | | main.rs:2289:16:2289:35 | impl ... + ... | +| main.rs:2336:9:2336:9 | x | | main.rs:2289:16:2289:35 | impl ... + ... | +| main.rs:2336:9:2336:14 | x.f1() | | {EXTERNAL LOCATION} | () | +| main.rs:2337:9:2337:9 | x | | main.rs:2289:16:2289:35 | impl ... + ... | +| main.rs:2337:9:2337:14 | x.f2() | | {EXTERNAL LOCATION} | () | +| main.rs:2338:13:2338:13 | a | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2338:17:2338:32 | get_a_my_trait(...) | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2339:13:2339:13 | b | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2339:17:2339:33 | uses_my_trait1(...) | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2339:32:2339:32 | a | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2340:13:2340:13 | a | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2340:17:2340:32 | get_a_my_trait(...) | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2341:13:2341:13 | c | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2341:17:2341:33 | uses_my_trait2(...) | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2341:32:2341:32 | a | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2342:13:2342:13 | d | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2342:17:2342:34 | uses_my_trait2(...) | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2342:32:2342:33 | S1 | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2343:13:2343:13 | e | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2343:17:2343:35 | get_a_my_trait2(...) | | main.rs:2318:43:2318:57 | impl ... | +| main.rs:2343:17:2343:35 | get_a_my_trait2(...) | impl(T) | main.rs:2268:5:2269:14 | S1 | +| main.rs:2343:17:2343:43 | ... .get_a() | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2343:33:2343:34 | S1 | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2346:13:2346:13 | f | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2346:17:2346:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2346:17:2346:35 | get_a_my_trait3(...) | T | main.rs:2322:50:2322:64 | impl ... | +| main.rs:2346:17:2346:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2268:5:2269:14 | S1 | +| main.rs:2346:17:2346:44 | ... .unwrap() | | main.rs:2322:50:2322:64 | impl ... | +| main.rs:2346:17:2346:44 | ... .unwrap() | impl(T) | main.rs:2268:5:2269:14 | S1 | +| main.rs:2346:17:2346:52 | ... .get_a() | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2346:33:2346:34 | S1 | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2347:13:2347:13 | g | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | T0 | main.rs:2326:44:2326:58 | impl ... | +| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | T0.impl(T) | main.rs:2268:5:2269:14 | S1 | +| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | T1 | main.rs:2326:61:2326:75 | impl ... | +| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | T1.impl(T) | main.rs:2268:5:2269:14 | S1 | +| main.rs:2347:17:2347:37 | ... .0 | | main.rs:2326:44:2326:58 | impl ... | +| main.rs:2347:17:2347:37 | ... .0 | impl(T) | main.rs:2268:5:2269:14 | S1 | +| main.rs:2347:17:2347:45 | ... .get_a() | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2347:33:2347:34 | S1 | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2358:16:2358:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2358:16:2358:20 | SelfParam | TRef | main.rs:2354:5:2355:13 | S | +| main.rs:2358:31:2360:9 | { ... } | | main.rs:2354:5:2355:13 | S | +| main.rs:2359:13:2359:13 | S | | main.rs:2354:5:2355:13 | S | +| main.rs:2369:26:2371:9 | { ... } | | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2369:26:2371:9 | { ... } | T | main.rs:2368:10:2368:10 | T | +| main.rs:2370:13:2370:38 | MyVec {...} | | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2370:13:2370:38 | MyVec {...} | T | main.rs:2368:10:2368:10 | T | +| main.rs:2370:27:2370:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2370:27:2370:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2370:27:2370:36 | ...::new(...) | T | main.rs:2368:10:2368:10 | T | +| main.rs:2373:17:2373:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2373:17:2373:25 | SelfParam | TRef | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2373:17:2373:25 | SelfParam | TRef.T | main.rs:2368:10:2368:10 | T | +| main.rs:2373:28:2373:32 | value | | main.rs:2368:10:2368:10 | T | +| main.rs:2373:38:2375:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2374:13:2374:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2374:13:2374:16 | self | TRef | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2374:13:2374:16 | self | TRef.T | main.rs:2368:10:2368:10 | T | +| main.rs:2374:13:2374:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2374:13:2374:21 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2374:13:2374:21 | self.data | T | main.rs:2368:10:2368:10 | T | +| main.rs:2374:13:2374:33 | ... .push(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2374:28:2374:32 | value | | main.rs:2368:10:2368:10 | T | +| main.rs:2382:18:2382:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2382:18:2382:22 | SelfParam | TRef | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2382:18:2382:22 | SelfParam | TRef.T | main.rs:2378:10:2378:10 | T | +| main.rs:2382:25:2382:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2382:56:2384:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:2382:56:2384:9 | { ... } | TRef | main.rs:2378:10:2378:10 | T | +| main.rs:2383:13:2383:29 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2383:13:2383:29 | &... | TRef | main.rs:2378:10:2378:10 | T | +| main.rs:2383:14:2383:17 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2383:14:2383:17 | self | TRef | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2383:14:2383:17 | self | TRef.T | main.rs:2378:10:2378:10 | T | +| main.rs:2383:14:2383:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2383:14:2383:22 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2383:14:2383:22 | self.data | T | main.rs:2378:10:2378:10 | T | +| main.rs:2383:14:2383:29 | ...[index] | | main.rs:2378:10:2378:10 | T | +| main.rs:2383:24:2383:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2387:22:2387:26 | slice | | {EXTERNAL LOCATION} | & | +| main.rs:2387:22:2387:26 | slice | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:2387:22:2387:26 | slice | TRef.TSlice | main.rs:2354:5:2355:13 | S | +| main.rs:2387:35:2389:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2388:13:2388:13 | x | | main.rs:2354:5:2355:13 | S | +| main.rs:2388:17:2388:21 | slice | | {EXTERNAL LOCATION} | & | +| main.rs:2388:17:2388:21 | slice | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:2388:17:2388:21 | slice | TRef.TSlice | main.rs:2354:5:2355:13 | S | +| main.rs:2388:17:2388:24 | slice[0] | | main.rs:2354:5:2355:13 | S | +| main.rs:2388:17:2388:30 | ... .foo() | | main.rs:2354:5:2355:13 | S | +| main.rs:2388:23:2388:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2391:37:2391:37 | a | | main.rs:2391:20:2391:34 | T | +| main.rs:2391:43:2391:43 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2394:5:2396:5 | { ... } | | {EXTERNAL LOCATION} | Output | +| main.rs:2395:9:2395:9 | a | | main.rs:2391:20:2391:34 | T | +| main.rs:2395:9:2395:12 | a[b] | | {EXTERNAL LOCATION} | Output | +| main.rs:2395:11:2395:11 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2398:16:2409:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2399:17:2399:19 | vec | | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2399:17:2399:19 | vec | T | main.rs:2354:5:2355:13 | S | +| main.rs:2399:23:2399:34 | ...::new(...) | | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2399:23:2399:34 | ...::new(...) | T | main.rs:2354:5:2355:13 | S | +| main.rs:2400:9:2400:11 | vec | | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2400:9:2400:11 | vec | T | main.rs:2354:5:2355:13 | S | +| main.rs:2400:9:2400:19 | vec.push(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2400:18:2400:18 | S | | main.rs:2354:5:2355:13 | S | +| main.rs:2401:9:2401:11 | vec | | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2401:9:2401:11 | vec | T | main.rs:2354:5:2355:13 | S | +| main.rs:2401:9:2401:14 | vec[0] | | main.rs:2354:5:2355:13 | S | +| main.rs:2401:9:2401:20 | ... .foo() | | main.rs:2354:5:2355:13 | S | +| main.rs:2401:13:2401:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2403:13:2403:14 | xs | | {EXTERNAL LOCATION} | [;] | +| main.rs:2403:13:2403:14 | xs | TArray | main.rs:2354:5:2355:13 | S | +| main.rs:2403:21:2403:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2403:26:2403:28 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2403:26:2403:28 | [...] | TArray | main.rs:2354:5:2355:13 | S | +| main.rs:2403:27:2403:27 | S | | main.rs:2354:5:2355:13 | S | +| main.rs:2404:13:2404:13 | x | | main.rs:2354:5:2355:13 | S | +| main.rs:2404:17:2404:18 | xs | | {EXTERNAL LOCATION} | [;] | +| main.rs:2404:17:2404:18 | xs | TArray | main.rs:2354:5:2355:13 | S | +| main.rs:2404:17:2404:21 | xs[0] | | main.rs:2354:5:2355:13 | S | +| main.rs:2404:17:2404:27 | ... .foo() | | main.rs:2354:5:2355:13 | S | +| main.rs:2404:20:2404:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2406:29:2406:31 | vec | | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2406:29:2406:31 | vec | T | main.rs:2354:5:2355:13 | S | +| main.rs:2406:34:2406:34 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2408:9:2408:26 | analyze_slice(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2408:23:2408:25 | &xs | | {EXTERNAL LOCATION} | & | +| main.rs:2408:23:2408:25 | &xs | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2408:23:2408:25 | &xs | TRef.TArray | main.rs:2354:5:2355:13 | S | +| main.rs:2408:24:2408:25 | xs | | {EXTERNAL LOCATION} | [;] | +| main.rs:2408:24:2408:25 | xs | TArray | main.rs:2354:5:2355:13 | S | +| main.rs:2413:16:2415:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2414:13:2414:13 | x | | {EXTERNAL LOCATION} | String | +| main.rs:2414:17:2414:46 | MacroExpr | | {EXTERNAL LOCATION} | String | +| main.rs:2414:25:2414:35 | "Hello, {}" | | {EXTERNAL LOCATION} | & | +| main.rs:2414:25:2414:35 | "Hello, {}" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2414:25:2414:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2414:25:2414:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2414:25:2414:45 | { ... } | | {EXTERNAL LOCATION} | String | +| main.rs:2414:38:2414:45 | "World!" | | {EXTERNAL LOCATION} | & | +| main.rs:2414:38:2414:45 | "World!" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2423:19:2423:22 | SelfParam | | main.rs:2419:5:2424:5 | Self [trait MyAdd] | +| main.rs:2423:25:2423:27 | rhs | | main.rs:2419:17:2419:26 | Rhs | +| main.rs:2430:19:2430:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2430:25:2430:29 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2430:45:2432:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2431:13:2431:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2439:19:2439:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2439:25:2439:29 | value | | {EXTERNAL LOCATION} | & | +| main.rs:2439:25:2439:29 | value | TRef | {EXTERNAL LOCATION} | i64 | +| main.rs:2439:46:2441:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2440:13:2440:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2440:14:2440:18 | value | | {EXTERNAL LOCATION} | & | +| main.rs:2440:14:2440:18 | value | TRef | {EXTERNAL LOCATION} | i64 | +| main.rs:2448:19:2448:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2448:25:2448:29 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2448:46:2454:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2449:13:2453:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2449:13:2453:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2449:16:2449:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2449:22:2451:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2449:22:2451:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2450:17:2450:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2450:17:2450:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2451:20:2453:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2451:20:2453:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2452:17:2452:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2452:17:2452:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2463:19:2463:22 | SelfParam | | main.rs:2457:5:2457:19 | S | +| main.rs:2463:19:2463:22 | SelfParam | T | main.rs:2459:10:2459:17 | T | +| main.rs:2463:25:2463:29 | other | | main.rs:2457:5:2457:19 | S | +| main.rs:2463:25:2463:29 | other | T | main.rs:2459:10:2459:17 | T | +| main.rs:2463:54:2465:9 | { ... } | | main.rs:2457:5:2457:19 | S | +| main.rs:2463:54:2465:9 | { ... } | T | main.rs:2420:9:2420:20 | Output | +| main.rs:2464:13:2464:39 | S(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2464:13:2464:39 | S(...) | T | main.rs:2420:9:2420:20 | Output | +| main.rs:2464:15:2464:22 | (...) | | main.rs:2459:10:2459:17 | T | +| main.rs:2464:16:2464:19 | self | | main.rs:2457:5:2457:19 | S | +| main.rs:2464:16:2464:19 | self | T | main.rs:2459:10:2459:17 | T | +| main.rs:2464:16:2464:21 | self.0 | | main.rs:2459:10:2459:17 | T | +| main.rs:2464:31:2464:35 | other | | main.rs:2457:5:2457:19 | S | +| main.rs:2464:31:2464:35 | other | T | main.rs:2459:10:2459:17 | T | +| main.rs:2464:31:2464:37 | other.0 | | main.rs:2459:10:2459:17 | T | +| main.rs:2472:19:2472:22 | SelfParam | | main.rs:2457:5:2457:19 | S | +| main.rs:2472:19:2472:22 | SelfParam | T | main.rs:2468:10:2468:17 | T | +| main.rs:2472:25:2472:29 | other | | main.rs:2468:10:2468:17 | T | +| main.rs:2472:51:2474:9 | { ... } | | main.rs:2457:5:2457:19 | S | +| main.rs:2472:51:2474:9 | { ... } | T | main.rs:2420:9:2420:20 | Output | +| main.rs:2473:13:2473:37 | S(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2473:13:2473:37 | S(...) | T | main.rs:2420:9:2420:20 | Output | +| main.rs:2473:15:2473:22 | (...) | | main.rs:2468:10:2468:17 | T | +| main.rs:2473:16:2473:19 | self | | main.rs:2457:5:2457:19 | S | +| main.rs:2473:16:2473:19 | self | T | main.rs:2468:10:2468:17 | T | +| main.rs:2473:16:2473:21 | self.0 | | main.rs:2468:10:2468:17 | T | +| main.rs:2473:31:2473:35 | other | | main.rs:2468:10:2468:17 | T | +| main.rs:2484:19:2484:22 | SelfParam | | main.rs:2457:5:2457:19 | S | +| main.rs:2484:19:2484:22 | SelfParam | T | main.rs:2477:14:2477:14 | T | +| main.rs:2484:25:2484:29 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2484:25:2484:29 | other | TRef | main.rs:2477:14:2477:14 | T | +| main.rs:2484:55:2486:9 | { ... } | | main.rs:2457:5:2457:19 | S | +| main.rs:2485:13:2485:37 | S(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2485:15:2485:22 | (...) | | main.rs:2477:14:2477:14 | T | +| main.rs:2485:16:2485:19 | self | | main.rs:2457:5:2457:19 | S | +| main.rs:2485:16:2485:19 | self | T | main.rs:2477:14:2477:14 | T | +| main.rs:2485:16:2485:21 | self.0 | | main.rs:2477:14:2477:14 | T | +| main.rs:2485:31:2485:35 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2485:31:2485:35 | other | TRef | main.rs:2477:14:2477:14 | T | +| main.rs:2491:20:2491:24 | value | | main.rs:2489:18:2489:18 | T | +| main.rs:2496:20:2496:24 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2496:40:2498:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2497:13:2497:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2503:20:2503:24 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2503:41:2509:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2504:13:2508:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2504:13:2508:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2504:16:2504:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2504:22:2506:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2504:22:2506:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2505:17:2505:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:17:2505:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2506:20:2508:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:20:2508:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2507:17:2507:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2507:17:2507:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2514:21:2514:25 | value | | main.rs:2512:19:2512:19 | T | +| main.rs:2514:31:2514:31 | x | | main.rs:2512:5:2515:5 | Self [trait MyFrom2] | +| main.rs:2519:21:2519:25 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2519:33:2519:33 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2519:48:2521:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2520:13:2520:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2526:21:2526:25 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2526:34:2526:34 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2526:49:2532:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2527:13:2531:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2527:16:2527:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2527:22:2529:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2528:17:2528:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2529:20:2531:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2530:17:2530:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2537:15:2537:15 | x | | main.rs:2535:5:2541:5 | Self [trait MySelfTrait] | +| main.rs:2540:15:2540:15 | x | | main.rs:2535:5:2541:5 | Self [trait MySelfTrait] | +| main.rs:2545:15:2545:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2545:31:2547:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2546:13:2546:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2546:13:2546:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2546:17:2546:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2550:15:2550:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2550:32:2552:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2551:13:2551:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2551:13:2551:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2551:17:2551:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2557:15:2557:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2557:31:2559:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2558:13:2558:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2558:13:2558:13 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2562:15:2562:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2562:32:2564:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2563:13:2563:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2567:16:2592:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2568:13:2568:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2568:22:2568:23 | 73 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2568:22:2568:23 | 73 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2569:9:2569:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2569:9:2569:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2569:18:2569:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2570:9:2570:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2570:9:2570:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2570:18:2570:22 | &5i64 | | {EXTERNAL LOCATION} | & | +| main.rs:2570:18:2570:22 | &5i64 | TRef | {EXTERNAL LOCATION} | i64 | +| main.rs:2570:19:2570:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2571:9:2571:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2571:9:2571:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2571:18:2571:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2573:9:2573:15 | S(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2573:9:2573:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2573:9:2573:31 | ... .my_add(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2573:11:2573:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2573:24:2573:30 | S(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2573:24:2573:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2573:26:2573:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2574:9:2574:15 | S(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2574:9:2574:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2574:11:2574:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2574:24:2574:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2575:9:2575:15 | S(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2575:9:2575:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2575:9:2575:29 | ... .my_add(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2575:11:2575:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2575:24:2575:28 | &3i64 | | {EXTERNAL LOCATION} | & | +| main.rs:2575:24:2575:28 | &3i64 | TRef | {EXTERNAL LOCATION} | i64 | +| main.rs:2575:25:2575:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2577:13:2577:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2577:17:2577:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2577:30:2577:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2578:13:2578:13 | y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2578:17:2578:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2578:30:2578:33 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2579:13:2579:13 | z | | {EXTERNAL LOCATION} | i64 | +| main.rs:2579:22:2579:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2579:38:2579:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2580:9:2580:34 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2580:23:2580:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2580:30:2580:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2581:9:2581:33 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2581:23:2581:26 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2581:29:2581:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2582:9:2582:38 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2582:27:2582:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2582:34:2582:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2584:9:2584:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2584:17:2584:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2585:9:2585:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2585:17:2585:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2586:9:2586:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2586:18:2586:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2587:9:2587:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2587:18:2587:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2588:9:2588:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2588:25:2588:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2589:9:2589:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2589:25:2589:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2590:9:2590:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2590:25:2590:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2591:9:2591:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2591:25:2591:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2599:26:2601:9 | { ... } | | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2600:13:2600:25 | MyCallable {...} | | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2603:17:2603:21 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2603:17:2603:21 | SelfParam | TRef | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2603:31:2605:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2604:13:2604:13 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2604:13:2604:13 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2608:16:2715:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2611:9:2611:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2611:13:2611:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:18:2611:26 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2611:18:2611:26 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:19:2611:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:22:2611:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:25:2611:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:28:2611:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2612:9:2612:44 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2612:18:2612:26 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2612:18:2612:26 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:18:2612:41 | ... .map(...) | | {EXTERNAL LOCATION} | [;] | +| main.rs:2612:19:2612:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:22:2612:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:25:2612:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:32:2612:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:2612:32:2612:40 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| main.rs:2612:40:2612:40 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:43:2612:44 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2613:9:2613:41 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2613:13:2613:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:18:2613:26 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2613:18:2613:26 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:18:2613:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | +| main.rs:2613:18:2613:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:19:2613:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:22:2613:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:25:2613:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:40:2613:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2615:13:2615:17 | vals1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2615:13:2615:17 | vals1 | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2615:13:2615:17 | vals1 | TArray | {EXTERNAL LOCATION} | u8 | +| main.rs:2615:21:2615:31 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2615:21:2615:31 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2615:21:2615:31 | [...] | TArray | {EXTERNAL LOCATION} | u8 | +| main.rs:2615:22:2615:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2615:27:2615:27 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2615:27:2615:27 | 2 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2615:30:2615:30 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2615:30:2615:30 | 3 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2616:9:2616:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2616:13:2616:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2616:13:2616:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2616:18:2616:22 | vals1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2616:18:2616:22 | vals1 | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2616:18:2616:22 | vals1 | TArray | {EXTERNAL LOCATION} | u8 | +| main.rs:2616:24:2616:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2618:13:2618:17 | vals2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2618:13:2618:17 | vals2 | TArray | {EXTERNAL LOCATION} | u16 | +| main.rs:2618:21:2618:29 | [1u16; 3] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2618:21:2618:29 | [1u16; 3] | TArray | {EXTERNAL LOCATION} | u16 | +| main.rs:2618:22:2618:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2618:28:2618:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2619:9:2619:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2619:13:2619:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2619:18:2619:22 | vals2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2619:18:2619:22 | vals2 | TArray | {EXTERNAL LOCATION} | u16 | +| main.rs:2619:24:2619:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2621:13:2621:17 | vals3 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2621:13:2621:17 | vals3 | TArray | {EXTERNAL LOCATION} | u32 | +| main.rs:2621:26:2621:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:31:2621:39 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2621:31:2621:39 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:31:2621:39 | [...] | TArray | {EXTERNAL LOCATION} | u32 | +| main.rs:2621:32:2621:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:32:2621:32 | 1 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2621:35:2621:35 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:35:2621:35 | 2 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2621:38:2621:38 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:38:2621:38 | 3 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2622:9:2622:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2622:13:2622:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2622:18:2622:22 | vals3 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2622:18:2622:22 | vals3 | TArray | {EXTERNAL LOCATION} | u32 | +| main.rs:2622:24:2622:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2624:13:2624:17 | vals4 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2624:13:2624:17 | vals4 | TArray | {EXTERNAL LOCATION} | u64 | +| main.rs:2624:26:2624:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2624:31:2624:36 | [1; 3] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2624:31:2624:36 | [1; 3] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2624:31:2624:36 | [1; 3] | TArray | {EXTERNAL LOCATION} | u64 | +| main.rs:2624:32:2624:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2624:32:2624:32 | 1 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2624:35:2624:35 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2625:9:2625:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2625:13:2625:13 | u | | {EXTERNAL LOCATION} | u64 | +| main.rs:2625:18:2625:22 | vals4 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2625:18:2625:22 | vals4 | TArray | {EXTERNAL LOCATION} | u64 | +| main.rs:2625:24:2625:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2627:17:2627:24 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2627:17:2627:24 | strings1 | TArray | {EXTERNAL LOCATION} | & | +| main.rs:2627:17:2627:24 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2627:28:2627:48 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2627:28:2627:48 | [...] | TArray | {EXTERNAL LOCATION} | & | +| main.rs:2627:28:2627:48 | [...] | TArray.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2627:29:2627:33 | "foo" | | {EXTERNAL LOCATION} | & | +| main.rs:2627:29:2627:33 | "foo" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2627:36:2627:40 | "bar" | | {EXTERNAL LOCATION} | & | +| main.rs:2627:36:2627:40 | "bar" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2627:43:2627:47 | "baz" | | {EXTERNAL LOCATION} | & | +| main.rs:2627:43:2627:47 | "baz" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2628:9:2628:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2628:13:2628:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2628:13:2628:13 | s | | {EXTERNAL LOCATION} | & | +| main.rs:2628:13:2628:13 | s | TRef | {EXTERNAL LOCATION} | & | +| main.rs:2628:13:2628:13 | s | TRef.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2628:18:2628:26 | &strings1 | | {EXTERNAL LOCATION} | & | +| main.rs:2628:18:2628:26 | &strings1 | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2628:18:2628:26 | &strings1 | TRef.TArray | {EXTERNAL LOCATION} | & | +| main.rs:2628:18:2628:26 | &strings1 | TRef.TArray.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2628:19:2628:26 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2628:19:2628:26 | strings1 | TArray | {EXTERNAL LOCATION} | & | +| main.rs:2628:19:2628:26 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2628:28:2628:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2629:9:2629:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2629:13:2629:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2629:13:2629:13 | s | | {EXTERNAL LOCATION} | & | +| main.rs:2629:13:2629:13 | s | TRef | {EXTERNAL LOCATION} | & | +| main.rs:2629:13:2629:13 | s | TRef.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2629:18:2629:30 | &mut strings1 | | {EXTERNAL LOCATION} | & | +| main.rs:2629:18:2629:30 | &mut strings1 | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2629:18:2629:30 | &mut strings1 | TRef.TArray | {EXTERNAL LOCATION} | & | +| main.rs:2629:18:2629:30 | &mut strings1 | TRef.TArray.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2629:23:2629:30 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2629:23:2629:30 | strings1 | TArray | {EXTERNAL LOCATION} | & | +| main.rs:2629:23:2629:30 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2629:32:2629:33 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2630:9:2630:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2630:13:2630:13 | s | | {EXTERNAL LOCATION} | & | +| main.rs:2630:13:2630:13 | s | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2630:18:2630:25 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2630:18:2630:25 | strings1 | TArray | {EXTERNAL LOCATION} | & | +| main.rs:2630:18:2630:25 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2630:27:2630:28 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2632:13:2632:20 | strings2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2632:13:2632:20 | strings2 | TArray | {EXTERNAL LOCATION} | String | +| main.rs:2633:9:2637:9 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2633:9:2637:9 | [...] | TArray | {EXTERNAL LOCATION} | String | +| main.rs:2634:13:2634:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2634:26:2634:30 | "foo" | | {EXTERNAL LOCATION} | & | +| main.rs:2634:26:2634:30 | "foo" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2635:13:2635:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2635:26:2635:30 | "bar" | | {EXTERNAL LOCATION} | & | +| main.rs:2635:26:2635:30 | "bar" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2636:13:2636:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2636:26:2636:30 | "baz" | | {EXTERNAL LOCATION} | & | +| main.rs:2636:26:2636:30 | "baz" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2638:9:2638:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2638:13:2638:13 | s | | {EXTERNAL LOCATION} | String | +| main.rs:2638:18:2638:25 | strings2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2638:18:2638:25 | strings2 | TArray | {EXTERNAL LOCATION} | String | +| main.rs:2638:27:2638:28 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2640:13:2640:20 | strings3 | | {EXTERNAL LOCATION} | & | +| main.rs:2640:13:2640:20 | strings3 | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2640:13:2640:20 | strings3 | TRef.TArray | {EXTERNAL LOCATION} | String | +| main.rs:2641:9:2645:9 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2641:9:2645:9 | &... | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2641:9:2645:9 | &... | TRef.TArray | {EXTERNAL LOCATION} | String | +| main.rs:2641:10:2645:9 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2641:10:2645:9 | [...] | TArray | {EXTERNAL LOCATION} | String | +| main.rs:2642:13:2642:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2642:26:2642:30 | "foo" | | {EXTERNAL LOCATION} | & | +| main.rs:2642:26:2642:30 | "foo" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2643:13:2643:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2643:26:2643:30 | "bar" | | {EXTERNAL LOCATION} | & | +| main.rs:2643:26:2643:30 | "bar" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2644:13:2644:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2644:26:2644:30 | "baz" | | {EXTERNAL LOCATION} | & | +| main.rs:2644:26:2644:30 | "baz" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2646:9:2646:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2646:13:2646:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2646:13:2646:13 | s | | {EXTERNAL LOCATION} | & | +| main.rs:2646:13:2646:13 | s | TRef | {EXTERNAL LOCATION} | String | +| main.rs:2646:18:2646:25 | strings3 | | {EXTERNAL LOCATION} | & | +| main.rs:2646:18:2646:25 | strings3 | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2646:18:2646:25 | strings3 | TRef.TArray | {EXTERNAL LOCATION} | String | +| main.rs:2646:27:2646:28 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2648:13:2648:21 | callables | | {EXTERNAL LOCATION} | [;] | +| main.rs:2648:13:2648:21 | callables | TArray | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2648:25:2648:81 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2648:25:2648:81 | [...] | TArray | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2648:26:2648:42 | ...::new(...) | | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2648:45:2648:61 | ...::new(...) | | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2648:64:2648:80 | ...::new(...) | | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2649:9:2653:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2649:13:2649:13 | c | | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2650:12:2650:20 | callables | | {EXTERNAL LOCATION} | [;] | +| main.rs:2650:12:2650:20 | callables | TArray | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2651:9:2653:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2652:17:2652:22 | result | | {EXTERNAL LOCATION} | i64 | +| main.rs:2652:26:2652:26 | c | | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2652:26:2652:33 | c.call() | | {EXTERNAL LOCATION} | i64 | +| main.rs:2657:9:2657:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2657:13:2657:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2657:18:2657:18 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2657:18:2657:22 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2657:18:2657:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2657:21:2657:22 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2657:24:2657:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2658:9:2658:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2658:13:2658:13 | u | | {EXTERNAL LOCATION} | Range | +| main.rs:2658:13:2658:13 | u | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:13:2658:13 | u | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2658:18:2658:26 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2658:18:2658:26 | [...] | TArray | {EXTERNAL LOCATION} | Range | +| main.rs:2658:18:2658:26 | [...] | TArray.Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:18:2658:26 | [...] | TArray.Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2658:19:2658:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2658:19:2658:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2658:19:2658:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:19:2658:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2658:24:2658:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:24:2658:25 | 10 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2658:28:2658:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2659:13:2659:17 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2659:13:2659:17 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:21:2659:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:21:2659:25 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2659:21:2659:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:24:2659:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:9:2660:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2660:13:2660:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:18:2660:22 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2660:18:2660:22 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:24:2660:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2661:13:2661:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2661:26:2661:27 | .. | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2662:9:2662:51 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2662:13:2662:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2662:18:2662:48 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2662:19:2662:36 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2662:19:2662:36 | [...] | TArray | {EXTERNAL LOCATION} | i64 | +| main.rs:2662:20:2662:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2662:26:2662:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2662:32:2662:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2662:38:2662:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2662:50:2662:51 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2664:13:2664:18 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2664:13:2664:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2665:9:2668:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | +| main.rs:2665:9:2668:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2666:20:2666:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2667:18:2667:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2669:9:2669:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2669:13:2669:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2669:18:2669:23 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2669:18:2669:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2669:25:2669:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2673:13:2673:17 | vals3 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2673:21:2673:33 | MacroExpr | | {EXTERNAL LOCATION} | Vec | +| main.rs:2673:26:2673:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2673:29:2673:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2673:32:2673:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2674:9:2674:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2674:18:2674:22 | vals3 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2674:24:2674:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2676:13:2676:18 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2676:13:2676:18 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2676:13:2676:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2676:32:2676:43 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2676:32:2676:43 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2676:32:2676:43 | [...] | TArray | {EXTERNAL LOCATION} | u16 | +| main.rs:2676:32:2676:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2676:32:2676:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2676:32:2676:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2676:33:2676:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2676:39:2676:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2676:42:2676:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2677:9:2677:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2677:13:2677:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2677:18:2677:23 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2677:18:2677:23 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2677:18:2677:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2677:25:2677:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2679:22:2679:33 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2679:22:2679:33 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2679:22:2679:33 | [...] | TArray | {EXTERNAL LOCATION} | u16 | +| main.rs:2679:23:2679:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2679:29:2679:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2679:32:2679:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2680:9:2680:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2680:25:2680:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2682:13:2682:17 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2682:13:2682:17 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2682:13:2682:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2682:13:2682:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2682:21:2682:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2682:21:2682:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2682:21:2682:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2682:21:2682:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2682:31:2682:42 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2682:31:2682:42 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2682:31:2682:42 | [...] | TArray | {EXTERNAL LOCATION} | u32 | +| main.rs:2682:32:2682:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2682:38:2682:38 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2682:41:2682:41 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2683:9:2683:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2683:13:2683:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2683:13:2683:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2683:18:2683:22 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2683:18:2683:22 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2683:18:2683:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2683:18:2683:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2683:24:2683:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2685:13:2685:17 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2685:13:2685:17 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2685:13:2685:17 | vals6 | T | {EXTERNAL LOCATION} | & | +| main.rs:2685:13:2685:17 | vals6 | T.TRef | {EXTERNAL LOCATION} | u64 | +| main.rs:2685:32:2685:43 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2685:32:2685:43 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2685:32:2685:43 | [...] | TArray | {EXTERNAL LOCATION} | u64 | +| main.rs:2685:32:2685:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2685:32:2685:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2685:32:2685:60 | ... .collect() | T | {EXTERNAL LOCATION} | & | +| main.rs:2685:32:2685:60 | ... .collect() | T.TRef | {EXTERNAL LOCATION} | u64 | +| main.rs:2685:33:2685:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2685:39:2685:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2685:42:2685:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2686:9:2686:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2686:13:2686:13 | u | | {EXTERNAL LOCATION} | & | +| main.rs:2686:13:2686:13 | u | TRef | {EXTERNAL LOCATION} | u64 | +| main.rs:2686:18:2686:22 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2686:18:2686:22 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2686:18:2686:22 | vals6 | T | {EXTERNAL LOCATION} | & | +| main.rs:2686:18:2686:22 | vals6 | T.TRef | {EXTERNAL LOCATION} | u64 | +| main.rs:2686:24:2686:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2688:17:2688:21 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2688:17:2688:21 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2688:17:2688:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2688:25:2688:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2688:25:2688:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2688:25:2688:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2689:9:2689:13 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2689:9:2689:13 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2689:9:2689:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2689:9:2689:23 | vals7.push(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2689:20:2689:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2690:9:2690:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2690:13:2690:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2690:18:2690:22 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2690:18:2690:22 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2690:18:2690:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2690:24:2690:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2692:13:2692:19 | matrix1 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2692:23:2692:50 | MacroExpr | | {EXTERNAL LOCATION} | Vec | +| main.rs:2692:28:2692:37 | (...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2692:28:2692:37 | MacroExpr | | {EXTERNAL LOCATION} | Vec | +| main.rs:2692:33:2692:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2692:36:2692:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2692:40:2692:49 | (...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2692:40:2692:49 | MacroExpr | | {EXTERNAL LOCATION} | Vec | +| main.rs:2692:45:2692:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2692:48:2692:48 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2694:13:2694:13 | _ | | {EXTERNAL LOCATION} | () | +| main.rs:2694:17:2697:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2694:28:2694:34 | matrix1 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2694:36:2697:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2695:13:2696:13 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2695:29:2696:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2699:17:2699:20 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2699:17:2699:20 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2699:17:2699:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2699:17:2699:20 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2699:17:2699:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2699:17:2699:20 | map1 | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2699:17:2699:20 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2699:24:2699:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2699:24:2699:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2699:24:2699:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2699:24:2699:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | +| main.rs:2699:24:2699:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2699:24:2699:55 | ...::new(...) | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2699:24:2699:55 | ...::new(...) | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2700:9:2700:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2700:9:2700:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2700:9:2700:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2700:9:2700:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2700:9:2700:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2700:9:2700:12 | map1 | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2700:9:2700:12 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2700:9:2700:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2700:9:2700:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2700:9:2700:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2700:9:2700:39 | map1.insert(...) | T.T | {EXTERNAL LOCATION} | & | +| main.rs:2700:9:2700:39 | map1.insert(...) | T.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2700:21:2700:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2700:24:2700:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2700:24:2700:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2700:24:2700:38 | ...::new(...) | T | {EXTERNAL LOCATION} | & | +| main.rs:2700:24:2700:38 | ...::new(...) | T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2700:33:2700:37 | "one" | | {EXTERNAL LOCATION} | & | +| main.rs:2700:33:2700:37 | "one" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2701:9:2701:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2701:9:2701:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:9:2701:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2701:9:2701:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2701:9:2701:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2701:9:2701:12 | map1 | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2701:9:2701:12 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2701:9:2701:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2701:9:2701:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2701:9:2701:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2701:9:2701:39 | map1.insert(...) | T.T | {EXTERNAL LOCATION} | & | +| main.rs:2701:9:2701:39 | map1.insert(...) | T.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2701:21:2701:21 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:24:2701:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2701:24:2701:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2701:24:2701:38 | ...::new(...) | T | {EXTERNAL LOCATION} | & | +| main.rs:2701:24:2701:38 | ...::new(...) | T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2701:33:2701:37 | "two" | | {EXTERNAL LOCATION} | & | +| main.rs:2701:33:2701:37 | "two" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2702:9:2702:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2702:13:2702:15 | key | | {EXTERNAL LOCATION} | & | +| main.rs:2702:13:2702:15 | key | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2702:20:2702:23 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2702:20:2702:23 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2702:20:2702:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2702:20:2702:23 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2702:20:2702:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2702:20:2702:23 | map1 | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2702:20:2702:23 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2702:20:2702:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | +| main.rs:2702:20:2702:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2702:20:2702:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2702:20:2702:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2702:20:2702:30 | map1.keys() | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2702:20:2702:30 | map1.keys() | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2702:32:2702:33 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2703:9:2703:37 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2703:13:2703:17 | value | | {EXTERNAL LOCATION} | & | +| main.rs:2703:13:2703:17 | value | TRef | {EXTERNAL LOCATION} | Box | +| main.rs:2703:13:2703:17 | value | TRef.A | {EXTERNAL LOCATION} | Global | +| main.rs:2703:13:2703:17 | value | TRef.T | {EXTERNAL LOCATION} | & | +| main.rs:2703:13:2703:17 | value | TRef.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2703:22:2703:25 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2703:22:2703:25 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2703:22:2703:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2703:22:2703:25 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2703:22:2703:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2703:22:2703:25 | map1 | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2703:22:2703:25 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2703:22:2703:34 | map1.values() | | {EXTERNAL LOCATION} | Values | +| main.rs:2703:22:2703:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2703:22:2703:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2703:22:2703:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2703:22:2703:34 | map1.values() | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2703:22:2703:34 | map1.values() | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2703:36:2703:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2704:9:2704:42 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2704:13:2704:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2704:13:2704:24 | TuplePat | T0 | {EXTERNAL LOCATION} | & | +| main.rs:2704:13:2704:24 | TuplePat | T0.TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2704:13:2704:24 | TuplePat | T1 | {EXTERNAL LOCATION} | & | +| main.rs:2704:13:2704:24 | TuplePat | T1.TRef | {EXTERNAL LOCATION} | Box | +| main.rs:2704:13:2704:24 | TuplePat | T1.TRef.A | {EXTERNAL LOCATION} | Global | +| main.rs:2704:13:2704:24 | TuplePat | T1.TRef.T | {EXTERNAL LOCATION} | & | +| main.rs:2704:13:2704:24 | TuplePat | T1.TRef.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2704:14:2704:16 | key | | {EXTERNAL LOCATION} | & | +| main.rs:2704:14:2704:16 | key | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2704:19:2704:23 | value | | {EXTERNAL LOCATION} | & | +| main.rs:2704:19:2704:23 | value | TRef | {EXTERNAL LOCATION} | Box | +| main.rs:2704:19:2704:23 | value | TRef.A | {EXTERNAL LOCATION} | Global | +| main.rs:2704:19:2704:23 | value | TRef.T | {EXTERNAL LOCATION} | & | +| main.rs:2704:19:2704:23 | value | TRef.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2704:29:2704:32 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2704:29:2704:32 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2704:29:2704:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2704:29:2704:32 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2704:29:2704:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2704:29:2704:32 | map1 | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2704:29:2704:32 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2704:29:2704:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | +| main.rs:2704:29:2704:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2704:29:2704:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2704:29:2704:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2704:29:2704:39 | map1.iter() | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2704:29:2704:39 | map1.iter() | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2704:41:2704:42 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2705:9:2705:36 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2705:13:2705:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2705:13:2705:24 | TuplePat | T0 | {EXTERNAL LOCATION} | & | +| main.rs:2705:13:2705:24 | TuplePat | T0.TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2705:13:2705:24 | TuplePat | T1 | {EXTERNAL LOCATION} | & | +| main.rs:2705:13:2705:24 | TuplePat | T1.TRef | {EXTERNAL LOCATION} | Box | +| main.rs:2705:13:2705:24 | TuplePat | T1.TRef.A | {EXTERNAL LOCATION} | Global | +| main.rs:2705:13:2705:24 | TuplePat | T1.TRef.T | {EXTERNAL LOCATION} | & | +| main.rs:2705:13:2705:24 | TuplePat | T1.TRef.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2705:14:2705:16 | key | | {EXTERNAL LOCATION} | & | +| main.rs:2705:14:2705:16 | key | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2705:19:2705:23 | value | | {EXTERNAL LOCATION} | & | +| main.rs:2705:19:2705:23 | value | TRef | {EXTERNAL LOCATION} | Box | +| main.rs:2705:19:2705:23 | value | TRef.A | {EXTERNAL LOCATION} | Global | +| main.rs:2705:19:2705:23 | value | TRef.T | {EXTERNAL LOCATION} | & | +| main.rs:2705:19:2705:23 | value | TRef.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2705:29:2705:33 | &map1 | | {EXTERNAL LOCATION} | & | +| main.rs:2705:29:2705:33 | &map1 | TRef | {EXTERNAL LOCATION} | HashMap | +| main.rs:2705:29:2705:33 | &map1 | TRef.K | {EXTERNAL LOCATION} | i32 | +| main.rs:2705:29:2705:33 | &map1 | TRef.S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2705:29:2705:33 | &map1 | TRef.V | {EXTERNAL LOCATION} | Box | +| main.rs:2705:29:2705:33 | &map1 | TRef.V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2705:29:2705:33 | &map1 | TRef.V.T | {EXTERNAL LOCATION} | & | +| main.rs:2705:29:2705:33 | &map1 | TRef.V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2705:30:2705:33 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2705:30:2705:33 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2705:30:2705:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2705:30:2705:33 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2705:30:2705:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2705:30:2705:33 | map1 | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2705:30:2705:33 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2705:35:2705:36 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2709:17:2709:17 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2709:26:2709:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2709:26:2709:26 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2711:13:2711:13 | _ | | {EXTERNAL LOCATION} | () | +| main.rs:2711:17:2714:9 | while ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2711:23:2711:23 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2711:23:2711:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2711:27:2711:28 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2712:9:2714:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2713:13:2713:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2713:13:2713:18 | ... += ... | | {EXTERNAL LOCATION} | () | +| main.rs:2713:18:2713:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2725:40:2727:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2725:40:2727:9 | { ... } | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2725:40:2727:9 | { ... } | T.T | main.rs:2724:10:2724:19 | T | +| main.rs:2726:13:2726:16 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2726:13:2726:16 | None | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2726:13:2726:16 | None | T.T | main.rs:2724:10:2724:19 | T | +| main.rs:2729:30:2731:9 | { ... } | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2729:30:2731:9 | { ... } | T | main.rs:2724:10:2724:19 | T | +| main.rs:2730:13:2730:28 | S1(...) | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2730:13:2730:28 | S1(...) | T | main.rs:2724:10:2724:19 | T | +| main.rs:2730:16:2730:27 | ...::default(...) | | main.rs:2724:10:2724:19 | T | +| main.rs:2733:19:2733:22 | SelfParam | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2733:19:2733:22 | SelfParam | T | main.rs:2724:10:2724:19 | T | +| main.rs:2733:33:2735:9 | { ... } | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2733:33:2735:9 | { ... } | T | main.rs:2724:10:2724:19 | T | +| main.rs:2734:13:2734:16 | self | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2734:13:2734:16 | self | T | main.rs:2724:10:2724:19 | T | +| main.rs:2746:15:2746:15 | x | | main.rs:2746:12:2746:12 | T | +| main.rs:2746:26:2748:5 | { ... } | | main.rs:2746:12:2746:12 | T | +| main.rs:2747:9:2747:9 | x | | main.rs:2746:12:2746:12 | T | +| main.rs:2750:16:2772:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2751:13:2751:14 | x1 | | {EXTERNAL LOCATION} | Option | +| main.rs:2751:13:2751:14 | x1 | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2751:13:2751:14 | x1 | T.T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2751:34:2751:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2751:34:2751:48 | ...::assoc_fun(...) | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2751:34:2751:48 | ...::assoc_fun(...) | T.T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2752:13:2752:14 | x2 | | {EXTERNAL LOCATION} | Option | +| main.rs:2752:13:2752:14 | x2 | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2752:13:2752:14 | x2 | T.T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2752:18:2752:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2752:18:2752:38 | ...::assoc_fun(...) | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2752:18:2752:38 | ...::assoc_fun(...) | T.T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2753:13:2753:14 | x3 | | {EXTERNAL LOCATION} | Option | +| main.rs:2753:13:2753:14 | x3 | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2753:13:2753:14 | x3 | T.T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2753:18:2753:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2753:18:2753:32 | ...::assoc_fun(...) | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2753:18:2753:32 | ...::assoc_fun(...) | T.T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2754:13:2754:14 | x4 | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2754:13:2754:14 | x4 | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2754:18:2754:48 | ...::method(...) | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2754:18:2754:48 | ...::method(...) | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2754:35:2754:47 | ...::default(...) | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2754:35:2754:47 | ...::default(...) | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2755:13:2755:14 | x5 | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2755:13:2755:14 | x5 | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2755:18:2755:42 | ...::method(...) | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2755:18:2755:42 | ...::method(...) | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2755:29:2755:41 | ...::default(...) | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2755:29:2755:41 | ...::default(...) | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2756:13:2756:14 | x6 | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2756:13:2756:14 | x6 | T4 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2756:18:2756:45 | S4::<...>(...) | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2756:18:2756:45 | S4::<...>(...) | T4 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2756:27:2756:44 | ...::default(...) | | main.rs:2721:5:2722:14 | S2 | +| main.rs:2757:13:2757:14 | x7 | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2757:13:2757:14 | x7 | T4 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2757:18:2757:23 | S4(...) | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2757:18:2757:23 | S4(...) | T4 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2757:21:2757:22 | S2 | | main.rs:2721:5:2722:14 | S2 | +| main.rs:2758:13:2758:14 | x8 | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2758:13:2758:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2758:18:2758:22 | S4(...) | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2758:18:2758:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2758:21:2758:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2759:13:2759:14 | x9 | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2759:13:2759:14 | x9 | T4 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2759:18:2759:34 | S4(...) | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2759:18:2759:34 | S4(...) | T4 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2759:21:2759:33 | ...::default(...) | | main.rs:2721:5:2722:14 | S2 | +| main.rs:2760:13:2760:15 | x10 | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2760:13:2760:15 | x10 | T5 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2760:19:2763:9 | S5::<...> {...} | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2760:19:2763:9 | S5::<...> {...} | T5 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2762:20:2762:37 | ...::default(...) | | main.rs:2721:5:2722:14 | S2 | +| main.rs:2764:13:2764:15 | x11 | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2764:13:2764:15 | x11 | T5 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2764:19:2764:34 | S5 {...} | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2764:19:2764:34 | S5 {...} | T5 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2764:31:2764:32 | S2 | | main.rs:2721:5:2722:14 | S2 | +| main.rs:2765:13:2765:15 | x12 | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2765:13:2765:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2765:19:2765:33 | S5 {...} | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2765:19:2765:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2765:31:2765:31 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2766:13:2766:15 | x13 | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2766:13:2766:15 | x13 | T5 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2766:19:2769:9 | S5 {...} | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2766:19:2769:9 | S5 {...} | T5 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2768:20:2768:32 | ...::default(...) | | main.rs:2721:5:2722:14 | S2 | +| main.rs:2770:13:2770:15 | x14 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2770:19:2770:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2770:30:2770:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2771:13:2771:15 | x15 | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2771:13:2771:15 | x15 | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2771:19:2771:37 | ...::default(...) | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2771:19:2771:37 | ...::default(...) | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2780:35:2782:9 | { ... } | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2780:35:2782:9 | { ... } | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2780:35:2782:9 | { ... } | T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2781:13:2781:26 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2781:13:2781:26 | TupleExpr | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2781:13:2781:26 | TupleExpr | T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2781:14:2781:18 | S1 {...} | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2781:21:2781:25 | S1 {...} | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2783:16:2783:19 | SelfParam | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2783:22:2783:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2786:16:2820:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2787:13:2787:13 | a | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2787:13:2787:13 | a | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2787:13:2787:13 | a | T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2787:17:2787:30 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2787:17:2787:30 | ...::get_pair(...) | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2787:17:2787:30 | ...::get_pair(...) | T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2788:17:2788:17 | b | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2788:17:2788:17 | b | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2788:17:2788:17 | b | T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2788:21:2788:34 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2788:21:2788:34 | ...::get_pair(...) | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2788:21:2788:34 | ...::get_pair(...) | T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:13:2789:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2789:13:2789:18 | TuplePat | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:13:2789:18 | TuplePat | T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:14:2789:14 | c | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:17:2789:17 | d | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:22:2789:35 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2789:22:2789:35 | ...::get_pair(...) | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:22:2789:35 | ...::get_pair(...) | T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:13:2790:22 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2790:13:2790:22 | TuplePat | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:13:2790:22 | TuplePat | T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:18:2790:18 | e | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:21:2790:21 | f | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:26:2790:39 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2790:26:2790:39 | ...::get_pair(...) | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:26:2790:39 | ...::get_pair(...) | T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:13:2791:26 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2791:13:2791:26 | TuplePat | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:13:2791:26 | TuplePat | T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:18:2791:18 | g | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:25:2791:25 | h | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:30:2791:43 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2791:30:2791:43 | ...::get_pair(...) | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:30:2791:43 | ...::get_pair(...) | T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2793:9:2793:9 | a | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2793:9:2793:9 | a | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2793:9:2793:9 | a | T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2793:9:2793:11 | a.0 | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2793:9:2793:17 | ... .foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2794:9:2794:9 | b | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2794:9:2794:9 | b | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2794:9:2794:9 | b | T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2794:9:2794:11 | b.1 | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2794:9:2794:17 | ... .foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2795:9:2795:9 | c | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2795:9:2795:15 | c.foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2796:9:2796:9 | d | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2796:9:2796:15 | d.foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2797:9:2797:9 | e | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2797:9:2797:15 | e.foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2798:9:2798:9 | f | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2798:9:2798:15 | f.foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2799:9:2799:9 | g | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2799:9:2799:15 | g.foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2800:9:2800:9 | h | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2800:9:2800:15 | h.foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2805:13:2805:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2805:17:2805:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2806:13:2806:13 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2806:17:2806:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2807:13:2807:16 | pair | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2807:13:2807:16 | pair | T0 | {EXTERNAL LOCATION} | i64 | +| main.rs:2807:13:2807:16 | pair | T1 | {EXTERNAL LOCATION} | bool | +| main.rs:2807:20:2807:25 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2807:20:2807:25 | TupleExpr | T0 | {EXTERNAL LOCATION} | i64 | +| main.rs:2807:20:2807:25 | TupleExpr | T1 | {EXTERNAL LOCATION} | bool | +| main.rs:2807:21:2807:21 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2807:24:2807:24 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2808:13:2808:13 | i | | {EXTERNAL LOCATION} | i64 | +| main.rs:2808:22:2808:25 | pair | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2808:22:2808:25 | pair | T0 | {EXTERNAL LOCATION} | i64 | +| main.rs:2808:22:2808:25 | pair | T1 | {EXTERNAL LOCATION} | bool | +| main.rs:2808:22:2808:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2809:13:2809:13 | j | | {EXTERNAL LOCATION} | bool | +| main.rs:2809:23:2809:26 | pair | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2809:23:2809:26 | pair | T0 | {EXTERNAL LOCATION} | i64 | +| main.rs:2809:23:2809:26 | pair | T1 | {EXTERNAL LOCATION} | bool | +| main.rs:2809:23:2809:28 | pair.1 | | {EXTERNAL LOCATION} | bool | +| main.rs:2811:13:2811:16 | pair | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2811:13:2811:16 | pair | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:13:2811:16 | pair | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:20:2811:25 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2811:20:2811:25 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:20:2811:32 | ... .into() | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2811:20:2811:32 | ... .into() | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:20:2811:32 | ... .into() | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:21:2811:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:24:2811:24 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2812:9:2815:9 | match pair { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2812:15:2812:18 | pair | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2812:15:2812:18 | pair | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2812:15:2812:18 | pair | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2813:13:2813:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2813:13:2813:18 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2813:13:2813:18 | TuplePat | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2813:14:2813:14 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2813:17:2813:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2813:23:2813:42 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:2813:30:2813:41 | "unexpected" | | {EXTERNAL LOCATION} | & | +| main.rs:2813:30:2813:41 | "unexpected" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2813:30:2813:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2813:30:2813:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2814:13:2814:13 | _ | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2814:13:2814:13 | _ | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2814:13:2814:13 | _ | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2814:18:2814:35 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:2814:25:2814:34 | "expected" | | {EXTERNAL LOCATION} | & | +| main.rs:2814:25:2814:34 | "expected" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2814:25:2814:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2814:25:2814:34 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2816:13:2816:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2816:17:2816:20 | pair | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2816:17:2816:20 | pair | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2816:17:2816:20 | pair | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2816:17:2816:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2818:13:2818:13 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2818:13:2818:13 | y | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2818:13:2818:13 | y | TRef.T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:13:2818:13 | y | TRef.T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:17:2818:31 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2818:17:2818:31 | &... | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2818:17:2818:31 | &... | TRef.T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:17:2818:31 | &... | TRef.T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:18:2818:31 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2818:18:2818:31 | ...::get_pair(...) | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:18:2818:31 | ...::get_pair(...) | T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2819:9:2819:9 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2819:9:2819:9 | y | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2819:9:2819:9 | y | TRef.T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2819:9:2819:9 | y | TRef.T1 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2819:9:2819:11 | y.0 | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2819:9:2819:17 | ... .foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2825:27:2847:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2826:13:2826:23 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2826:13:2826:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2826:13:2826:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2826:27:2826:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2826:27:2826:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2826:27:2826:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2826:36:2826:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2829:9:2837:9 | match boxed_value { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2829:15:2829:25 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2829:15:2829:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2829:15:2829:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2830:13:2830:19 | box 100 | | {EXTERNAL LOCATION} | Box | +| main.rs:2830:13:2830:19 | box 100 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2830:13:2830:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2830:17:2830:19 | 100 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2830:24:2832:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2831:26:2831:36 | "Boxed 100\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:2831:26:2831:36 | "Boxed 100\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2831:26:2831:36 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2831:26:2831:36 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2833:13:2833:17 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2833:13:2833:17 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2833:13:2833:17 | box ... | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2833:22:2836:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2835:26:2835:42 | "Boxed value: {}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:2835:26:2835:42 | "Boxed value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2835:26:2835:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2835:26:2835:51 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2840:13:2840:22 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2840:13:2840:22 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2840:13:2840:22 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2840:13:2840:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2840:13:2840:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2840:26:2840:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2840:26:2840:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2840:26:2840:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2840:26:2840:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2840:26:2840:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2840:35:2840:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2840:35:2840:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2840:35:2840:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2840:44:2840:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2841:9:2846:9 | match nested_box { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2841:15:2841:24 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2841:15:2841:24 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2841:15:2841:24 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2841:15:2841:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2841:15:2841:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2842:13:2842:21 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2842:13:2842:21 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2842:13:2842:21 | box ... | T | {EXTERNAL LOCATION} | Box | +| main.rs:2842:13:2842:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2842:13:2842:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2842:26:2845:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2844:26:2844:43 | "Nested boxed: {}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:2844:26:2844:43 | "Nested boxed: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2844:26:2844:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2844:26:2844:59 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2856:36:2858:9 | { ... } | | main.rs:2853:5:2853:22 | Path | +| main.rs:2857:13:2857:19 | Path {...} | | main.rs:2853:5:2853:22 | Path | +| main.rs:2860:29:2860:33 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2860:29:2860:33 | SelfParam | TRef | main.rs:2853:5:2853:22 | Path | +| main.rs:2860:59:2862:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:2860:59:2862:9 | { ... } | E | {EXTERNAL LOCATION} | () | +| main.rs:2860:59:2862:9 | { ... } | T | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2861:13:2861:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2861:13:2861:30 | Ok(...) | E | {EXTERNAL LOCATION} | () | +| main.rs:2861:13:2861:30 | Ok(...) | T | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2861:16:2861:29 | ...::new(...) | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2868:39:2870:9 | { ... } | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2869:13:2869:22 | PathBuf {...} | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2878:18:2878:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2878:18:2878:22 | SelfParam | TRef | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2878:34:2882:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:2878:34:2882:9 | { ... } | TRef | main.rs:2853:5:2853:22 | Path | +| main.rs:2880:33:2880:43 | ...::new(...) | | main.rs:2853:5:2853:22 | Path | +| main.rs:2881:13:2881:17 | &path | | {EXTERNAL LOCATION} | & | +| main.rs:2881:13:2881:17 | &path | TRef | main.rs:2853:5:2853:22 | Path | +| main.rs:2881:14:2881:17 | path | | main.rs:2853:5:2853:22 | Path | +| main.rs:2885:16:2893:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2886:13:2886:17 | path1 | | main.rs:2853:5:2853:22 | Path | +| main.rs:2886:21:2886:31 | ...::new(...) | | main.rs:2853:5:2853:22 | Path | +| main.rs:2887:13:2887:17 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2887:13:2887:17 | path2 | E | {EXTERNAL LOCATION} | () | +| main.rs:2887:13:2887:17 | path2 | T | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2887:21:2887:25 | path1 | | main.rs:2853:5:2853:22 | Path | +| main.rs:2887:21:2887:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | +| main.rs:2887:21:2887:40 | path1.canonicalize() | E | {EXTERNAL LOCATION} | () | +| main.rs:2887:21:2887:40 | path1.canonicalize() | T | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2888:13:2888:17 | path3 | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2888:21:2888:25 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2888:21:2888:25 | path2 | E | {EXTERNAL LOCATION} | () | +| main.rs:2888:21:2888:25 | path2 | T | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2888:21:2888:34 | path2.unwrap() | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2890:13:2890:20 | pathbuf1 | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2890:24:2890:37 | ...::new(...) | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2891:24:2891:31 | pathbuf1 | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2898:14:2898:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2898:14:2898:18 | SelfParam | TRef | main.rs:2897:5:2899:5 | Self [trait MyTrait] | +| main.rs:2905:14:2905:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2905:14:2905:18 | SelfParam | TRef | main.rs:2901:5:2902:19 | S | +| main.rs:2905:14:2905:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2905:28:2907:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2906:13:2906:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2906:13:2906:16 | self | TRef | main.rs:2901:5:2902:19 | S | +| main.rs:2906:13:2906:16 | self | TRef.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2906:13:2906:18 | self.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2911:14:2911:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2911:14:2911:18 | SelfParam | TRef | main.rs:2901:5:2902:19 | S | +| main.rs:2911:14:2911:18 | SelfParam | TRef.T | main.rs:2901:5:2902:19 | S | +| main.rs:2911:14:2911:18 | SelfParam | TRef.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2911:28:2913:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2912:13:2912:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2912:13:2912:16 | self | TRef | main.rs:2901:5:2902:19 | S | +| main.rs:2912:13:2912:16 | self | TRef.T | main.rs:2901:5:2902:19 | S | +| main.rs:2912:13:2912:16 | self | TRef.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2912:13:2912:18 | self.0 | | main.rs:2901:5:2902:19 | S | +| main.rs:2912:13:2912:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2912:13:2912:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2917:15:2917:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2917:15:2917:19 | SelfParam | TRef | main.rs:2901:5:2902:19 | S | +| main.rs:2917:15:2917:19 | SelfParam | TRef.T | main.rs:2916:10:2916:16 | T | +| main.rs:2917:33:2919:9 | { ... } | | main.rs:2901:5:2902:19 | S | +| main.rs:2917:33:2919:9 | { ... } | T | main.rs:2901:5:2902:19 | S | +| main.rs:2917:33:2919:9 | { ... } | T.T | main.rs:2916:10:2916:16 | T | +| main.rs:2918:13:2918:24 | S(...) | | main.rs:2901:5:2902:19 | S | +| main.rs:2918:13:2918:24 | S(...) | T | main.rs:2901:5:2902:19 | S | +| main.rs:2918:13:2918:24 | S(...) | T.T | main.rs:2916:10:2916:16 | T | +| main.rs:2918:15:2918:23 | S(...) | | main.rs:2901:5:2902:19 | S | +| main.rs:2918:15:2918:23 | S(...) | T | main.rs:2916:10:2916:16 | T | +| main.rs:2918:17:2918:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2918:17:2918:20 | self | TRef | main.rs:2901:5:2902:19 | S | +| main.rs:2918:17:2918:20 | self | TRef.T | main.rs:2916:10:2916:16 | T | +| main.rs:2918:17:2918:22 | self.0 | | main.rs:2916:10:2916:16 | T | +| main.rs:2922:14:2922:14 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2922:48:2939:5 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2922:48:2939:5 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2922:48:2939:5 | { ... } | T | main.rs:2897:5:2899:5 | dyn MyTrait | +| main.rs:2922:48:2939:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2923:13:2923:13 | x | | main.rs:2901:5:2902:19 | S | +| main.rs:2923:13:2923:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2923:17:2928:9 | if b {...} else {...} | | main.rs:2901:5:2902:19 | S | +| main.rs:2923:17:2928:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2923:20:2923:20 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2923:22:2926:9 | { ... } | | main.rs:2901:5:2902:19 | S | +| main.rs:2923:22:2926:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2924:17:2924:17 | y | | main.rs:2901:5:2902:19 | S | +| main.rs:2924:17:2924:17 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2924:21:2924:38 | ...::default(...) | | main.rs:2901:5:2902:19 | S | +| main.rs:2924:21:2924:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2925:13:2925:13 | y | | main.rs:2901:5:2902:19 | S | +| main.rs:2925:13:2925:13 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2926:16:2928:9 | { ... } | | main.rs:2901:5:2902:19 | S | +| main.rs:2926:16:2928:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2927:13:2927:16 | S(...) | | main.rs:2901:5:2902:19 | S | +| main.rs:2927:13:2927:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2927:15:2927:15 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2932:13:2932:13 | x | | main.rs:2901:5:2902:19 | S | +| main.rs:2932:13:2932:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2932:17:2932:20 | S(...) | | main.rs:2901:5:2902:19 | S | +| main.rs:2932:17:2932:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2932:19:2932:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2933:9:2938:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | +| main.rs:2933:9:2938:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | +| main.rs:2933:9:2938:9 | if b {...} else {...} | T | main.rs:2897:5:2899:5 | dyn MyTrait | +| main.rs:2933:9:2938:9 | if b {...} else {...} | T | main.rs:2901:5:2902:19 | S | +| main.rs:2933:9:2938:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2933:9:2938:9 | if b {...} else {...} | T.T | main.rs:2901:5:2902:19 | S | +| main.rs:2933:9:2938:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2933:9:2938:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2933:12:2933:12 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2933:14:2936:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2933:14:2936:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2933:14:2936:9 | { ... } | T | main.rs:2897:5:2899:5 | dyn MyTrait | +| main.rs:2933:14:2936:9 | { ... } | T | main.rs:2901:5:2902:19 | S | +| main.rs:2933:14:2936:9 | { ... } | T.T | main.rs:2901:5:2902:19 | S | +| main.rs:2933:14:2936:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2933:14:2936:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2934:17:2934:17 | x | | main.rs:2901:5:2902:19 | S | +| main.rs:2934:17:2934:17 | x | T | main.rs:2901:5:2902:19 | S | +| main.rs:2934:17:2934:17 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2934:21:2934:21 | x | | main.rs:2901:5:2902:19 | S | +| main.rs:2934:21:2934:21 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2934:21:2934:26 | x.m2() | | main.rs:2901:5:2902:19 | S | +| main.rs:2934:21:2934:26 | x.m2() | T | main.rs:2901:5:2902:19 | S | +| main.rs:2934:21:2934:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2935:13:2935:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2935:13:2935:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2935:13:2935:23 | ...::new(...) | T | main.rs:2897:5:2899:5 | dyn MyTrait | +| main.rs:2935:13:2935:23 | ...::new(...) | T | main.rs:2901:5:2902:19 | S | +| main.rs:2935:13:2935:23 | ...::new(...) | T.T | main.rs:2901:5:2902:19 | S | +| main.rs:2935:13:2935:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2935:13:2935:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2935:22:2935:22 | x | | main.rs:2901:5:2902:19 | S | +| main.rs:2935:22:2935:22 | x | T | main.rs:2901:5:2902:19 | S | +| main.rs:2935:22:2935:22 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2936:16:2938:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2936:16:2938:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2936:16:2938:9 | { ... } | T | main.rs:2897:5:2899:5 | dyn MyTrait | +| main.rs:2936:16:2938:9 | { ... } | T | main.rs:2901:5:2902:19 | S | +| main.rs:2936:16:2938:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2936:16:2938:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2937:13:2937:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2937:13:2937:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2937:13:2937:23 | ...::new(...) | T | main.rs:2897:5:2899:5 | dyn MyTrait | +| main.rs:2937:13:2937:23 | ...::new(...) | T | main.rs:2901:5:2902:19 | S | +| main.rs:2937:13:2937:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2937:13:2937:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2937:22:2937:22 | x | | main.rs:2901:5:2902:19 | S | +| main.rs:2937:22:2937:22 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2943:22:2947:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2944:18:2944:18 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2944:33:2946:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2945:13:2945:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2945:13:2945:17 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:2945:17:2945:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2952:11:2952:14 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2952:30:2960:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2954:13:2954:13 | a | | {EXTERNAL LOCATION} | () | +| main.rs:2954:17:2958:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2955:13:2957:13 | if cond {...} | | {EXTERNAL LOCATION} | () | +| main.rs:2955:16:2955:19 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2955:21:2957:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2956:24:2956:25 | 12 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2959:9:2959:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2963:20:2970:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2966:26:2966:27 | 12 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2968:18:2968:26 | "b: {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:2968:18:2968:26 | "b: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2968:18:2968:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2968:18:2968:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2969:9:2969:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2972:20:2974:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2973:16:2973:16 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2977:11:2977:14 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2977:30:2985:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2978:13:2978:13 | a | | {EXTERNAL LOCATION} | () | +| main.rs:2978:17:2982:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2979:13:2981:13 | if cond {...} | | {EXTERNAL LOCATION} | () | +| main.rs:2979:16:2979:19 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2979:21:2981:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2980:24:2980:25 | 12 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2983:18:2983:26 | "a: {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:2983:18:2983:26 | "a: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2983:18:2983:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2983:18:2983:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2983:29:2983:29 | a | | {EXTERNAL LOCATION} | () | +| main.rs:2984:9:2984:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2989:16:3036:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2990:13:2990:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2990:13:2990:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2990:17:2990:20 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2990:17:2990:20 | None | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2991:13:2991:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2991:13:2991:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2991:30:2991:30 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2991:30:2991:30 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2992:13:2992:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2992:13:2992:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2992:17:2992:35 | ...::None | | {EXTERNAL LOCATION} | Option | +| main.rs:2992:17:2992:35 | ...::None | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2993:13:2993:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2993:13:2993:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2993:17:2993:35 | ...::None::<...> | | {EXTERNAL LOCATION} | Option | +| main.rs:2993:17:2993:35 | ...::None::<...> | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2995:26:2995:28 | opt | | {EXTERNAL LOCATION} | Option | +| main.rs:2995:26:2995:28 | opt | T | main.rs:2995:23:2995:23 | T | +| main.rs:2995:42:2995:42 | x | | main.rs:2995:23:2995:23 | T | +| main.rs:2995:48:2995:49 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2997:13:2997:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2997:13:2997:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2997:17:2997:20 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2997:17:2997:20 | None | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2998:9:2998:24 | pin_option(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2998:20:2998:20 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2998:20:2998:20 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2998:23:2998:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3005:13:3005:13 | x | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3005:13:3005:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3005:13:3005:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3005:17:3005:39 | ...::A {...} | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3005:17:3005:39 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3005:17:3005:39 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3005:37:3005:37 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3006:13:3006:13 | x | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3006:13:3006:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3006:13:3006:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3006:40:3006:40 | x | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3006:40:3006:40 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3006:40:3006:40 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3007:13:3007:13 | x | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3007:13:3007:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3007:13:3007:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3007:17:3007:52 | ...::A {...} | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3007:17:3007:52 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3007:17:3007:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3007:50:3007:50 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3009:13:3009:13 | x | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3009:13:3009:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3009:13:3009:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3009:17:3011:9 | ...::B::<...> {...} | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3009:17:3011:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3009:17:3011:9 | ...::B::<...> {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3010:20:3010:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | +| main.rs:3013:29:3013:29 | e | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3013:29:3013:29 | e | T1 | main.rs:3013:26:3013:26 | T | +| main.rs:3013:29:3013:29 | e | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3013:53:3013:53 | x | | main.rs:3013:26:3013:26 | T | +| main.rs:3013:59:3013:60 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:3016:13:3016:13 | x | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3016:13:3016:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3016:13:3016:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3016:17:3018:9 | ...::B {...} | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3016:17:3018:9 | ...::B {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3016:17:3018:9 | ...::B {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3017:20:3017:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | +| main.rs:3019:9:3019:27 | pin_my_either(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3019:23:3019:23 | x | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3019:23:3019:23 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3019:23:3019:23 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3019:26:3019:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3021:13:3021:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:3021:13:3021:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:3021:13:3021:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3021:17:3021:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:3021:17:3021:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | +| main.rs:3021:17:3021:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3021:28:3021:28 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3022:13:3022:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:3022:13:3022:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:3022:13:3022:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3022:38:3022:38 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:3022:38:3022:38 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:3022:38:3022:38 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3023:13:3023:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:3023:13:3023:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:3023:13:3023:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3023:17:3023:44 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:3023:17:3023:44 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | +| main.rs:3023:17:3023:44 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3023:43:3023:43 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3024:13:3024:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:3024:13:3024:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:3024:13:3024:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3024:17:3024:44 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:3024:17:3024:44 | ...::Ok::<...>(...) | E | {EXTERNAL LOCATION} | String | +| main.rs:3024:17:3024:44 | ...::Ok::<...>(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3024:43:3024:43 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3026:29:3026:31 | res | | {EXTERNAL LOCATION} | Result | +| main.rs:3026:29:3026:31 | res | E | main.rs:3026:26:3026:26 | E | +| main.rs:3026:29:3026:31 | res | T | main.rs:3026:23:3026:23 | T | +| main.rs:3026:48:3026:48 | x | | main.rs:3026:26:3026:26 | E | +| main.rs:3026:54:3026:55 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:3028:13:3028:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:3028:13:3028:13 | x | E | {EXTERNAL LOCATION} | bool | +| main.rs:3028:13:3028:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3028:17:3028:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:3028:17:3028:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | bool | +| main.rs:3028:17:3028:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3028:28:3028:28 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3029:9:3029:28 | pin_result(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3029:20:3029:20 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:3029:20:3029:20 | x | E | {EXTERNAL LOCATION} | bool | +| main.rs:3029:20:3029:20 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3029:23:3029:27 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:3031:17:3031:17 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:3031:17:3031:17 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:3031:17:3031:17 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3031:21:3031:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:3031:21:3031:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:3031:21:3031:30 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3032:9:3032:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:3032:9:3032:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:3032:9:3032:9 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3032:9:3032:17 | x.push(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3032:16:3032:16 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3034:13:3034:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:3034:17:3034:34 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:3035:9:3035:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:3035:9:3035:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:3035:9:3035:9 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3035:9:3035:17 | x.push(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3035:16:3035:16 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:3044:11:3079:1 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:3045:5:3045:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3046:5:3046:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:3047:5:3047:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:3047:20:3047:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:3047:41:3047:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:3048:5:3048:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3049:5:3049:41 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3050:5:3050:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3051:5:3051:30 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3052:5:3052:33 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3053:5:3053:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3054:5:3054:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3055:5:3055:32 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3056:5:3056:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3057:5:3057:36 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3058:5:3058:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3059:5:3059:29 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3060:5:3060:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3061:5:3061:24 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3062:5:3062:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3063:5:3063:18 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3064:5:3064:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:3064:5:3064:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () | +| main.rs:3065:5:3065:19 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3066:5:3066:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3067:5:3067:14 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3068:5:3068:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3069:5:3069:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3070:5:3070:43 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3071:5:3071:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3072:5:3072:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3073:5:3073:23 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3074:5:3074:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3075:5:3075:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3076:5:3076:20 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3077:5:3077:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:3077:5:3077:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:3077:5:3077:20 | ...::f(...) | T | main.rs:2897:5:2899:5 | dyn MyTrait | +| main.rs:3077:5:3077:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:3077:16:3077:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:3078:5:3078:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:13:26:133:1 | { ... } | T | file://:0:0:0:0 | () | +| pattern_matching.rs:13:26:133:1 | { ... } | T | {EXTERNAL LOCATION} | () | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:14:9:14:13 | value | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:14:17:14:24 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:14:17:14:24 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:14:22:14:23 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:15:5:18:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:15:5:18:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:15:12:15:21 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:15:12:15:21 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:15:17:15:20 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:15:25:15:29 | value | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:15:25:15:29 | value | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:15:31:18:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:15:31:18:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:16:13:16:16 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:16:20:16:23 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:17:18:17:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:17:18:17:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:17:18:17:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:17:18:17:25 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:17:18:17:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:17:18:17:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:17:20:17:23 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:19:5:25:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:19:5:25:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:19:11:19:15 | value | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:19:11:19:15 | value | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:20:9:20:18 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:20:9:20:18 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:20:14:20:17 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:20:23:23:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:20:23:23:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:21:17:21:20 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:21:24:21:27 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:22:22:22:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:22:22:22:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:22:22:22:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:22:22:22:29 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:22:22:22:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:22:22:22:29 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:22:24:22:27 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:24:9:24:12 | None | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:24:9:24:12 | None | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:24:17:24:18 | TupleExpr | | file://:0:0:0:0 | () | +| pattern_matching.rs:24:17:24:18 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:26:9:26:12 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:26:16:26:20 | value | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:26:16:26:20 | value | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:26:16:26:29 | value.unwrap() | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:27:9:27:12 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:27:16:27:19 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:28:14:28:21 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:28:14:28:21 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:28:14:28:21 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:28:14:28:21 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:28:14:28:21 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:28:14:28:21 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:28:16:28:19 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:29:9:29:12 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:29:16:29:20 | value | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:29:16:29:20 | value | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:29:16:29:21 | TryExpr | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:30:14:30:21 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:30:14:30:21 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:30:14:30:21 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:30:14:30:21 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:30:14:30:21 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:30:14:30:21 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:30:16:30:19 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:32:9:32:14 | value2 | | file://:0:0:0:0 | & | -| pattern_matching.rs:32:9:32:14 | value2 | &T | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:32:9:32:14 | value2 | &T.T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:32:18:32:26 | &... | | file://:0:0:0:0 | & | -| pattern_matching.rs:32:18:32:26 | &... | &T | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:32:18:32:26 | &... | &T.T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:32:9:32:14 | value2 | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:32:9:32:14 | value2 | TRef | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:32:9:32:14 | value2 | TRef.T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:32:18:32:26 | &... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:32:18:32:26 | &... | TRef | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:32:18:32:26 | &... | TRef.T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:32:19:32:26 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:32:19:32:26 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:32:24:32:25 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:33:5:36:5 | if ... {...} | | file://:0:0:0:0 | () | -| pattern_matching.rs:33:12:33:22 | &... | | file://:0:0:0:0 | & | -| pattern_matching.rs:33:12:33:22 | &... | &T | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:33:12:33:22 | &... | &T.T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:33:5:36:5 | if ... {...} | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:33:12:33:22 | &... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:33:12:33:22 | &... | TRef | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:33:12:33:22 | &... | TRef.T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:33:13:33:22 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:33:13:33:22 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:33:18:33:21 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:33:26:33:31 | value2 | | file://:0:0:0:0 | & | -| pattern_matching.rs:33:26:33:31 | value2 | &T | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:33:26:33:31 | value2 | &T.T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:33:33:36:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:33:26:33:31 | value2 | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:33:26:33:31 | value2 | TRef | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:33:26:33:31 | value2 | TRef.T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:33:33:36:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:34:13:34:16 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:34:20:34:23 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:35:18:35:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:35:18:35:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:35:18:35:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:35:18:35:25 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:35:18:35:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:35:18:35:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:35:20:35:23 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:38:9:38:14 | value3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:38:18:38:19 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:39:5:42:5 | if ... {...} | | file://:0:0:0:0 | () | -| pattern_matching.rs:39:16:39:19 | mesg | | file://:0:0:0:0 | & | -| pattern_matching.rs:39:16:39:19 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:39:5:42:5 | if ... {...} | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:39:16:39:19 | mesg | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:39:16:39:19 | mesg | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:39:23:39:28 | value3 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:39:30:42:5 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:40:13:40:16 | mesg | | file://:0:0:0:0 | & | -| pattern_matching.rs:40:13:40:16 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:40:20:40:23 | mesg | | file://:0:0:0:0 | & | -| pattern_matching.rs:40:20:40:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:41:18:41:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:41:18:41:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:41:18:41:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:41:18:41:25 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:41:20:41:23 | mesg | | file://:0:0:0:0 | & | -| pattern_matching.rs:41:20:41:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:39:30:42:5 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:40:13:40:16 | mesg | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:40:13:40:16 | mesg | TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:40:20:40:23 | mesg | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:40:20:40:23 | mesg | TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:41:18:41:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:41:18:41:25 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:41:20:41:23 | mesg | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:41:20:41:23 | mesg | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:44:9:44:14 | value4 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:44:9:44:14 | value4 | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:44:18:44:25 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:44:18:44:25 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:44:23:44:24 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:45:5:48:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:45:5:48:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:45:12:45:25 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:45:12:45:25 | Some(...) | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:45:21:45:24 | mesg | | file://:0:0:0:0 | & | -| pattern_matching.rs:45:21:45:24 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:45:21:45:24 | mesg | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:45:21:45:24 | mesg | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:45:29:45:34 | value4 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:45:29:45:34 | value4 | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:45:36:48:5 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:46:13:46:16 | mesg | | file://:0:0:0:0 | & | -| pattern_matching.rs:46:13:46:16 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:46:20:46:23 | mesg | | file://:0:0:0:0 | & | -| pattern_matching.rs:46:20:46:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:47:18:47:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:47:18:47:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:47:18:47:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:47:18:47:25 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:47:20:47:23 | mesg | | file://:0:0:0:0 | & | -| pattern_matching.rs:47:20:47:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:50:13:50:18 | value5 | | file://:0:0:0:0 | & | -| pattern_matching.rs:50:13:50:18 | value5 | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:45:36:48:5 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:46:13:46:16 | mesg | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:46:13:46:16 | mesg | TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:46:20:46:23 | mesg | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:46:20:46:23 | mesg | TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:47:18:47:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:47:18:47:25 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:47:20:47:23 | mesg | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:47:20:47:23 | mesg | TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:50:13:50:18 | value5 | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:50:13:50:18 | value5 | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:50:22:50:23 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:51:9:51:9 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:51:9:51:9 | x | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:51:13:51:18 | value5 | | file://:0:0:0:0 | & | -| pattern_matching.rs:51:13:51:18 | value5 | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:51:9:51:9 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:51:9:51:9 | x | TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:51:13:51:18 | value5 | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:51:13:51:18 | value5 | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:53:9:53:24 | my_record_struct | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:53:9:53:24 | my_record_struct | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:53:9:53:24 | my_record_struct | T2 | {EXTERNAL LOCATION} | bool | @@ -6686,7 +6710,7 @@ inferType | pattern_matching.rs:53:28:56:5 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:54:17:54:18 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:55:17:55:21 | false | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:57:5:61:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:57:5:61:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:57:12:57:44 | MyRecordStruct {...} | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:57:12:57:44 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:57:12:57:44 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | bool | @@ -6695,12 +6719,12 @@ inferType | pattern_matching.rs:57:48:57:63 | my_record_struct | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:57:48:57:63 | my_record_struct | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:57:48:57:63 | my_record_struct | T2 | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:57:65:61:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:57:65:61:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:58:13:58:13 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:58:17:58:22 | value1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:59:13:59:13 | y | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:59:17:59:22 | value2 | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:60:9:60:10 | TupleExpr | | file://:0:0:0:0 | () | +| pattern_matching.rs:60:9:60:10 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:63:9:63:23 | my_tuple_struct | | pattern_matching.rs:6:1:6:37 | MyTupleStruct | | pattern_matching.rs:63:9:63:23 | my_tuple_struct | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:63:9:63:23 | my_tuple_struct | T2 | {EXTERNAL LOCATION} | bool | @@ -6709,7 +6733,7 @@ inferType | pattern_matching.rs:63:27:63:50 | MyTupleStruct(...) | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:63:41:63:42 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:63:45:63:49 | false | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:64:5:68:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:64:5:68:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:64:12:64:40 | MyTupleStruct(...) | | pattern_matching.rs:6:1:6:37 | MyTupleStruct | | pattern_matching.rs:64:12:64:40 | MyTupleStruct(...) | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:64:12:64:40 | MyTupleStruct(...) | T2 | {EXTERNAL LOCATION} | bool | @@ -6718,12 +6742,12 @@ inferType | pattern_matching.rs:64:44:64:58 | my_tuple_struct | | pattern_matching.rs:6:1:6:37 | MyTupleStruct | | pattern_matching.rs:64:44:64:58 | my_tuple_struct | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:64:44:64:58 | my_tuple_struct | T2 | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:64:60:68:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:64:60:68:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:65:13:65:13 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:65:17:65:22 | value1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:66:13:66:13 | y | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:66:17:66:22 | value2 | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:67:9:67:10 | TupleExpr | | file://:0:0:0:0 | () | +| pattern_matching.rs:67:9:67:10 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:70:9:70:16 | my_enum1 | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:70:9:70:16 | my_enum1 | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:70:9:70:16 | my_enum1 | T2 | {EXTERNAL LOCATION} | bool | @@ -6732,7 +6756,7 @@ inferType | pattern_matching.rs:70:20:73:5 | ...::Variant1 {...} | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:71:17:71:18 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:72:17:72:21 | false | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:74:5:85:5 | match my_enum1 { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:74:5:85:5 | match my_enum1 { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:74:11:74:18 | my_enum1 | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:74:11:74:18 | my_enum1 | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:74:11:74:18 | my_enum1 | T2 | {EXTERNAL LOCATION} | bool | @@ -6741,656 +6765,591 @@ inferType | pattern_matching.rs:75:9:75:43 | ...::Variant1 {...} | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:75:28:75:33 | value1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:75:36:75:41 | value2 | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:75:48:79:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:75:48:79:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:76:17:76:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:76:21:76:26 | value1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:77:17:77:17 | y | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:77:21:77:26 | value2 | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:78:13:78:14 | TupleExpr | | file://:0:0:0:0 | () | +| pattern_matching.rs:78:13:78:14 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:80:9:80:40 | ...::Variant2(...) | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:80:9:80:40 | ...::Variant2(...) | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:80:9:80:40 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:80:26:80:31 | value1 | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:80:34:80:39 | value2 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:80:45:84:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:80:45:84:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:81:17:81:17 | x | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:81:21:81:26 | value1 | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:82:17:82:17 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:82:21:82:26 | value2 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:83:13:83:14 | TupleExpr | | file://:0:0:0:0 | () | +| pattern_matching.rs:83:13:83:14 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:87:9:87:22 | my_nested_enum | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:87:9:87:22 | my_nested_enum | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T1 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T2 | file://:0:0:0:0 | & | -| pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T2 | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T2.TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:87:9:87:22 | my_nested_enum | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T1 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T2 | file://:0:0:0:0 | & | -| pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T2 | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T2.TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:88:9:88:13 | false | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T2 | file://:0:0:0:0 | & | -| pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T2.TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:90:21:90:22 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:91:21:91:28 | "string" | | file://:0:0:0:0 | & | -| pattern_matching.rs:91:21:91:28 | "string" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:95:5:109:5 | match my_nested_enum { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:91:21:91:28 | "string" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:91:21:91:28 | "string" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:95:5:109:5 | match my_nested_enum { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:95:11:95:24 | my_nested_enum | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:95:11:95:24 | my_nested_enum | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T1 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T2 | file://:0:0:0:0 | & | -| pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T2 | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T2.TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:95:11:95:24 | my_nested_enum | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T1 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T2 | file://:0:0:0:0 | & | -| pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T2 | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T2.TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:97:13:97:18 | value1 | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T2 | file://:0:0:0:0 | & | -| pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T2.TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:99:25:99:25 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:100:25:100:25 | y | | file://:0:0:0:0 | & | -| pattern_matching.rs:100:25:100:25 | y | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:102:14:107:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:100:25:100:25 | y | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:100:25:100:25 | y | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:102:14:107:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:103:17:103:17 | a | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:103:21:103:26 | value1 | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:104:17:104:17 | b | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:104:21:104:21 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:105:17:105:17 | c | | file://:0:0:0:0 | & | -| pattern_matching.rs:105:17:105:17 | c | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:105:21:105:21 | y | | file://:0:0:0:0 | & | -| pattern_matching.rs:105:21:105:21 | y | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:106:13:106:14 | TupleExpr | | file://:0:0:0:0 | () | +| pattern_matching.rs:105:17:105:17 | c | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:105:17:105:17 | c | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:105:21:105:21 | y | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:105:21:105:21 | y | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:106:13:106:14 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:108:9:108:9 | _ | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:108:9:108:9 | _ | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:108:9:108:9 | _ | T1.T1 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:108:9:108:9 | _ | T1.T2 | file://:0:0:0:0 | & | -| pattern_matching.rs:108:9:108:9 | _ | T1.T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:108:9:108:9 | _ | T1.T2 | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:108:9:108:9 | _ | T1.T2.TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:108:9:108:9 | _ | T2 | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:108:14:108:15 | TupleExpr | | file://:0:0:0:0 | () | +| pattern_matching.rs:108:14:108:15 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:111:9:111:12 | opt1 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:111:9:111:12 | opt1 | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:111:16:111:39 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:111:16:111:39 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:111:21:111:38 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:113:9:113:9 | _ | | file://:0:0:0:0 | () | -| pattern_matching.rs:113:13:116:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:113:9:113:9 | _ | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:113:13:116:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:113:20:113:33 | Some::<...>(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:113:20:113:33 | Some::<...>(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:113:32:113:32 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:113:37:113:40 | opt1 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:113:37:113:40 | opt1 | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:114:5:116:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:114:5:116:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:115:9:115:9 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:118:9:118:12 | opt2 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:118:9:118:12 | opt2 | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:118:16:118:39 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:118:16:118:39 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:118:21:118:38 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:120:9:120:9 | _ | | file://:0:0:0:0 | () | -| pattern_matching.rs:120:13:123:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:120:9:120:9 | _ | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:120:13:123:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:120:20:120:41 | ...::Some::<...>(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:120:20:120:41 | ...::Some::<...>(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:120:40:120:40 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:120:45:120:48 | opt2 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:120:45:120:48 | opt2 | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:121:5:123:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:121:5:123:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:122:9:122:9 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:125:9:125:12 | opt3 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:125:9:125:12 | opt3 | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:125:16:125:39 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:125:16:125:39 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:125:21:125:38 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:127:9:127:9 | _ | | file://:0:0:0:0 | () | -| pattern_matching.rs:127:13:130:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:127:9:127:9 | _ | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:127:13:130:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:127:20:127:41 | ...::Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:127:20:127:41 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:127:40:127:40 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:127:45:127:48 | opt3 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:127:45:127:48 | opt3 | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:128:5:130:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:128:5:130:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:129:9:129:9 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:132:5:132:8 | None | | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:132:5:132:8 | None | T | file://:0:0:0:0 | () | -| pattern_matching.rs:168:27:217:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:132:5:132:8 | None | T | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:168:27:217:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:169:9:169:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:169:17:169:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:171:5:186:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:171:5:186:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:171:11:171:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:173:9:173:10 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:173:15:176:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:173:15:176:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:174:17:174:29 | literal_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:174:33:174:37 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:175:22:175:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:175:22:175:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:175:22:175:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:175:22:175:57 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:175:22:175:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:175:22:175:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:175:45:175:57 | literal_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:177:10:177:10 | 1 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:177:15:180:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:177:15:180:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:178:17:178:32 | negative_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:178:36:178:40 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:179:22:179:61 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:179:22:179:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:179:22:179:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:179:22:179:61 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:179:22:179:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:179:22:179:61 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:179:46:179:61 | negative_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:181:9:181:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:181:14:184:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:181:14:184:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:182:17:182:28 | zero_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:182:32:182:36 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:183:22:183:53 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:183:22:183:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:183:22:183:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:183:22:183:53 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:183:22:183:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:183:22:183:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:183:42:183:53 | zero_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:185:9:185:9 | _ | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:185:14:185:15 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:185:14:185:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:188:9:188:17 | float_val | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:188:21:188:27 | 3.14f64 | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:189:5:195:5 | match float_val { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:189:5:195:5 | match float_val { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:189:11:189:19 | float_val | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:190:9:190:12 | 3.14 | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:190:17:193:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:190:17:193:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:191:17:191:24 | pi_match | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:191:28:191:36 | float_val | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:192:22:192:47 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:192:22:192:47 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:192:22:192:47 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:192:22:192:47 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:192:22:192:47 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:192:22:192:47 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:192:40:192:47 | pi_match | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:194:9:194:9 | _ | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:194:14:194:15 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:197:9:197:18 | string_val | | file://:0:0:0:0 | & | -| pattern_matching.rs:197:9:197:18 | string_val | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:197:22:197:28 | "hello" | | file://:0:0:0:0 | & | -| pattern_matching.rs:197:22:197:28 | "hello" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:198:5:204:5 | match string_val { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:198:11:198:20 | string_val | | file://:0:0:0:0 | & | -| pattern_matching.rs:198:11:198:20 | string_val | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:199:9:199:15 | "hello" | | file://:0:0:0:0 | & | -| pattern_matching.rs:199:9:199:15 | "hello" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:199:20:202:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:200:17:200:27 | hello_match | | file://:0:0:0:0 | & | -| pattern_matching.rs:200:17:200:27 | hello_match | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:200:31:200:40 | string_val | | file://:0:0:0:0 | & | -| pattern_matching.rs:200:31:200:40 | string_val | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:201:22:201:54 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:201:22:201:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:201:22:201:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:201:22:201:54 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:201:44:201:54 | hello_match | | file://:0:0:0:0 | & | -| pattern_matching.rs:201:44:201:54 | hello_match | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:203:9:203:9 | _ | | file://:0:0:0:0 | & | -| pattern_matching.rs:203:9:203:9 | _ | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:203:14:203:15 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:194:14:194:15 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:197:9:197:18 | string_val | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:197:9:197:18 | string_val | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:197:22:197:28 | "hello" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:197:22:197:28 | "hello" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:198:5:204:5 | match string_val { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:198:11:198:20 | string_val | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:198:11:198:20 | string_val | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:199:9:199:15 | "hello" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:199:9:199:15 | "hello" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:199:20:202:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:200:17:200:27 | hello_match | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:200:17:200:27 | hello_match | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:200:31:200:40 | string_val | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:200:31:200:40 | string_val | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:201:22:201:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:201:22:201:54 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:201:44:201:54 | hello_match | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:201:44:201:54 | hello_match | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:203:9:203:9 | _ | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:203:9:203:9 | _ | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:203:14:203:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:206:9:206:16 | bool_val | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:206:20:206:23 | true | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:207:5:216:5 | match bool_val { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:207:5:216:5 | match bool_val { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:207:11:207:18 | bool_val | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:208:9:208:12 | true | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:208:17:211:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:208:17:211:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:209:17:209:26 | true_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:209:30:209:37 | bool_val | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:210:22:210:51 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:210:22:210:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:210:22:210:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:210:22:210:51 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:210:22:210:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:210:22:210:51 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:210:42:210:51 | true_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:212:9:212:13 | false | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:212:18:215:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:212:18:215:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:213:17:213:27 | false_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:213:31:213:38 | bool_val | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:214:22:214:53 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:214:22:214:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:214:22:214:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:214:22:214:53 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:214:22:214:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:214:22:214:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:214:43:214:53 | false_match | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:219:30:277:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:219:30:277:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:220:9:220:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:220:17:220:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:223:5:228:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:223:5:228:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:223:11:223:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:224:9:224:9 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:224:14:227:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:224:14:227:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:225:17:225:27 | bound_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:225:31:225:31 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:226:22:226:58 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:226:22:226:58 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:226:22:226:58 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:226:22:226:58 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:226:22:226:58 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:226:22:226:58 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:226:48:226:58 | bound_value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:231:5:236:5 | match ... { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:231:11:231:16 | &value | | file://:0:0:0:0 | & | -| pattern_matching.rs:231:11:231:16 | &value | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:231:5:236:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:231:11:231:16 | &value | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:231:11:231:16 | &value | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:231:12:231:16 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:232:13:232:13 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:232:13:232:13 | x | &T | file://:0:0:0:0 | & | -| pattern_matching.rs:232:13:232:13 | x | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:232:18:235:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:233:17:233:25 | ref_bound | | file://:0:0:0:0 | & | -| pattern_matching.rs:233:17:233:25 | ref_bound | &T | file://:0:0:0:0 | & | -| pattern_matching.rs:233:17:233:25 | ref_bound | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:233:29:233:29 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:233:29:233:29 | x | &T | file://:0:0:0:0 | & | -| pattern_matching.rs:233:29:233:29 | x | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:234:22:234:60 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:234:22:234:60 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:234:22:234:60 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:234:22:234:60 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:234:52:234:60 | ref_bound | | file://:0:0:0:0 | & | -| pattern_matching.rs:234:52:234:60 | ref_bound | &T | file://:0:0:0:0 | & | -| pattern_matching.rs:234:52:234:60 | ref_bound | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:232:13:232:13 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:232:13:232:13 | x | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:232:13:232:13 | x | TRef.TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:232:18:235:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:233:17:233:25 | ref_bound | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:233:17:233:25 | ref_bound | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:233:17:233:25 | ref_bound | TRef.TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:233:29:233:29 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:233:29:233:29 | x | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:233:29:233:29 | x | TRef.TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:234:22:234:60 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:234:22:234:60 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:234:52:234:60 | ref_bound | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:234:52:234:60 | ref_bound | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:234:52:234:60 | ref_bound | TRef.TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:239:13:239:25 | mutable_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:239:29:239:33 | 10i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:240:5:246:5 | match mutable_value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:240:5:246:5 | match mutable_value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:240:11:240:23 | mutable_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:241:13:241:13 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:241:18:245:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:241:18:245:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:242:17:242:25 | mut_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:242:29:242:29 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:243:13:243:13 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:243:13:243:18 | ... += ... | | file://:0:0:0:0 | () | +| pattern_matching.rs:243:13:243:18 | ... += ... | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:243:18:243:18 | 1 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:244:22:244:56 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:244:22:244:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:244:22:244:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:244:22:244:56 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:244:22:244:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:244:22:244:56 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:244:48:244:56 | mut_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:249:9:249:20 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:249:9:249:20 | option_value | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:249:24:249:44 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:249:24:249:44 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:249:39:249:43 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:250:5:266:5 | match option_value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:250:5:266:5 | match option_value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:250:11:250:22 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:250:11:250:22 | option_value | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:251:9:251:30 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:251:9:251:30 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:251:24:251:24 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:251:28:251:29 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:251:35:254:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:251:35:254:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:252:17:252:24 | at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:252:28:252:28 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:253:22:253:59 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:253:22:253:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:253:22:253:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:253:22:253:59 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:253:22:253:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:253:22:253:59 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:253:52:253:59 | at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:255:9:255:35 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:255:9:255:35 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:255:24:255:24 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:255:28:255:28 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:255:32:255:34 | 100 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:255:40:258:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:255:40:258:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:256:17:256:30 | range_at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:256:34:256:34 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:257:22:257:63 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:257:22:257:63 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:257:22:257:63 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:257:22:257:63 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:257:22:257:63 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:257:22:257:63 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:257:50:257:63 | range_at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:259:9:259:25 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:259:9:259:25 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:259:24:259:24 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:259:30:262:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:259:30:262:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:260:17:260:26 | some_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:260:30:260:30 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:261:22:261:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:261:22:261:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:261:22:261:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:261:22:261:49 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:261:22:261:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:261:22:261:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:261:40:261:49 | some_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:263:9:263:22 | ...::None | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:263:9:263:22 | ...::None | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:263:27:265:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:264:22:264:33 | "None value\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:264:22:264:33 | "None value\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:264:22:264:33 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:264:22:264:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:264:22:264:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:264:22:264:33 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:263:27:265:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:264:22:264:33 | "None value\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:264:22:264:33 | "None value\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:264:22:264:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:264:22:264:33 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:269:13:269:23 | ref_mut_val | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:269:27:269:30 | 5i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:270:5:276:5 | match ... { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | | file://:0:0:0:0 | & | -| pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:270:5:276:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:270:16:270:26 | ref_mut_val | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:271:17:271:17 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:271:17:271:17 | x | &T | file://:0:0:0:0 | & | -| pattern_matching.rs:271:17:271:17 | x | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:271:22:275:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:272:17:272:29 | ref_mut_bound | | file://:0:0:0:0 | & | -| pattern_matching.rs:272:17:272:29 | ref_mut_bound | &T | file://:0:0:0:0 | & | -| pattern_matching.rs:272:17:272:29 | ref_mut_bound | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:272:33:272:33 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:272:33:272:33 | x | &T | file://:0:0:0:0 | & | -| pattern_matching.rs:272:33:272:33 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:271:17:271:17 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:271:17:271:17 | x | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:271:17:271:17 | x | TRef.TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:271:22:275:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:272:17:272:29 | ref_mut_bound | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:272:17:272:29 | ref_mut_bound | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:272:17:272:29 | ref_mut_bound | TRef.TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:272:33:272:33 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:272:33:272:33 | x | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:272:33:272:33 | x | TRef.TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:273:13:273:27 | * ... | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:273:13:273:32 | ... += ... | | file://:0:0:0:0 | () | -| pattern_matching.rs:273:14:273:27 | * ... | | file://:0:0:0:0 | & | -| pattern_matching.rs:273:14:273:27 | * ... | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:273:15:273:27 | ref_mut_bound | | file://:0:0:0:0 | & | -| pattern_matching.rs:273:15:273:27 | ref_mut_bound | &T | file://:0:0:0:0 | & | -| pattern_matching.rs:273:15:273:27 | ref_mut_bound | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:273:13:273:32 | ... += ... | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:273:14:273:27 | * ... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:273:14:273:27 | * ... | TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:273:15:273:27 | ref_mut_bound | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:273:15:273:27 | ref_mut_bound | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:273:15:273:27 | ref_mut_bound | TRef.TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:273:32:273:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:274:22:274:38 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:274:22:274:38 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:274:22:274:38 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:274:22:274:38 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:279:28:290:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:274:22:274:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:274:22:274:38 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:279:28:290:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:280:9:280:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:280:17:280:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:282:5:289:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:282:5:289:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:282:11:282:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:283:9:283:10 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:283:15:283:40 | MacroExpr | | file://:0:0:0:0 | () | -| pattern_matching.rs:283:24:283:39 | "Specific match\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:283:24:283:39 | "Specific match\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:283:24:283:39 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:283:24:283:39 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:283:24:283:39 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:283:24:283:39 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:283:15:283:40 | MacroExpr | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:283:24:283:39 | "Specific match\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:283:24:283:39 | "Specific match\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:283:24:283:39 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:283:24:283:39 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:285:9:285:9 | _ | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:285:14:288:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:285:14:288:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:286:17:286:32 | wildcard_context | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:286:36:286:40 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:287:22:287:65 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:287:22:287:65 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:287:22:287:65 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:287:22:287:65 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:287:22:287:65 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:287:22:287:65 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:287:50:287:65 | wildcard_context | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:292:25:324:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:292:25:324:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:293:9:293:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:293:17:293:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:295:5:310:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:295:5:310:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:295:11:295:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:297:9:297:9 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:297:9:297:14 | RangePat | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:297:13:297:14 | 10 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:297:19:300:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:297:19:300:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:298:17:298:31 | range_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:298:35:298:39 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:299:22:299:59 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:299:22:299:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:299:22:299:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:299:22:299:59 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:299:22:299:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:299:22:299:59 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:299:45:299:59 | range_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:301:9:301:10 | 11 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:301:9:301:12 | RangePat | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:301:17:304:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:301:17:304:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:302:17:302:26 | range_from | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:302:30:302:34 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:303:22:303:52 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:303:22:303:52 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:303:22:303:52 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:303:22:303:52 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:303:22:303:52 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:303:22:303:52 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:303:43:303:52 | range_from | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:305:9:305:12 | RangePat | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:305:12:305:12 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:305:17:308:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:305:17:308:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:306:17:306:34 | range_to_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:306:38:306:42 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:307:22:307:67 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:307:22:307:67 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:307:22:307:67 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:307:22:307:67 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:307:22:307:67 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:307:22:307:67 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:307:50:307:67 | range_to_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:309:9:309:9 | _ | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:309:14:309:15 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:309:14:309:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:312:9:312:16 | char_val | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:312:20:312:22 | 'c' | | {EXTERNAL LOCATION} | char | -| pattern_matching.rs:313:5:323:5 | match char_val { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:313:5:323:5 | match char_val { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:313:11:313:18 | char_val | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:314:9:314:11 | 'a' | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:314:9:314:17 | RangePat | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:314:15:314:17 | 'z' | | {EXTERNAL LOCATION} | char | -| pattern_matching.rs:314:22:317:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:314:22:317:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:315:17:315:30 | lowercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:315:34:315:41 | char_val | | {EXTERNAL LOCATION} | char | -| pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:316:22:316:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:316:22:316:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:316:22:316:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:316:22:316:57 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:316:22:316:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:316:22:316:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:316:44:316:57 | lowercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:318:9:318:11 | 'A' | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:318:9:318:17 | RangePat | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:318:15:318:17 | 'Z' | | {EXTERNAL LOCATION} | char | -| pattern_matching.rs:318:22:321:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:318:22:321:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:319:17:319:30 | uppercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:319:34:319:41 | char_val | | {EXTERNAL LOCATION} | char | -| pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:320:22:320:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:320:22:320:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:320:22:320:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:320:22:320:57 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:320:22:320:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:320:22:320:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:320:44:320:57 | uppercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:322:9:322:9 | _ | | {EXTERNAL LOCATION} | char | -| pattern_matching.rs:322:14:322:15 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:326:29:355:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:322:14:322:15 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:326:29:355:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:327:9:327:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:327:17:327:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:328:13:328:25 | mutable_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:328:29:328:33 | 10i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:331:5:340:5 | match ... { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:331:11:331:16 | &value | | file://:0:0:0:0 | & | -| pattern_matching.rs:331:11:331:16 | &value | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:331:5:340:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:331:11:331:16 | &value | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:331:11:331:16 | &value | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:331:12:331:16 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:332:9:332:11 | &42 | | file://:0:0:0:0 | & | -| pattern_matching.rs:332:9:332:11 | &42 | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:332:9:332:11 | &42 | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:332:9:332:11 | &42 | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:332:10:332:11 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:332:16:335:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:332:16:335:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:333:17:333:27 | deref_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:333:31:333:35 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:334:22:334:58 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:334:22:334:58 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:334:22:334:58 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:334:22:334:58 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:334:22:334:58 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:334:22:334:58 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:334:48:334:58 | deref_match | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:336:9:336:10 | &... | | file://:0:0:0:0 | & | -| pattern_matching.rs:336:9:336:10 | &... | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:336:9:336:10 | &... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:336:9:336:10 | &... | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:336:10:336:10 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:336:15:339:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:336:15:339:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:337:17:337:27 | deref_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:337:31:337:31 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:338:22:338:60 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:338:22:338:60 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:338:22:338:60 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:338:22:338:60 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:338:22:338:60 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:338:22:338:60 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:338:50:338:60 | deref_bound | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:342:5:347:5 | match ... { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:342:11:342:28 | &mut mutable_value | | file://:0:0:0:0 | & | -| pattern_matching.rs:342:11:342:28 | &mut mutable_value | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:342:5:347:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:342:11:342:28 | &mut mutable_value | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:342:11:342:28 | &mut mutable_value | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:342:16:342:28 | mutable_value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:343:9:343:18 | &mut ... | | file://:0:0:0:0 | & | -| pattern_matching.rs:343:9:343:18 | &mut ... | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:343:18:343:18 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:343:18:343:18 | x | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:343:23:346:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:344:17:344:29 | mut_ref_bound | | file://:0:0:0:0 | & | -| pattern_matching.rs:344:17:344:29 | mut_ref_bound | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:344:33:344:33 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:344:33:344:33 | x | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:345:22:345:61 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:345:22:345:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:345:22:345:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:345:22:345:61 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:345:49:345:61 | mut_ref_bound | | file://:0:0:0:0 | & | -| pattern_matching.rs:345:49:345:61 | mut_ref_bound | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:349:5:354:5 | match ... { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:349:11:349:16 | &value | | file://:0:0:0:0 | & | -| pattern_matching.rs:349:11:349:16 | &value | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:343:9:343:18 | &mut ... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:343:9:343:18 | &mut ... | TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:343:18:343:18 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:343:18:343:18 | x | TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:343:23:346:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:344:17:344:29 | mut_ref_bound | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:344:17:344:29 | mut_ref_bound | TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:344:33:344:33 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:344:33:344:33 | x | TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:345:22:345:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:345:22:345:61 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:345:49:345:61 | mut_ref_bound | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:345:49:345:61 | mut_ref_bound | TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:349:5:354:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:349:11:349:16 | &value | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:349:11:349:16 | &value | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:349:12:349:16 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:350:13:350:13 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:350:13:350:13 | x | &T | file://:0:0:0:0 | & | -| pattern_matching.rs:350:13:350:13 | x | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:350:18:353:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:351:17:351:27 | ref_pattern | | file://:0:0:0:0 | & | -| pattern_matching.rs:351:17:351:27 | ref_pattern | &T | file://:0:0:0:0 | & | -| pattern_matching.rs:351:17:351:27 | ref_pattern | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:351:31:351:31 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:351:31:351:31 | x | &T | file://:0:0:0:0 | & | -| pattern_matching.rs:351:31:351:31 | x | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:352:22:352:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:352:22:352:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:352:22:352:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:352:22:352:57 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:352:47:352:57 | ref_pattern | | file://:0:0:0:0 | & | -| pattern_matching.rs:352:47:352:57 | ref_pattern | &T | file://:0:0:0:0 | & | -| pattern_matching.rs:352:47:352:57 | ref_pattern | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:357:26:398:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:350:13:350:13 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:350:13:350:13 | x | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:350:13:350:13 | x | TRef.TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:350:18:353:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:351:17:351:27 | ref_pattern | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:351:17:351:27 | ref_pattern | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:351:17:351:27 | ref_pattern | TRef.TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:351:31:351:31 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:351:31:351:31 | x | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:351:31:351:31 | x | TRef.TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:352:22:352:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:352:22:352:57 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:352:47:352:57 | ref_pattern | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:352:47:352:57 | ref_pattern | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:352:47:352:57 | ref_pattern | TRef.TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:357:26:398:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:358:9:358:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:358:17:358:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:358:28:358:29 | 10 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:358:35:358:36 | 20 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:361:5:380:5 | match point { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:361:5:380:5 | match point { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:361:11:361:15 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:362:9:362:28 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:362:20:362:20 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:362:26:362:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:362:33:365:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:362:33:365:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:363:17:363:22 | origin | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:363:26:363:30 | point | | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:364:22:364:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:364:22:364:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:364:22:364:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:364:22:364:49 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:364:22:364:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:364:22:364:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:364:44:364:49 | origin | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:366:9:366:25 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:366:17:366:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:366:23:366:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:366:30:370:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:366:30:370:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:367:17:367:24 | x_axis_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:367:28:367:28 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:368:17:368:28 | x_axis_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:368:32:368:36 | point | | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | | file://:0:0:0:0 | & | -| pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:369:22:369:80 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:369:22:369:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:369:22:369:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:369:22:369:80 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:369:22:369:80 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:369:22:369:80 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:369:59:369:66 | x_axis_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:369:69:369:80 | x_axis_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:371:9:371:27 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:371:20:371:21 | 10 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:371:32:374:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:371:32:374:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:372:17:372:27 | ten_x_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:372:31:372:35 | point | | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:373:22:373:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:373:22:373:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:373:22:373:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:373:22:373:57 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:373:22:373:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:373:22:373:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:373:47:373:57 | ten_x_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:375:9:375:22 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:375:17:375:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:375:20:375:20 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:375:27:379:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:375:27:379:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:376:17:376:25 | general_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:376:29:376:29 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:377:17:377:25 | general_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:377:29:377:29 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:378:22:378:68 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:378:22:378:68 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:378:22:378:68 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:378:22:378:68 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:378:22:378:68 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:378:22:378:68 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:378:49:378:57 | general_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:378:60:378:68 | general_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:383:9:383:13 | shape | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:383:17:386:5 | ...::Rectangle {...} | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:384:16:384:19 | 10.0 | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:385:17:385:20 | 20.0 | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:387:5:397:5 | match shape { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:387:5:397:5 | match shape { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:387:11:387:15 | shape | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:388:9:391:9 | ...::Rectangle {...} | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:389:20:389:20 | w | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:390:21:390:21 | h | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:391:14:395:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:391:14:395:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:392:17:392:26 | rect_width | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:392:30:392:30 | w | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:393:17:393:27 | rect_height | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:393:31:393:31 | h | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:394:22:394:64 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:394:22:394:64 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:394:22:394:64 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:394:22:394:64 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:394:22:394:64 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:394:22:394:64 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:394:42:394:51 | rect_width | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:394:54:394:64 | rect_height | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:396:9:396:9 | _ | | pattern_matching.rs:145:1:150:1 | Shape | -| pattern_matching.rs:396:14:396:15 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:400:32:441:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:396:14:396:15 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:400:32:441:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:401:9:401:13 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:401:17:401:34 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:401:23:401:25 | 255 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:401:23:401:25 | 255 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:401:28:401:30 | 128 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:401:28:401:30 | 128 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:401:33:401:33 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:401:33:401:33 | 0 | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:404:5:418:5 | match color { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:404:5:418:5 | match color { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:404:11:404:15 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:405:9:405:24 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:405:15:405:17 | 255 | | {EXTERNAL LOCATION} | i32 | @@ -7399,153 +7358,141 @@ inferType | pattern_matching.rs:405:20:405:20 | 0 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:405:23:405:23 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:405:23:405:23 | 0 | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:405:29:408:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:405:29:408:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:406:17:406:25 | red_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:406:29:406:33 | color | | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:407:22:407:48 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:407:22:407:48 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:407:22:407:48 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:407:22:407:48 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:407:22:407:48 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:407:22:407:48 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:407:40:407:48 | red_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:409:9:409:22 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:409:15:409:15 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:409:18:409:18 | g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:409:21:409:21 | b | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:409:27:417:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:409:27:417:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:410:17:410:29 | red_component | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:410:33:410:33 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:411:17:411:31 | green_component | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:411:35:411:35 | g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:412:17:412:30 | blue_component | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:412:34:412:34 | b | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:414:17:415:62 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:414:17:415:62 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:414:17:415:62 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:414:17:415:62 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:414:17:415:62 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:414:17:415:62 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:415:17:415:29 | red_component | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:415:32:415:46 | green_component | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:415:49:415:62 | blue_component | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:421:5:430:5 | match color { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:421:5:430:5 | match color { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:421:11:421:15 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:422:9:422:22 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:422:15:422:17 | 255 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:422:15:422:17 | 255 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:422:20:422:21 | .. | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:422:27:425:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:422:27:425:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:423:17:423:29 | reddish_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:423:33:423:37 | color | | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:424:22:424:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:424:22:424:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:424:22:424:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:424:22:424:57 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:424:22:424:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:424:22:424:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:424:45:424:57 | reddish_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:426:9:426:20 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:426:15:426:15 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:426:18:426:19 | .. | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:426:25:429:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:426:25:429:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:427:17:427:23 | any_red | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:427:27:427:27 | r | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:428:22:428:54 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:428:22:428:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:428:22:428:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:428:22:428:54 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:428:22:428:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:428:22:428:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:428:48:428:54 | any_red | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:434:9:434:15 | wrapper | | pattern_matching.rs:432:5:433:24 | Wrapper | | pattern_matching.rs:434:19:434:29 | Wrapper(...) | | pattern_matching.rs:432:5:433:24 | Wrapper | | pattern_matching.rs:434:27:434:28 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:435:5:440:5 | match wrapper { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:435:5:440:5 | match wrapper { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:435:11:435:17 | wrapper | | pattern_matching.rs:432:5:433:24 | Wrapper | | pattern_matching.rs:436:9:436:18 | Wrapper(...) | | pattern_matching.rs:432:5:433:24 | Wrapper | | pattern_matching.rs:436:17:436:17 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:436:23:439:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:436:23:439:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:437:17:437:29 | wrapped_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:437:33:437:33 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:438:22:438:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:438:22:438:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:438:22:438:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:438:22:438:49 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:438:22:438:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:438:22:438:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:438:37:438:49 | wrapped_value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:443:25:498:1 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:444:9:444:13 | tuple | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:444:9:444:13 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:444:9:444:13 | tuple | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:444:9:444:13 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:444:9:444:13 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:444:9:444:13 | tuple | 2(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:444:17:444:36 | TupleExpr | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:444:17:444:36 | TupleExpr | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:444:17:444:36 | TupleExpr | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:444:17:444:36 | TupleExpr | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:444:17:444:36 | TupleExpr | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:444:17:444:36 | TupleExpr | 2(3) | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:443:25:498:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:444:9:444:13 | tuple | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:444:9:444:13 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:444:9:444:13 | tuple | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:444:9:444:13 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:444:9:444:13 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:444:9:444:13 | tuple | T2 | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:444:17:444:36 | TupleExpr | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:444:17:444:36 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:444:17:444:36 | TupleExpr | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:444:17:444:36 | TupleExpr | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:444:17:444:36 | TupleExpr | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:444:17:444:36 | TupleExpr | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:444:18:444:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:444:24:444:27 | 2i64 | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:444:30:444:35 | 3.0f32 | | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:447:5:458:5 | match tuple { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:447:11:447:15 | tuple | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:447:11:447:15 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:447:11:447:15 | tuple | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:447:11:447:15 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:447:11:447:15 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:447:11:447:15 | tuple | 2(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:448:9:448:19 | TuplePat | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:448:9:448:19 | TuplePat | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:448:9:448:19 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:448:9:448:19 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:448:9:448:19 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:448:9:448:19 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:447:5:458:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:447:11:447:15 | tuple | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:447:11:447:15 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:447:11:447:15 | tuple | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:447:11:447:15 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:447:11:447:15 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:447:11:447:15 | tuple | T2 | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:448:9:448:19 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:448:9:448:19 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:448:9:448:19 | TuplePat | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:448:9:448:19 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:448:9:448:19 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:448:9:448:19 | TuplePat | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:448:10:448:10 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:448:13:448:13 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:448:13:448:13 | 2 | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:448:16:448:18 | 3.0 | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:448:16:448:18 | 3.0 | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:448:24:451:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:449:17:449:27 | exact_tuple | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:449:17:449:27 | exact_tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:449:17:449:27 | exact_tuple | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:449:17:449:27 | exact_tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:449:17:449:27 | exact_tuple | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:449:17:449:27 | exact_tuple | 2(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:449:31:449:35 | tuple | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:449:31:449:35 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:449:31:449:35 | tuple | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:449:31:449:35 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:449:31:449:35 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:449:31:449:35 | tuple | 2(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:450:22:450:53 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:450:22:450:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:450:22:450:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:450:22:450:53 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:450:43:450:53 | exact_tuple | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:450:43:450:53 | exact_tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:450:43:450:53 | exact_tuple | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:450:43:450:53 | exact_tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:450:43:450:53 | exact_tuple | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:450:43:450:53 | exact_tuple | 2(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:452:9:452:17 | TuplePat | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:452:9:452:17 | TuplePat | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:452:9:452:17 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:452:9:452:17 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:452:9:452:17 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:452:9:452:17 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:448:24:451:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:449:17:449:27 | exact_tuple | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:449:17:449:27 | exact_tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:449:17:449:27 | exact_tuple | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:449:17:449:27 | exact_tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:449:17:449:27 | exact_tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:449:17:449:27 | exact_tuple | T2 | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:449:31:449:35 | tuple | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:449:31:449:35 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:449:31:449:35 | tuple | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:449:31:449:35 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:449:31:449:35 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:449:31:449:35 | tuple | T2 | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:450:22:450:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:450:22:450:53 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:450:43:450:53 | exact_tuple | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:450:43:450:53 | exact_tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:450:43:450:53 | exact_tuple | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:450:43:450:53 | exact_tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:450:43:450:53 | exact_tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:450:43:450:53 | exact_tuple | T2 | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:452:9:452:17 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:452:9:452:17 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:452:9:452:17 | TuplePat | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:452:9:452:17 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:452:9:452:17 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:452:9:452:17 | TuplePat | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:452:10:452:10 | a | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:452:13:452:13 | b | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:452:13:452:13 | b | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:452:16:452:16 | c | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:452:16:452:16 | c | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:452:22:457:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:452:22:457:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:453:17:453:26 | first_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:453:30:453:30 | a | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:454:17:454:27 | second_elem | | {EXTERNAL LOCATION} | i32 | @@ -7556,321 +7503,285 @@ inferType | pattern_matching.rs:455:17:455:26 | third_elem | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:455:30:455:30 | c | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:455:30:455:30 | c | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:456:22:456:79 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:456:22:456:79 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:456:22:456:79 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:456:22:456:79 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:456:22:456:79 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:456:22:456:79 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:456:45:456:54 | first_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:456:57:456:67 | second_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:456:57:456:67 | second_elem | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:456:70:456:79 | third_elem | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:456:70:456:79 | third_elem | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:461:5:466:5 | match tuple { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:461:11:461:15 | tuple | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:461:11:461:15 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:461:11:461:15 | tuple | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:461:11:461:15 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:461:11:461:15 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:461:11:461:15 | tuple | 2(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:462:9:462:19 | TuplePat | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:462:9:462:19 | TuplePat | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:462:9:462:19 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:462:9:462:19 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:462:9:462:19 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:462:9:462:19 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:462:24:465:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:464:22:464:53 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:464:22:464:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:464:22:464:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:464:22:464:53 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:469:9:469:12 | unit | | file://:0:0:0:0 | () | -| pattern_matching.rs:469:16:469:17 | TupleExpr | | file://:0:0:0:0 | () | -| pattern_matching.rs:470:5:475:5 | match unit { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:470:11:470:14 | unit | | file://:0:0:0:0 | () | -| pattern_matching.rs:471:9:471:10 | TuplePat | | file://:0:0:0:0 | () | -| pattern_matching.rs:471:15:474:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:472:17:472:26 | unit_value | | file://:0:0:0:0 | () | -| pattern_matching.rs:472:30:472:33 | unit | | file://:0:0:0:0 | () | -| pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:473:22:473:51 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:473:22:473:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:473:22:473:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:473:22:473:51 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:473:42:473:51 | unit_value | | file://:0:0:0:0 | () | -| pattern_matching.rs:478:9:478:14 | single | | file://:0:0:0:0 | (T_1) | -| pattern_matching.rs:478:9:478:14 | single | 0(1) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:478:18:478:25 | TupleExpr | | file://:0:0:0:0 | (T_1) | -| pattern_matching.rs:478:18:478:25 | TupleExpr | 0(1) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:461:5:466:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:461:11:461:15 | tuple | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:461:11:461:15 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:461:11:461:15 | tuple | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:461:11:461:15 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:461:11:461:15 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:461:11:461:15 | tuple | T2 | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:462:9:462:19 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:462:9:462:19 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:462:9:462:19 | TuplePat | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:462:9:462:19 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:462:9:462:19 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:462:9:462:19 | TuplePat | T2 | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:462:24:465:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:464:22:464:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:464:22:464:53 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:469:9:469:12 | unit | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:469:16:469:17 | TupleExpr | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:470:5:475:5 | match unit { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:470:11:470:14 | unit | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:471:9:471:10 | TuplePat | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:471:15:474:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:472:17:472:26 | unit_value | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:472:30:472:33 | unit | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:473:22:473:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:473:22:473:51 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:473:42:473:51 | unit_value | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:478:9:478:14 | single | | {EXTERNAL LOCATION} | (T_1) | +| pattern_matching.rs:478:9:478:14 | single | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:478:18:478:25 | TupleExpr | | {EXTERNAL LOCATION} | (T_1) | +| pattern_matching.rs:478:18:478:25 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:478:19:478:23 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:479:5:484:5 | match single { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:479:11:479:16 | single | | file://:0:0:0:0 | (T_1) | -| pattern_matching.rs:479:11:479:16 | single | 0(1) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:480:9:480:12 | TuplePat | | file://:0:0:0:0 | (T_1) | -| pattern_matching.rs:480:9:480:12 | TuplePat | 0(1) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:479:5:484:5 | match single { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:479:11:479:16 | single | | {EXTERNAL LOCATION} | (T_1) | +| pattern_matching.rs:479:11:479:16 | single | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:480:9:480:12 | TuplePat | | {EXTERNAL LOCATION} | (T_1) | +| pattern_matching.rs:480:9:480:12 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:480:10:480:10 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:480:17:483:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:480:17:483:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:481:17:481:27 | single_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:481:31:481:31 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:482:22:482:60 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:482:22:482:60 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:482:22:482:60 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:482:22:482:60 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:482:22:482:60 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:482:22:482:60 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:482:50:482:60 | single_elem | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:487:9:487:18 | ref_tuple1 | | file://:0:0:0:0 | & | -| pattern_matching.rs:487:9:487:18 | ref_tuple1 | &T | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:487:9:487:18 | ref_tuple1 | &T.0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:487:9:487:18 | ref_tuple1 | &T.1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:487:35:487:41 | &... | | file://:0:0:0:0 | & | -| pattern_matching.rs:487:35:487:41 | &... | &T | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:487:35:487:41 | &... | &T.0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:487:35:487:41 | &... | &T.1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:487:36:487:41 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:487:36:487:41 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:487:36:487:41 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:487:9:487:18 | ref_tuple1 | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:487:9:487:18 | ref_tuple1 | TRef | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:487:9:487:18 | ref_tuple1 | TRef.T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:487:9:487:18 | ref_tuple1 | TRef.T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:487:35:487:41 | &... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:487:35:487:41 | &... | TRef | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:487:35:487:41 | &... | TRef.T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:487:35:487:41 | &... | TRef.T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:487:36:487:41 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:487:36:487:41 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:487:36:487:41 | TupleExpr | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:37:487:37 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:40:487:40 | 2 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:488:5:491:5 | if ... {...} | | file://:0:0:0:0 | () | -| pattern_matching.rs:488:12:488:17 | TuplePat | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:488:21:488:30 | ref_tuple1 | | file://:0:0:0:0 | & | -| pattern_matching.rs:488:21:488:30 | ref_tuple1 | &T | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:488:21:488:30 | ref_tuple1 | &T.0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:488:21:488:30 | ref_tuple1 | &T.1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:488:32:491:5 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:489:18:489:24 | "n: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:489:18:489:24 | "n: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:489:18:489:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:489:18:489:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:489:18:489:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:489:18:489:27 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:490:18:490:24 | "m: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:490:18:490:24 | "m: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:490:18:490:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:490:18:490:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:490:18:490:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:490:18:490:27 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:494:9:494:18 | ref_tuple2 | | file://:0:0:0:0 | & | -| pattern_matching.rs:494:9:494:18 | ref_tuple2 | &T | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:494:9:494:18 | ref_tuple2 | &T.0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:494:9:494:18 | ref_tuple2 | &T.1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:494:35:494:41 | &... | | file://:0:0:0:0 | & | -| pattern_matching.rs:494:35:494:41 | &... | &T | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:494:35:494:41 | &... | &T.0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:494:35:494:41 | &... | &T.1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:494:36:494:41 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:494:36:494:41 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:494:36:494:41 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:488:5:491:5 | if ... {...} | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:488:12:488:17 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:488:21:488:30 | ref_tuple1 | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:488:21:488:30 | ref_tuple1 | TRef | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:488:21:488:30 | ref_tuple1 | TRef.T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:488:21:488:30 | ref_tuple1 | TRef.T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:488:32:491:5 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:489:18:489:24 | "n: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:489:18:489:24 | "n: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:489:18:489:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:489:18:489:27 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:490:18:490:24 | "m: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:490:18:490:24 | "m: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:490:18:490:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:490:18:490:27 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:494:9:494:18 | ref_tuple2 | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:494:9:494:18 | ref_tuple2 | TRef | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:494:9:494:18 | ref_tuple2 | TRef.T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:494:9:494:18 | ref_tuple2 | TRef.T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:494:35:494:41 | &... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:494:35:494:41 | &... | TRef | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:494:35:494:41 | &... | TRef.T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:494:35:494:41 | &... | TRef.T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:494:36:494:41 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:494:36:494:41 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:494:36:494:41 | TupleExpr | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:494:37:494:37 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:494:40:494:40 | 2 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:495:9:495:14 | TuplePat | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:495:18:495:27 | ref_tuple2 | | file://:0:0:0:0 | & | -| pattern_matching.rs:495:18:495:27 | ref_tuple2 | &T | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:495:18:495:27 | ref_tuple2 | &T.0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:495:18:495:27 | ref_tuple2 | &T.1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:496:14:496:20 | "n: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:496:14:496:20 | "n: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:496:14:496:23 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:496:14:496:23 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:496:14:496:23 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:496:14:496:23 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:497:14:497:20 | "m: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:497:14:497:20 | "m: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:497:14:497:23 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:497:14:497:23 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:497:14:497:23 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:497:14:497:23 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:500:33:520:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:495:9:495:14 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:495:18:495:27 | ref_tuple2 | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:495:18:495:27 | ref_tuple2 | TRef | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:495:18:495:27 | ref_tuple2 | TRef.T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:495:18:495:27 | ref_tuple2 | TRef.T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:496:14:496:20 | "n: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:496:14:496:20 | "n: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:496:14:496:23 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:496:14:496:23 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:497:14:497:20 | "m: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:497:14:497:20 | "m: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:497:14:497:23 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:497:14:497:23 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:500:33:520:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:501:9:501:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:501:17:501:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:504:5:509:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:504:5:509:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:504:11:504:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:505:9:505:11 | (...) | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:505:10:505:10 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:505:16:508:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:505:16:508:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:506:17:506:27 | paren_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:506:31:506:31 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:507:22:507:61 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:507:22:507:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:507:22:507:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:507:22:507:61 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:507:22:507:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:507:22:507:61 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:507:51:507:61 | paren_bound | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:512:9:512:13 | tuple | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:512:9:512:13 | tuple | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:512:9:512:13 | tuple | 1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:512:17:512:28 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:512:17:512:28 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:512:17:512:28 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:512:9:512:13 | tuple | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:512:9:512:13 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:512:9:512:13 | tuple | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:512:17:512:28 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:512:17:512:28 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:512:17:512:28 | TupleExpr | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:512:18:512:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:512:24:512:27 | 2i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:513:5:519:5 | match tuple { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:513:11:513:15 | tuple | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:513:11:513:15 | tuple | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:513:11:513:15 | tuple | 1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:514:9:514:16 | TuplePat | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:514:9:514:16 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:514:9:514:16 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:513:5:519:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:513:11:513:15 | tuple | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:513:11:513:15 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:513:11:513:15 | tuple | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:514:9:514:16 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:514:9:514:16 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:514:9:514:16 | TuplePat | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:514:10:514:10 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:514:13:514:15 | (...) | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:514:14:514:14 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:514:21:518:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:514:21:518:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:515:17:515:23 | paren_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:515:27:515:27 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:516:17:516:23 | paren_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:516:27:516:27 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | | file://:0:0:0:0 | & | -| pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:517:22:517:71 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:517:22:517:71 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:517:22:517:71 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:517:22:517:71 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:517:22:517:71 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:517:22:517:71 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:517:56:517:62 | paren_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:517:65:517:71 | paren_y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:522:25:563:1 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:523:9:523:13 | slice | | file://:0:0:0:0 | & | -| pattern_matching.rs:523:9:523:13 | slice | &T | file://:0:0:0:0 | [] | -| pattern_matching.rs:523:9:523:13 | slice | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:523:25:523:40 | &... | | file://:0:0:0:0 | & | -| pattern_matching.rs:523:25:523:40 | &... | &T | file://:0:0:0:0 | [] | -| pattern_matching.rs:523:25:523:40 | &... | &T | file://:0:0:0:0 | [] | -| pattern_matching.rs:523:25:523:40 | &... | &T.[T;...] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:523:25:523:40 | &... | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:523:26:523:40 | [...] | | file://:0:0:0:0 | [] | -| pattern_matching.rs:523:26:523:40 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:522:25:563:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:523:9:523:13 | slice | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:523:9:523:13 | slice | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:523:9:523:13 | slice | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:523:25:523:40 | &... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:523:25:523:40 | &... | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:523:25:523:40 | &... | TRef | {EXTERNAL LOCATION} | [;] | +| pattern_matching.rs:523:25:523:40 | &... | TRef.TArray | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:523:25:523:40 | &... | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:523:26:523:40 | [...] | | {EXTERNAL LOCATION} | [;] | +| pattern_matching.rs:523:26:523:40 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:27:523:27 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:30:523:30 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:33:523:33 | 3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:36:523:36 | 4 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:39:523:39 | 5 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:526:5:551:5 | match slice { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:526:11:526:15 | slice | | file://:0:0:0:0 | & | -| pattern_matching.rs:526:11:526:15 | slice | &T | file://:0:0:0:0 | [] | -| pattern_matching.rs:526:11:526:15 | slice | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:527:9:527:10 | SlicePat | | file://:0:0:0:0 | & | -| pattern_matching.rs:527:9:527:10 | SlicePat | &T | file://:0:0:0:0 | [] | -| pattern_matching.rs:527:9:527:10 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:527:15:530:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:528:17:528:27 | empty_slice | | file://:0:0:0:0 | & | -| pattern_matching.rs:528:17:528:27 | empty_slice | &T | file://:0:0:0:0 | [] | -| pattern_matching.rs:528:17:528:27 | empty_slice | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:528:31:528:35 | slice | | file://:0:0:0:0 | & | -| pattern_matching.rs:528:31:528:35 | slice | &T | file://:0:0:0:0 | [] | -| pattern_matching.rs:528:31:528:35 | slice | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:529:22:529:53 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:529:22:529:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:529:22:529:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:529:22:529:53 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:529:43:529:53 | empty_slice | | file://:0:0:0:0 | & | -| pattern_matching.rs:529:43:529:53 | empty_slice | &T | file://:0:0:0:0 | [] | -| pattern_matching.rs:529:43:529:53 | empty_slice | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:531:9:531:11 | SlicePat | | file://:0:0:0:0 | & | -| pattern_matching.rs:531:9:531:11 | SlicePat | &T | file://:0:0:0:0 | [] | -| pattern_matching.rs:531:9:531:11 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:531:16:534:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:533:22:533:54 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:533:22:533:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:533:22:533:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:533:22:533:54 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:535:9:535:23 | SlicePat | | file://:0:0:0:0 | & | -| pattern_matching.rs:535:9:535:23 | SlicePat | &T | file://:0:0:0:0 | [] | -| pattern_matching.rs:535:9:535:23 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:535:28:539:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:538:22:538:70 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:538:22:538:70 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:538:22:538:70 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:538:22:538:70 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:540:9:540:34 | SlicePat | | file://:0:0:0:0 | & | -| pattern_matching.rs:540:9:540:34 | SlicePat | &T | file://:0:0:0:0 | [] | -| pattern_matching.rs:540:9:540:34 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:540:39:550:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | | file://:0:0:0:0 | & | -| pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:545:17:548:34 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:545:17:548:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:545:17:548:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:545:17:548:34 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:554:9:554:13 | array | | file://:0:0:0:0 | [] | -| pattern_matching.rs:554:9:554:13 | array | [T;...] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:554:17:554:28 | [...] | | file://:0:0:0:0 | [] | -| pattern_matching.rs:554:17:554:28 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:526:5:551:5 | match slice { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:526:11:526:15 | slice | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:526:11:526:15 | slice | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:526:11:526:15 | slice | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:527:9:527:10 | SlicePat | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:527:9:527:10 | SlicePat | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:527:9:527:10 | SlicePat | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:527:15:530:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:528:17:528:27 | empty_slice | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:528:17:528:27 | empty_slice | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:528:17:528:27 | empty_slice | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:528:31:528:35 | slice | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:528:31:528:35 | slice | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:528:31:528:35 | slice | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:529:22:529:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:529:22:529:53 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:529:43:529:53 | empty_slice | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:529:43:529:53 | empty_slice | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:529:43:529:53 | empty_slice | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:531:9:531:11 | SlicePat | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:531:9:531:11 | SlicePat | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:531:9:531:11 | SlicePat | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:531:16:534:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:533:22:533:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:533:22:533:54 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:535:9:535:23 | SlicePat | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:535:9:535:23 | SlicePat | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:535:9:535:23 | SlicePat | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:535:28:539:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:538:22:538:70 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:538:22:538:70 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:540:9:540:34 | SlicePat | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:540:9:540:34 | SlicePat | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:540:9:540:34 | SlicePat | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:540:39:550:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:545:17:548:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:545:17:548:34 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:554:9:554:13 | array | | {EXTERNAL LOCATION} | [;] | +| pattern_matching.rs:554:9:554:13 | array | TArray | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:554:17:554:28 | [...] | | {EXTERNAL LOCATION} | [;] | +| pattern_matching.rs:554:17:554:28 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:554:18:554:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:554:24:554:24 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:554:27:554:27 | 3 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:555:5:562:5 | match array { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:555:11:555:15 | array | | file://:0:0:0:0 | [] | -| pattern_matching.rs:555:11:555:15 | array | [T;...] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:556:9:556:17 | SlicePat | | file://:0:0:0:0 | [] | -| pattern_matching.rs:556:9:556:17 | SlicePat | [T;...] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:556:22:561:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:560:22:560:70 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:560:22:560:70 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:560:22:560:70 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:560:22:560:70 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:565:24:601:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:555:5:562:5 | match array { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:555:11:555:15 | array | | {EXTERNAL LOCATION} | [;] | +| pattern_matching.rs:555:11:555:15 | array | TArray | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:556:9:556:17 | SlicePat | | {EXTERNAL LOCATION} | [;] | +| pattern_matching.rs:556:9:556:17 | SlicePat | TArray | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:556:22:561:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:560:22:560:70 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:560:22:560:70 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:565:24:601:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:567:27:567:28 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:568:9:568:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:568:17:568:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:570:5:576:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:570:5:576:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:570:11:570:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:571:9:571:16 | CONSTANT | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:571:21:574:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:571:21:574:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:572:17:572:27 | const_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:572:31:572:35 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:573:22:573:56 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:573:22:573:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:573:22:573:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:573:22:573:56 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:573:22:573:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:573:22:573:56 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:573:46:573:56 | const_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:575:9:575:9 | _ | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:575:14:575:15 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:575:14:575:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:579:9:579:14 | option | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:579:9:579:14 | option | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:579:18:579:38 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:579:18:579:38 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:579:33:579:37 | 10i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:580:5:588:5 | match option { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:580:5:588:5 | match option { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:580:11:580:16 | option | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:580:11:580:16 | option | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:581:9:581:22 | ...::None | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:581:9:581:22 | ...::None | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:581:27:583:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:582:22:582:35 | "None variant\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:582:22:582:35 | "None variant\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:582:22:582:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:582:22:582:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:582:22:582:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:582:22:582:35 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:581:27:583:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:582:22:582:35 | "None variant\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:582:22:582:35 | "None variant\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:582:22:582:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:582:22:582:35 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:584:9:584:25 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:584:9:584:25 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:584:24:584:24 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:584:30:587:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:584:30:587:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:585:17:585:26 | some_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:585:30:585:30 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:586:22:586:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:586:22:586:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:586:22:586:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:586:22:586:49 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:586:22:586:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:586:22:586:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:586:40:586:49 | some_value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:591:5:600:5 | match ... { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:591:5:600:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:591:11:591:51 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | | pattern_matching.rs:591:11:591:51 | ...::Ok::<...>(...) | E | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:591:11:591:51 | ...::Ok::<...>(...) | T | {EXTERNAL LOCATION} | i32 | @@ -7879,69 +7790,61 @@ inferType | pattern_matching.rs:592:9:592:34 | ...::Ok(...) | E | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:592:9:592:34 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:592:33:592:33 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:592:39:595:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:592:39:595:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:593:17:593:24 | ok_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:593:28:593:28 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:594:22:594:45 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:594:22:594:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:594:22:594:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:594:22:594:45 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:594:22:594:45 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:594:22:594:45 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:594:38:594:45 | ok_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:596:9:596:35 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | | pattern_matching.rs:596:9:596:35 | ...::Err(...) | E | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:596:9:596:35 | ...::Err(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:596:34:596:34 | e | | {EXTERNAL LOCATION} | usize | -| pattern_matching.rs:596:40:599:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:596:40:599:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:597:17:597:25 | err_value | | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:597:29:597:29 | e | | {EXTERNAL LOCATION} | usize | -| pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:598:22:598:43 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:598:22:598:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:598:22:598:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:598:22:598:43 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:598:22:598:43 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:598:22:598:43 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:598:35:598:43 | err_value | | {EXTERNAL LOCATION} | usize | -| pattern_matching.rs:603:22:638:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:603:22:638:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:604:9:604:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:604:17:604:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:607:5:617:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:607:5:617:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:607:11:607:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:608:9:608:9 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:608:9:608:17 | 1 \| 2 \| 3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:608:13:608:13 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:608:17:608:17 | 3 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:608:22:611:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:608:22:611:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:609:17:609:25 | small_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:609:29:609:33 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:610:22:610:50 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:610:22:610:50 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:610:22:610:50 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:610:22:610:50 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:610:22:610:50 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:610:22:610:50 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:610:42:610:50 | small_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:612:9:612:10 | 10 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:612:9:612:15 | 10 \| 20 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:612:14:612:15 | 20 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:612:20:615:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:612:20:615:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:613:17:613:25 | round_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:613:29:613:33 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:614:22:614:50 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:614:22:614:50 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:614:22:614:50 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:614:22:614:50 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:614:22:614:50 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:614:22:614:50 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:614:42:614:50 | round_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:616:9:616:9 | _ | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:616:14:616:15 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:616:14:616:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:620:9:620:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:620:17:620:36 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:620:28:620:28 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:620:34:620:34 | 5 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:621:5:628:5 | match point { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:621:5:628:5 | match point { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:621:11:621:15 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:622:9:622:29 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:622:9:622:53 | ... \| ... | | pattern_matching.rs:135:1:140:1 | Point | @@ -7952,22 +7855,20 @@ inferType | pattern_matching.rs:622:41:622:41 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:622:47:622:47 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:622:51:622:51 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:622:58:626:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:622:58:626:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:623:17:623:22 | axis_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:623:26:623:26 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:624:17:624:22 | axis_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:624:26:624:26 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:625:22:625:62 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:625:22:625:62 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:625:22:625:62 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:625:22:625:62 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:625:22:625:62 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:625:22:625:62 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:625:49:625:54 | axis_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:625:57:625:62 | axis_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:627:9:627:9 | _ | | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:627:14:627:15 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:631:5:637:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:627:14:627:15 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:631:5:637:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:631:11:631:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:632:9:632:9 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:632:9:632:14 | RangePat | | {EXTERNAL LOCATION} | i32 | @@ -7976,129 +7877,119 @@ inferType | pattern_matching.rs:632:18:632:19 | 90 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:632:18:632:25 | RangePat | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:632:23:632:25 | 100 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:632:30:635:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:632:30:635:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:633:17:633:30 | range_or_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:633:34:633:38 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:634:22:634:51 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:634:22:634:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:634:22:634:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:634:22:634:51 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:634:22:634:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:634:22:634:51 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:634:38:634:51 | range_or_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:636:9:636:9 | _ | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:636:14:636:15 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:640:24:674:1 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:641:9:641:13 | tuple | | file://:0:0:0:0 | (T_4) | -| pattern_matching.rs:641:9:641:13 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:641:9:641:13 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:641:9:641:13 | tuple | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:641:9:641:13 | tuple | 3(4) | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:641:17:641:41 | TupleExpr | | file://:0:0:0:0 | (T_4) | -| pattern_matching.rs:641:17:641:41 | TupleExpr | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:641:17:641:41 | TupleExpr | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:641:17:641:41 | TupleExpr | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:641:17:641:41 | TupleExpr | 3(4) | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:636:14:636:15 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:640:24:674:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:641:9:641:13 | tuple | | {EXTERNAL LOCATION} | (T_4) | +| pattern_matching.rs:641:9:641:13 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:641:9:641:13 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:641:9:641:13 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:641:9:641:13 | tuple | T3 | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:641:17:641:41 | TupleExpr | | {EXTERNAL LOCATION} | (T_4) | +| pattern_matching.rs:641:17:641:41 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:641:17:641:41 | TupleExpr | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:641:17:641:41 | TupleExpr | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:641:17:641:41 | TupleExpr | T3 | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:641:18:641:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:641:24:641:27 | 2i64 | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:641:30:641:35 | 3.0f32 | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:641:38:641:40 | 4u8 | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:644:5:649:5 | match tuple { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:644:11:644:15 | tuple | | file://:0:0:0:0 | (T_4) | -| pattern_matching.rs:644:11:644:15 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:644:11:644:15 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:644:11:644:15 | tuple | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:644:11:644:15 | tuple | 3(4) | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:645:9:645:19 | TuplePat | | file://:0:0:0:0 | (T_4) | -| pattern_matching.rs:645:9:645:19 | TuplePat | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:645:9:645:19 | TuplePat | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:645:9:645:19 | TuplePat | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:645:9:645:19 | TuplePat | 3(4) | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:645:24:648:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:647:22:647:54 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:647:22:647:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:647:22:647:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:647:22:647:54 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:651:5:656:5 | match tuple { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:651:11:651:15 | tuple | | file://:0:0:0:0 | (T_4) | -| pattern_matching.rs:651:11:651:15 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:651:11:651:15 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:651:11:651:15 | tuple | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:651:11:651:15 | tuple | 3(4) | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:652:9:652:18 | TuplePat | | file://:0:0:0:0 | (T_4) | -| pattern_matching.rs:652:9:652:18 | TuplePat | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:652:9:652:18 | TuplePat | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:652:9:652:18 | TuplePat | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:652:9:652:18 | TuplePat | 3(4) | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:652:23:655:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:654:22:654:52 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:654:22:654:52 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:654:22:654:52 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:654:22:654:52 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:658:5:664:5 | match tuple { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:658:11:658:15 | tuple | | file://:0:0:0:0 | (T_4) | -| pattern_matching.rs:658:11:658:15 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:658:11:658:15 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:658:11:658:15 | tuple | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:658:11:658:15 | tuple | 3(4) | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:659:9:659:25 | TuplePat | | file://:0:0:0:0 | (T_4) | -| pattern_matching.rs:659:9:659:25 | TuplePat | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:659:9:659:25 | TuplePat | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:659:9:659:25 | TuplePat | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:659:9:659:25 | TuplePat | 3(4) | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:659:30:663:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:662:22:662:67 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:662:22:662:67 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:662:22:662:67 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:662:22:662:67 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:644:5:649:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:644:11:644:15 | tuple | | {EXTERNAL LOCATION} | (T_4) | +| pattern_matching.rs:644:11:644:15 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:644:11:644:15 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:644:11:644:15 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:644:11:644:15 | tuple | T3 | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:645:9:645:19 | TuplePat | | {EXTERNAL LOCATION} | (T_4) | +| pattern_matching.rs:645:9:645:19 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:645:9:645:19 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:645:9:645:19 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:645:9:645:19 | TuplePat | T3 | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:645:24:648:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:647:22:647:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:647:22:647:54 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:651:5:656:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:651:11:651:15 | tuple | | {EXTERNAL LOCATION} | (T_4) | +| pattern_matching.rs:651:11:651:15 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:651:11:651:15 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:651:11:651:15 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:651:11:651:15 | tuple | T3 | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:652:9:652:18 | TuplePat | | {EXTERNAL LOCATION} | (T_4) | +| pattern_matching.rs:652:9:652:18 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:652:9:652:18 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:652:9:652:18 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:652:9:652:18 | TuplePat | T3 | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:652:23:655:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:654:22:654:52 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:654:22:654:52 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:658:5:664:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:658:11:658:15 | tuple | | {EXTERNAL LOCATION} | (T_4) | +| pattern_matching.rs:658:11:658:15 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:658:11:658:15 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:658:11:658:15 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:658:11:658:15 | tuple | T3 | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:659:9:659:25 | TuplePat | | {EXTERNAL LOCATION} | (T_4) | +| pattern_matching.rs:659:9:659:25 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:659:9:659:25 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:659:9:659:25 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:659:9:659:25 | TuplePat | T3 | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:659:30:663:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:662:22:662:67 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:662:22:662:67 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:667:9:667:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:667:17:667:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:667:28:667:29 | 10 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:667:35:667:36 | 20 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:668:5:673:5 | match point { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:668:5:673:5 | match point { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:668:11:668:15 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:669:9:669:23 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:669:17:669:17 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:669:28:672:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:669:28:672:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:670:17:670:22 | rest_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:670:26:670:26 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:671:22:671:47 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:671:22:671:47 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:671:22:671:47 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:671:22:671:47 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:671:22:671:47 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:671:22:671:47 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:671:42:671:47 | rest_x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:676:25:696:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:676:25:696:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:678:17:678:18 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:678:17:678:18 | match 42i32 { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:679:17:679:17 | match 42i32 { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:678:17:678:18 | match 42i32 { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:679:17:679:17 | match 42i32 { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:679:17:679:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:694:21:694:25 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:694:21:694:25 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:694:21:694:25 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:694:21:694:29 | match 42i32 { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:694:21:694:25 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:694:21:694:29 | match 42i32 { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:694:28:694:29 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:695:21:695:25 | 10i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:695:21:695:25 | 10i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:695:21:695:25 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:695:21:695:28 | match 10i32 { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:695:21:695:25 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:695:21:695:28 | match 10i32 { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:695:28:695:28 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:698:34:724:1 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:700:9:700:20 | complex_data | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:700:9:700:20 | complex_data | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:700:9:700:20 | complex_data | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:700:9:700:20 | complex_data | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:700:24:700:79 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:700:24:700:79 | TupleExpr | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:700:24:700:79 | TupleExpr | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:700:24:700:79 | TupleExpr | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:698:34:724:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:700:9:700:20 | complex_data | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:700:9:700:20 | complex_data | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:700:9:700:20 | complex_data | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:700:9:700:20 | complex_data | T1.T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:700:24:700:79 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:700:24:700:79 | TupleExpr | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:700:24:700:79 | TupleExpr | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:700:24:700:79 | TupleExpr | T1.T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:700:25:700:44 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:700:36:700:36 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:700:42:700:42 | 2 | | {EXTERNAL LOCATION} | i32 | @@ -8106,20 +7997,17 @@ inferType | pattern_matching.rs:700:47:700:78 | ...::Some(...) | T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:700:62:700:77 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:700:68:700:70 | 255 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:700:68:700:70 | 255 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:700:73:700:73 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:700:73:700:73 | 0 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:700:76:700:76 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:700:76:700:76 | 0 | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:702:5:723:5 | match complex_data { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:702:11:702:22 | complex_data | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:702:11:702:22 | complex_data | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:702:11:702:22 | complex_data | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:702:11:702:22 | complex_data | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:704:9:704:61 | TuplePat | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:704:9:704:61 | TuplePat | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:704:9:704:61 | TuplePat | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:704:9:704:61 | TuplePat | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:702:5:723:5 | match complex_data { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:702:11:702:22 | complex_data | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:702:11:702:22 | complex_data | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:702:11:702:22 | complex_data | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:702:11:702:22 | complex_data | T1.T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:704:9:704:61 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:704:9:704:61 | TuplePat | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:704:9:704:61 | TuplePat | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:704:9:704:61 | TuplePat | T1.T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:704:10:704:26 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:704:21:704:21 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:704:24:704:24 | y | | {EXTERNAL LOCATION} | i32 | @@ -8130,77 +8018,71 @@ inferType | pattern_matching.rs:704:50:704:52 | 255 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:704:55:704:55 | g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:704:58:704:58 | b | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:704:66:712:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:704:66:712:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:705:17:705:24 | nested_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:705:28:705:28 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:706:17:706:24 | nested_g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:706:28:706:28 | g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:707:17:707:24 | nested_b | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:707:28:707:28 | b | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | | file://:0:0:0:0 | & | -| pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:709:17:710:44 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:709:17:710:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:709:17:710:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:709:17:710:44 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:709:17:710:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:709:17:710:44 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:710:17:710:24 | nested_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:710:27:710:34 | nested_g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:710:37:710:44 | nested_b | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:714:9:714:41 | TuplePat | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:714:9:714:41 | TuplePat | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:714:9:714:41 | TuplePat | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:714:9:714:41 | TuplePat | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:714:9:714:71 | ... \| ... | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:714:9:714:71 | ... \| ... | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:714:9:714:71 | ... \| ... | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:714:9:714:71 | ... \| ... | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:714:9:714:41 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:714:9:714:41 | TuplePat | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:714:9:714:41 | TuplePat | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:714:9:714:41 | TuplePat | T1.T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:714:9:714:71 | ... \| ... | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:714:9:714:71 | ... \| ... | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:714:9:714:71 | ... \| ... | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:714:9:714:71 | ... \| ... | T1.T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:714:10:714:24 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:714:18:714:18 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:714:27:714:40 | ...::None | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:714:27:714:40 | ...::None | T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:714:45:714:71 | TuplePat | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:714:45:714:71 | TuplePat | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:714:45:714:71 | TuplePat | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:714:45:714:71 | TuplePat | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:714:45:714:71 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:714:45:714:71 | TuplePat | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:714:45:714:71 | TuplePat | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:714:45:714:71 | TuplePat | T1.T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:714:46:714:67 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:714:57:714:57 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:714:61:714:61 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:714:70:714:70 | _ | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:714:70:714:70 | _ | T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:714:76:717:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:714:76:717:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:715:17:715:29 | alt_complex_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:715:33:715:33 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | | file://:0:0:0:0 | & | -| pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:716:22:716:65 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:716:22:716:65 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:716:22:716:65 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:716:22:716:65 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:716:22:716:65 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:716:22:716:65 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:716:53:716:65 | alt_complex_x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:719:9:719:13 | other | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:719:9:719:13 | other | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:719:9:719:13 | other | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:719:9:719:13 | other | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:719:18:722:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:720:17:720:29 | other_complex | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:720:17:720:29 | other_complex | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:720:17:720:29 | other_complex | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:720:17:720:29 | other_complex | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:720:33:720:37 | other | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:720:33:720:37 | other | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:720:33:720:37 | other | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:720:33:720:37 | other | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:721:22:721:62 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:721:22:721:62 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:721:22:721:62 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:721:22:721:62 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:721:50:721:62 | other_complex | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:721:50:721:62 | other_complex | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:721:50:721:62 | other_complex | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:721:50:721:62 | other_complex | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:726:37:758:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:719:9:719:13 | other | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:719:9:719:13 | other | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:719:9:719:13 | other | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:719:9:719:13 | other | T1.T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:719:18:722:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:720:17:720:29 | other_complex | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:720:17:720:29 | other_complex | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:720:17:720:29 | other_complex | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:720:17:720:29 | other_complex | T1.T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:720:33:720:37 | other | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:720:33:720:37 | other | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:720:33:720:37 | other | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:720:33:720:37 | other | T1.T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:721:22:721:62 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:721:22:721:62 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:721:50:721:62 | other_complex | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:721:50:721:62 | other_complex | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:721:50:721:62 | other_complex | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:721:50:721:62 | other_complex | T1.T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:726:37:758:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:728:9:728:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:728:17:728:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:728:28:728:29 | 10 | | {EXTERNAL LOCATION} | i32 | @@ -8213,55 +8095,52 @@ inferType | pattern_matching.rs:730:17:730:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:731:9:731:13 | let_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:731:17:731:17 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:733:9:733:13 | tuple | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:733:9:733:13 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:733:9:733:13 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:733:9:733:13 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:733:17:733:36 | TupleExpr | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:733:17:733:36 | TupleExpr | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:733:17:733:36 | TupleExpr | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:733:17:733:36 | TupleExpr | 2(3) | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:733:9:733:13 | tuple | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:733:9:733:13 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:733:9:733:13 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:733:9:733:13 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:733:17:733:36 | TupleExpr | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:733:17:733:36 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:733:17:733:36 | TupleExpr | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:733:17:733:36 | TupleExpr | T2 | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:733:18:733:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:733:24:733:27 | 2i64 | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:733:30:733:35 | 3.0f32 | | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:734:9:734:17 | TuplePat | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:734:9:734:17 | TuplePat | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:734:9:734:17 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:734:9:734:17 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:734:9:734:17 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:734:9:734:17 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:734:9:734:17 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:734:9:734:17 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:734:10:734:10 | a | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:734:13:734:13 | b | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:734:16:734:16 | c | | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:734:21:734:25 | tuple | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:734:21:734:25 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:734:21:734:25 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:734:21:734:25 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:734:21:734:25 | tuple | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:734:21:734:25 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:734:21:734:25 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:734:21:734:25 | tuple | T2 | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:735:9:735:13 | let_a | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:735:17:735:17 | a | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:736:9:736:13 | let_b | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:736:17:736:17 | b | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:737:9:737:13 | let_c | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:737:17:737:17 | c | | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:739:9:739:13 | array | | file://:0:0:0:0 | [] | -| pattern_matching.rs:739:9:739:13 | array | [T;...] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:739:17:739:34 | [...] | | file://:0:0:0:0 | [] | -| pattern_matching.rs:739:17:739:34 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:739:9:739:13 | array | | {EXTERNAL LOCATION} | [;] | +| pattern_matching.rs:739:9:739:13 | array | TArray | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:739:17:739:34 | [...] | | {EXTERNAL LOCATION} | [;] | +| pattern_matching.rs:739:17:739:34 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:18:739:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:24:739:24 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:27:739:27 | 3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:30:739:30 | 4 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:33:739:33 | 5 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:740:9:740:25 | SlicePat | | file://:0:0:0:0 | [] | -| pattern_matching.rs:740:9:740:25 | SlicePat | [T;...] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:740:29:740:33 | array | | file://:0:0:0:0 | [] | -| pattern_matching.rs:740:29:740:33 | array | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:740:9:740:25 | SlicePat | | {EXTERNAL LOCATION} | [;] | +| pattern_matching.rs:740:9:740:25 | SlicePat | TArray | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:740:29:740:33 | array | | {EXTERNAL LOCATION} | [;] | +| pattern_matching.rs:740:29:740:33 | array | TArray | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:744:9:744:13 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:744:17:744:34 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:744:23:744:25 | 255 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:744:23:744:25 | 255 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:744:28:744:30 | 128 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:744:28:744:30 | 128 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:744:33:744:33 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:744:33:744:33 | 0 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:745:9:745:22 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:745:15:745:15 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:745:18:745:18 | g | | {EXTERNAL LOCATION} | u8 | @@ -8275,31 +8154,31 @@ inferType | pattern_matching.rs:748:17:748:17 | b | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:751:9:751:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:751:17:751:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:752:13:752:19 | ref_val | | file://:0:0:0:0 | & | -| pattern_matching.rs:752:13:752:19 | ref_val | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:752:13:752:19 | ref_val | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:752:13:752:19 | ref_val | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:752:23:752:27 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:753:9:753:15 | let_ref | | file://:0:0:0:0 | & | -| pattern_matching.rs:753:9:753:15 | let_ref | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:753:19:753:25 | ref_val | | file://:0:0:0:0 | & | -| pattern_matching.rs:753:19:753:25 | ref_val | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:753:9:753:15 | let_ref | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:753:9:753:15 | let_ref | TRef | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:753:19:753:25 | ref_val | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:753:19:753:25 | ref_val | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:756:13:756:19 | mut_val | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:756:23:756:27 | 10i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:757:9:757:15 | let_mut | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:757:19:757:25 | mut_val | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:760:42:789:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:760:42:789:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:763:22:763:35 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:763:30:763:30 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:763:33:763:33 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:763:59:767:5 | { ... } | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:763:59:767:5 | { ... } | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:763:59:767:5 | { ... } | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:763:59:767:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:763:59:767:5 | { ... } | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:763:59:767:5 | { ... } | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:764:13:764:19 | param_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:764:23:764:23 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:765:13:765:19 | param_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:765:23:765:23 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:766:9:766:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:766:9:766:26 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:766:9:766:26 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:766:9:766:26 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:766:9:766:26 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:766:9:766:26 | TupleExpr | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:766:10:766:16 | param_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:766:19:766:25 | param_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:769:22:769:35 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | @@ -8310,69 +8189,68 @@ inferType | pattern_matching.rs:770:13:770:19 | param_r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:770:23:770:23 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:771:9:771:15 | param_r | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:774:22:774:38 | TuplePat | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:774:22:774:38 | TuplePat | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:774:22:774:38 | TuplePat | 1(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:774:22:774:38 | TuplePat | 2(3) | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:774:22:774:38 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:774:22:774:38 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:774:22:774:38 | TuplePat | T1 | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:774:22:774:38 | TuplePat | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:774:23:774:27 | first | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:774:30:774:30 | _ | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:774:33:774:37 | third | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:774:74:778:5 | { ... } | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:774:74:778:5 | { ... } | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:774:74:778:5 | { ... } | 1(2) | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:774:74:778:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:774:74:778:5 | { ... } | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:774:74:778:5 | { ... } | T1 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:775:13:775:23 | param_first | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:775:27:775:31 | first | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:776:13:776:23 | param_third | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:776:27:776:31 | third | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:777:9:777:34 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:777:9:777:34 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:777:9:777:34 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:777:9:777:34 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:777:9:777:34 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:777:9:777:34 | TupleExpr | T1 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:777:10:777:20 | param_first | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:777:23:777:33 | param_third | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:781:9:781:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:781:17:781:37 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:781:28:781:28 | 5 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:781:34:781:35 | 10 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:782:9:782:17 | extracted | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:782:9:782:17 | extracted | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:782:9:782:17 | extracted | 1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:782:21:782:40 | extract_point(...) | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:782:21:782:40 | extract_point(...) | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:782:21:782:40 | extract_point(...) | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:782:9:782:17 | extracted | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:782:9:782:17 | extracted | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:782:9:782:17 | extracted | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:782:21:782:40 | extract_point(...) | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:782:21:782:40 | extract_point(...) | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:782:21:782:40 | extract_point(...) | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:782:35:782:39 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:784:9:784:13 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:784:17:784:35 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:784:23:784:25 | 200 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:784:23:784:25 | 200 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:784:28:784:30 | 100 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:784:28:784:30 | 100 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:784:33:784:34 | 50 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:784:33:784:34 | 50 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:785:9:785:11 | red | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:785:15:785:34 | extract_color(...) | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:785:29:785:33 | color | | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:787:9:787:13 | tuple | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:787:9:787:13 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:787:9:787:13 | tuple | 1(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:787:9:787:13 | tuple | 2(3) | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:787:17:787:38 | TupleExpr | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:787:17:787:38 | TupleExpr | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:787:17:787:38 | TupleExpr | 1(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:787:17:787:38 | TupleExpr | 2(3) | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:787:9:787:13 | tuple | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:787:9:787:13 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:787:9:787:13 | tuple | T1 | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:787:9:787:13 | tuple | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:787:17:787:38 | TupleExpr | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:787:17:787:38 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:787:17:787:38 | TupleExpr | T1 | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:787:17:787:38 | TupleExpr | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:787:18:787:22 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:787:25:787:31 | 3.14f64 | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:787:34:787:37 | true | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:788:9:788:23 | tuple_extracted | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:788:9:788:23 | tuple_extracted | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:788:9:788:23 | tuple_extracted | 1(2) | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:788:27:788:46 | extract_tuple(...) | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:788:27:788:46 | extract_tuple(...) | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:788:27:788:46 | extract_tuple(...) | 1(2) | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:788:41:788:45 | tuple | | file://:0:0:0:0 | (T_3) | -| pattern_matching.rs:788:41:788:45 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:788:41:788:45 | tuple | 1(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:788:41:788:45 | tuple | 2(3) | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:792:35:824:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:788:9:788:23 | tuple_extracted | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:788:9:788:23 | tuple_extracted | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:788:9:788:23 | tuple_extracted | T1 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:788:27:788:46 | extract_tuple(...) | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:788:27:788:46 | extract_tuple(...) | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:788:27:788:46 | extract_tuple(...) | T1 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:788:41:788:45 | tuple | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:788:41:788:45 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:788:41:788:45 | tuple | T1 | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:788:41:788:45 | tuple | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:792:35:824:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:794:9:794:14 | points | | {EXTERNAL LOCATION} | Vec | +| pattern_matching.rs:794:18:794:65 | MacroExpr | | {EXTERNAL LOCATION} | Vec | | pattern_matching.rs:794:23:794:42 | (...) | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:794:23:794:42 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:794:34:794:34 | 1 | | {EXTERNAL LOCATION} | i32 | @@ -8381,21 +8259,20 @@ inferType | pattern_matching.rs:794:45:794:64 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:794:56:794:56 | 3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:794:62:794:62 | 4 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:795:5:799:5 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:795:5:799:5 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:795:9:795:22 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:795:17:795:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:795:20:795:20 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:795:34:799:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:795:27:795:32 | points | | {EXTERNAL LOCATION} | Vec | +| pattern_matching.rs:795:34:799:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:796:13:796:18 | loop_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:796:22:796:22 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:797:13:797:18 | loop_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:797:22:797:22 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:798:18:798:58 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:798:18:798:58 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:798:18:798:58 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:798:18:798:58 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:798:18:798:58 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:798:18:798:58 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:798:45:798:50 | loop_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:798:53:798:58 | loop_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:802:9:802:20 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | @@ -8403,22 +8280,20 @@ inferType | pattern_matching.rs:802:24:802:44 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:802:24:802:44 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:802:39:802:43 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:803:5:806:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:803:5:806:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:803:12:803:33 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:803:12:803:33 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:803:27:803:27 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:803:31:803:32 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:803:37:803:48 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:803:37:803:48 | option_value | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:803:50:806:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:803:50:806:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:804:13:804:20 | if_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:804:24:804:24 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:805:18:805:54 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:805:18:805:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:805:18:805:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:805:18:805:54 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:805:18:805:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:805:18:805:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:805:47:805:54 | if_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:809:13:809:17 | stack | | {EXTERNAL LOCATION} | Vec | | pattern_matching.rs:809:13:809:17 | stack | A | {EXTERNAL LOCATION} | Global | @@ -8429,7 +8304,7 @@ inferType | pattern_matching.rs:809:36:809:39 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:809:42:809:42 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:809:45:809:45 | 3 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:810:5:813:5 | while ... { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:810:5:813:5 | while ... { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:810:15:810:21 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:810:15:810:21 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:810:20:810:20 | x | | {EXTERNAL LOCATION} | i32 | @@ -8438,55 +8313,51 @@ inferType | pattern_matching.rs:810:25:810:29 | stack | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:810:25:810:35 | stack.pop() | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:810:25:810:35 | stack.pop() | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:810:37:813:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:810:37:813:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:811:13:811:23 | while_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:811:27:811:27 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:812:18:812:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:812:18:812:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:812:18:812:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:812:18:812:42 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:812:18:812:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:812:18:812:42 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:812:32:812:42 | while_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:816:9:816:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:816:17:816:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:817:5:823:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:817:5:823:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:817:11:817:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:818:9:818:9 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:818:14:818:14 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:818:14:818:18 | ... > ... | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:818:18:818:18 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:818:23:821:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:818:23:821:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:819:17:819:23 | guard_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:819:27:819:27 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | | file://:0:0:0:0 | & | -| pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:820:22:820:44 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:820:22:820:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:820:22:820:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:820:22:820:44 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:820:22:820:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:820:22:820:44 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:820:38:820:44 | guard_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:822:9:822:9 | _ | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:822:14:822:15 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:826:28:846:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:822:14:822:15 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:826:28:846:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:827:5:827:7 | f(...) | | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:827:5:827:7 | f(...) | T | file://:0:0:0:0 | () | -| pattern_matching.rs:828:5:828:22 | literal_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:829:5:829:25 | identifier_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:830:5:830:23 | wildcard_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:831:5:831:20 | range_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:832:5:832:24 | reference_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:833:5:833:21 | record_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:834:5:834:27 | tuple_struct_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:835:5:835:20 | tuple_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:836:5:836:28 | parenthesized_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:837:5:837:20 | slice_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:838:5:838:19 | path_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:839:5:839:17 | or_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:840:5:840:19 | rest_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:841:5:841:20 | macro_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:842:5:842:29 | complex_nested_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:843:5:843:32 | patterns_in_let_statements(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:844:5:844:37 | patterns_in_function_parameters(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:845:5:845:30 | patterns_in_control_flow(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:827:5:827:7 | f(...) | T | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:828:5:828:22 | literal_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:829:5:829:25 | identifier_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:830:5:830:23 | wildcard_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:831:5:831:20 | range_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:832:5:832:24 | reference_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:833:5:833:21 | record_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:834:5:834:27 | tuple_struct_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:835:5:835:20 | tuple_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:836:5:836:28 | parenthesized_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:837:5:837:20 | slice_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:838:5:838:19 | path_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:839:5:839:17 | or_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:840:5:840:19 | rest_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:841:5:841:20 | macro_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:842:5:842:29 | complex_nested_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:843:5:843:32 | patterns_in_let_statements(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:844:5:844:37 | patterns_in_function_parameters(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:845:5:845:30 | patterns_in_control_flow(...) | | {EXTERNAL LOCATION} | () | testFailures diff --git a/rust/ql/test/library-tests/type-inference/type-inference.ql b/rust/ql/test/library-tests/type-inference/type-inference.ql index 059cc7848a0a..01af646007da 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.ql +++ b/rust/ql/test/library-tests/type-inference/type-inference.ql @@ -1,10 +1,12 @@ import rust import utils.test.InlineExpectationsTest +import codeql.rust.internal.Type import codeql.rust.internal.TypeInference as TypeInference import TypeInference query predicate inferType(AstNode n, TypePath path, Type t) { t = TypeInference::inferType(n, path) and + t != TUnknownType() and n.fromSource() and not n.isFromMacroExpansion() and not n instanceof IdentPat and // avoid overlap in the output with the underlying `Name` node @@ -58,9 +60,10 @@ module TypeTest implements TestSig { exists(AstNode n, TypePath path, Type t | t = TypeInference::inferType(n, path) and ( - if t = TypeInference::CertainTypeInference::inferCertainType(n, path) - then tag = "certainType" - else tag = "type" + tag = "type" + or + t = TypeInference::CertainTypeInference::inferCertainType(n, path) and + tag = "certainType" ) and location = n.getLocation() and ( diff --git a/rust/ql/test/library-tests/variables/Cfg.expected b/rust/ql/test/library-tests/variables/Cfg.expected index 2e64a70cb5fa..f93586d373be 100644 --- a/rust/ql/test/library-tests/variables/Cfg.expected +++ b/rust/ql/test/library-tests/variables/Cfg.expected @@ -881,1030 +881,1133 @@ edges | main.rs:367:20:367:20 | x | main.rs:365:5:369:9 | match x { ... } | | | main.rs:368:13:368:13 | _ | main.rs:368:18:368:18 | 0 | match | | main.rs:368:18:368:18 | 0 | main.rs:365:5:369:9 | match x { ... } | | -| main.rs:372:1:382:1 | enter fn param_pattern1 | main.rs:373:5:373:6 | a8 | | -| main.rs:372:1:382:1 | exit fn param_pattern1 (normal) | main.rs:372:1:382:1 | exit fn param_pattern1 | | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:12 | ...: ... | match | -| main.rs:373:5:373:12 | ...: ... | main.rs:374:5:377:5 | TuplePat | | -| main.rs:374:5:377:5 | TuplePat | main.rs:375:9:375:10 | b3 | match | -| main.rs:374:5:377:19 | ...: ... | main.rs:379:5:379:18 | ExprStmt | | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | | -| main.rs:375:9:375:10 | b3 | main.rs:376:9:376:10 | c1 | match | -| main.rs:376:9:376:10 | c1 | main.rs:374:5:377:19 | ...: ... | match | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | | -| main.rs:378:9:382:1 | { ... } | main.rs:372:1:382:1 | exit fn param_pattern1 (normal) | | -| main.rs:379:5:379:13 | print_str | main.rs:379:15:379:16 | a8 | | -| main.rs:379:5:379:17 | print_str(...) | main.rs:380:5:380:18 | ExprStmt | | -| main.rs:379:5:379:18 | ExprStmt | main.rs:379:5:379:13 | print_str | | -| main.rs:379:15:379:16 | a8 | main.rs:379:5:379:17 | print_str(...) | | -| main.rs:380:5:380:13 | print_str | main.rs:380:15:380:16 | b3 | | -| main.rs:380:5:380:17 | print_str(...) | main.rs:381:5:381:18 | ExprStmt | | -| main.rs:380:5:380:18 | ExprStmt | main.rs:380:5:380:13 | print_str | | -| main.rs:380:15:380:16 | b3 | main.rs:380:5:380:17 | print_str(...) | | -| main.rs:381:5:381:13 | print_str | main.rs:381:15:381:16 | c1 | | -| main.rs:381:5:381:17 | print_str(...) | main.rs:378:9:382:1 | { ... } | | -| main.rs:381:5:381:18 | ExprStmt | main.rs:381:5:381:13 | print_str | | -| main.rs:381:15:381:16 | c1 | main.rs:381:5:381:17 | print_str(...) | | -| main.rs:384:1:387:1 | enter fn param_pattern2 | main.rs:384:20:384:35 | ...::Left(...) | | -| main.rs:384:1:387:1 | exit fn param_pattern2 (normal) | main.rs:384:1:387:1 | exit fn param_pattern2 | | -| main.rs:384:19:384:64 | ...: Either | main.rs:386:5:386:18 | ExprStmt | | -| main.rs:384:20:384:35 | ...::Left(...) | main.rs:384:33:384:34 | a9 | match | -| main.rs:384:20:384:35 | ...::Left(...) | main.rs:384:39:384:55 | ...::Right(...) | no-match | -| main.rs:384:20:384:55 | ... \| ... | main.rs:384:19:384:64 | ...: Either | match | -| main.rs:384:33:384:34 | a9 | main.rs:384:20:384:55 | ... \| ... | match | -| main.rs:384:33:384:34 | a9 | main.rs:384:33:384:34 | a9 | | -| main.rs:384:39:384:55 | ...::Right(...) | main.rs:384:53:384:54 | a9 | match | -| main.rs:384:53:384:54 | a9 | main.rs:384:20:384:55 | ... \| ... | match | -| main.rs:384:53:384:54 | a9 | main.rs:384:53:384:54 | a9 | | -| main.rs:385:9:387:1 | { ... } | main.rs:384:1:387:1 | exit fn param_pattern2 (normal) | | -| main.rs:386:5:386:13 | print_i64 | main.rs:386:15:386:16 | a9 | | -| main.rs:386:5:386:17 | print_i64(...) | main.rs:385:9:387:1 | { ... } | | -| main.rs:386:5:386:18 | ExprStmt | main.rs:386:5:386:13 | print_i64 | | -| main.rs:386:15:386:16 | a9 | main.rs:386:5:386:17 | print_i64(...) | | -| main.rs:389:1:424:1 | enter fn destruct_assignment | main.rs:390:5:394:18 | let ... = ... | | -| main.rs:389:1:424:1 | exit fn destruct_assignment (normal) | main.rs:389:1:424:1 | exit fn destruct_assignment | | -| main.rs:389:26:424:1 | { ... } | main.rs:389:1:424:1 | exit fn destruct_assignment (normal) | | -| main.rs:390:5:394:18 | let ... = ... | main.rs:394:10:394:10 | 1 | | -| main.rs:390:9:394:5 | TuplePat | main.rs:391:13:391:15 | a10 | match | -| main.rs:391:9:391:15 | mut a10 | main.rs:392:13:392:14 | b4 | match | -| main.rs:391:13:391:15 | a10 | main.rs:391:9:391:15 | mut a10 | | -| main.rs:392:9:392:14 | mut b4 | main.rs:393:13:393:14 | c2 | match | -| main.rs:392:13:392:14 | b4 | main.rs:392:9:392:14 | mut b4 | | -| main.rs:393:9:393:14 | mut c2 | main.rs:395:5:395:19 | ExprStmt | match | -| main.rs:393:13:393:14 | c2 | main.rs:393:9:393:14 | mut c2 | | -| main.rs:394:9:394:17 | TupleExpr | main.rs:390:9:394:5 | TuplePat | | -| main.rs:394:10:394:10 | 1 | main.rs:394:13:394:13 | 2 | | -| main.rs:394:13:394:13 | 2 | main.rs:394:16:394:16 | 3 | | -| main.rs:394:16:394:16 | 3 | main.rs:394:9:394:17 | TupleExpr | | -| main.rs:395:5:395:13 | print_i64 | main.rs:395:15:395:17 | a10 | | -| main.rs:395:5:395:18 | print_i64(...) | main.rs:396:5:396:18 | ExprStmt | | -| main.rs:395:5:395:19 | ExprStmt | main.rs:395:5:395:13 | print_i64 | | -| main.rs:395:15:395:17 | a10 | main.rs:395:5:395:18 | print_i64(...) | | -| main.rs:396:5:396:13 | print_i64 | main.rs:396:15:396:16 | b4 | | -| main.rs:396:5:396:17 | print_i64(...) | main.rs:397:5:397:18 | ExprStmt | | -| main.rs:396:5:396:18 | ExprStmt | main.rs:396:5:396:13 | print_i64 | | -| main.rs:396:15:396:16 | b4 | main.rs:396:5:396:17 | print_i64(...) | | -| main.rs:397:5:397:13 | print_i64 | main.rs:397:15:397:16 | c2 | | -| main.rs:397:5:397:17 | print_i64(...) | main.rs:399:5:407:6 | ExprStmt | | +| main.rs:372:1:381:1 | enter fn match_pattern16 | main.rs:373:5:373:21 | let ... = ... | | +| main.rs:372:1:381:1 | exit fn match_pattern16 (normal) | main.rs:372:1:381:1 | exit fn match_pattern16 | | +| main.rs:372:22:381:1 | { ... } | main.rs:372:1:381:1 | exit fn match_pattern16 (normal) | | +| main.rs:373:5:373:21 | let ... = ... | main.rs:373:13:373:16 | Some | | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | | +| main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | match | +| main.rs:373:13:373:16 | Some | main.rs:373:18:373:19 | 32 | | +| main.rs:373:13:373:20 | Some(...) | main.rs:373:9:373:9 | x | | +| main.rs:373:18:373:19 | 32 | main.rs:373:13:373:20 | Some(...) | | +| main.rs:374:5:380:5 | match x { ... } | main.rs:372:22:381:1 | { ... } | | +| main.rs:374:11:374:11 | x | main.rs:375:9:375:15 | Some(...) | | +| main.rs:375:9:375:15 | Some(...) | main.rs:375:14:375:14 | y | match | +| main.rs:375:9:375:15 | Some(...) | main.rs:379:9:379:9 | _ | no-match | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | | +| main.rs:375:14:375:14 | y | main.rs:377:17:377:20 | Some | match | +| main.rs:376:16:377:23 | [boolean(false)] let ... = ... | main.rs:379:9:379:9 | _ | false | +| main.rs:376:16:377:23 | [boolean(true)] let ... = ... | main.rs:378:16:378:24 | print_i64 | true | +| main.rs:376:20:376:26 | Some(...) | main.rs:376:16:377:23 | [boolean(false)] let ... = ... | no-match | +| main.rs:376:20:376:26 | Some(...) | main.rs:376:25:376:25 | y | match | +| main.rs:376:25:376:25 | y | main.rs:376:16:377:23 | [boolean(true)] let ... = ... | match | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | | +| main.rs:377:17:377:20 | Some | main.rs:377:22:377:22 | y | | +| main.rs:377:17:377:23 | Some(...) | main.rs:376:20:376:26 | Some(...) | | +| main.rs:377:22:377:22 | y | main.rs:377:17:377:23 | Some(...) | | +| main.rs:378:16:378:24 | print_i64 | main.rs:378:26:378:26 | y | | +| main.rs:378:16:378:27 | print_i64(...) | main.rs:374:5:380:5 | match x { ... } | | +| main.rs:378:26:378:26 | y | main.rs:378:16:378:27 | print_i64(...) | | +| main.rs:379:9:379:9 | _ | main.rs:379:14:379:15 | { ... } | match | +| main.rs:379:14:379:15 | { ... } | main.rs:374:5:380:5 | match x { ... } | | +| main.rs:383:1:393:1 | enter fn param_pattern1 | main.rs:384:5:384:6 | a8 | | +| main.rs:383:1:393:1 | exit fn param_pattern1 (normal) | main.rs:383:1:393:1 | exit fn param_pattern1 | | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:12 | ...: ... | match | +| main.rs:384:5:384:12 | ...: ... | main.rs:385:5:388:5 | TuplePat | | +| main.rs:385:5:388:5 | TuplePat | main.rs:386:9:386:10 | b3 | match | +| main.rs:385:5:388:19 | ...: ... | main.rs:390:5:390:18 | ExprStmt | | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | | +| main.rs:386:9:386:10 | b3 | main.rs:387:9:387:10 | c1 | match | +| main.rs:387:9:387:10 | c1 | main.rs:385:5:388:19 | ...: ... | match | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | | +| main.rs:389:9:393:1 | { ... } | main.rs:383:1:393:1 | exit fn param_pattern1 (normal) | | +| main.rs:390:5:390:13 | print_str | main.rs:390:15:390:16 | a8 | | +| main.rs:390:5:390:17 | print_str(...) | main.rs:391:5:391:18 | ExprStmt | | +| main.rs:390:5:390:18 | ExprStmt | main.rs:390:5:390:13 | print_str | | +| main.rs:390:15:390:16 | a8 | main.rs:390:5:390:17 | print_str(...) | | +| main.rs:391:5:391:13 | print_str | main.rs:391:15:391:16 | b3 | | +| main.rs:391:5:391:17 | print_str(...) | main.rs:392:5:392:18 | ExprStmt | | +| main.rs:391:5:391:18 | ExprStmt | main.rs:391:5:391:13 | print_str | | +| main.rs:391:15:391:16 | b3 | main.rs:391:5:391:17 | print_str(...) | | +| main.rs:392:5:392:13 | print_str | main.rs:392:15:392:16 | c1 | | +| main.rs:392:5:392:17 | print_str(...) | main.rs:389:9:393:1 | { ... } | | +| main.rs:392:5:392:18 | ExprStmt | main.rs:392:5:392:13 | print_str | | +| main.rs:392:15:392:16 | c1 | main.rs:392:5:392:17 | print_str(...) | | +| main.rs:395:1:398:1 | enter fn param_pattern2 | main.rs:395:20:395:35 | ...::Left(...) | | +| main.rs:395:1:398:1 | exit fn param_pattern2 (normal) | main.rs:395:1:398:1 | exit fn param_pattern2 | | +| main.rs:395:19:395:64 | ...: Either | main.rs:397:5:397:18 | ExprStmt | | +| main.rs:395:20:395:35 | ...::Left(...) | main.rs:395:33:395:34 | a9 | match | +| main.rs:395:20:395:35 | ...::Left(...) | main.rs:395:39:395:55 | ...::Right(...) | no-match | +| main.rs:395:20:395:55 | ... \| ... | main.rs:395:19:395:64 | ...: Either | match | +| main.rs:395:33:395:34 | a9 | main.rs:395:20:395:55 | ... \| ... | match | +| main.rs:395:33:395:34 | a9 | main.rs:395:33:395:34 | a9 | | +| main.rs:395:39:395:55 | ...::Right(...) | main.rs:395:53:395:54 | a9 | match | +| main.rs:395:53:395:54 | a9 | main.rs:395:20:395:55 | ... \| ... | match | +| main.rs:395:53:395:54 | a9 | main.rs:395:53:395:54 | a9 | | +| main.rs:396:9:398:1 | { ... } | main.rs:395:1:398:1 | exit fn param_pattern2 (normal) | | +| main.rs:397:5:397:13 | print_i64 | main.rs:397:15:397:16 | a9 | | +| main.rs:397:5:397:17 | print_i64(...) | main.rs:396:9:398:1 | { ... } | | | main.rs:397:5:397:18 | ExprStmt | main.rs:397:5:397:13 | print_i64 | | -| main.rs:397:15:397:16 | c2 | main.rs:397:5:397:17 | print_i64(...) | | -| main.rs:399:5:403:5 | TupleExpr | main.rs:404:9:404:11 | a10 | | -| main.rs:399:5:407:5 | ... = ... | main.rs:408:5:408:19 | ExprStmt | | -| main.rs:399:5:407:6 | ExprStmt | main.rs:400:9:400:10 | c2 | | -| main.rs:400:9:400:10 | c2 | main.rs:401:9:401:10 | b4 | | -| main.rs:401:9:401:10 | b4 | main.rs:402:9:402:11 | a10 | | -| main.rs:402:9:402:11 | a10 | main.rs:399:5:403:5 | TupleExpr | | -| main.rs:403:9:407:5 | TupleExpr | main.rs:399:5:407:5 | ... = ... | | -| main.rs:404:9:404:11 | a10 | main.rs:405:9:405:10 | b4 | | -| main.rs:405:9:405:10 | b4 | main.rs:406:9:406:10 | c2 | | -| main.rs:406:9:406:10 | c2 | main.rs:403:9:407:5 | TupleExpr | | -| main.rs:408:5:408:13 | print_i64 | main.rs:408:15:408:17 | a10 | | -| main.rs:408:5:408:18 | print_i64(...) | main.rs:409:5:409:18 | ExprStmt | | -| main.rs:408:5:408:19 | ExprStmt | main.rs:408:5:408:13 | print_i64 | | -| main.rs:408:15:408:17 | a10 | main.rs:408:5:408:18 | print_i64(...) | | -| main.rs:409:5:409:13 | print_i64 | main.rs:409:15:409:16 | b4 | | -| main.rs:409:5:409:17 | print_i64(...) | main.rs:410:5:410:18 | ExprStmt | | -| main.rs:409:5:409:18 | ExprStmt | main.rs:409:5:409:13 | print_i64 | | -| main.rs:409:15:409:16 | b4 | main.rs:409:5:409:17 | print_i64(...) | | -| main.rs:410:5:410:13 | print_i64 | main.rs:410:15:410:16 | c2 | | -| main.rs:410:5:410:17 | print_i64(...) | main.rs:412:5:420:5 | ExprStmt | | -| main.rs:410:5:410:18 | ExprStmt | main.rs:410:5:410:13 | print_i64 | | -| main.rs:410:15:410:16 | c2 | main.rs:410:5:410:17 | print_i64(...) | | -| main.rs:412:5:420:5 | ExprStmt | main.rs:412:12:412:12 | 4 | | -| main.rs:412:5:420:5 | match ... { ... } | main.rs:422:5:422:19 | ExprStmt | | -| main.rs:412:11:412:16 | TupleExpr | main.rs:413:9:416:9 | TuplePat | | -| main.rs:412:12:412:12 | 4 | main.rs:412:15:412:15 | 5 | | -| main.rs:412:15:412:15 | 5 | main.rs:412:11:412:16 | TupleExpr | | -| main.rs:413:9:416:9 | TuplePat | main.rs:414:13:414:15 | a10 | match | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | | -| main.rs:414:13:414:15 | a10 | main.rs:415:13:415:14 | b4 | match | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | | -| main.rs:415:13:415:14 | b4 | main.rs:417:13:417:27 | ExprStmt | match | -| main.rs:416:14:419:9 | { ... } | main.rs:412:5:420:5 | match ... { ... } | | -| main.rs:417:13:417:21 | print_i64 | main.rs:417:23:417:25 | a10 | | -| main.rs:417:13:417:26 | print_i64(...) | main.rs:418:13:418:26 | ExprStmt | | -| main.rs:417:13:417:27 | ExprStmt | main.rs:417:13:417:21 | print_i64 | | -| main.rs:417:23:417:25 | a10 | main.rs:417:13:417:26 | print_i64(...) | | -| main.rs:418:13:418:21 | print_i64 | main.rs:418:23:418:24 | b4 | | -| main.rs:418:13:418:25 | print_i64(...) | main.rs:416:14:419:9 | { ... } | | -| main.rs:418:13:418:26 | ExprStmt | main.rs:418:13:418:21 | print_i64 | | -| main.rs:418:23:418:24 | b4 | main.rs:418:13:418:25 | print_i64(...) | | -| main.rs:422:5:422:13 | print_i64 | main.rs:422:15:422:17 | a10 | | -| main.rs:422:5:422:18 | print_i64(...) | main.rs:423:5:423:18 | ExprStmt | | -| main.rs:422:5:422:19 | ExprStmt | main.rs:422:5:422:13 | print_i64 | | -| main.rs:422:15:422:17 | a10 | main.rs:422:5:422:18 | print_i64(...) | | -| main.rs:423:5:423:13 | print_i64 | main.rs:423:15:423:16 | b4 | | -| main.rs:423:5:423:17 | print_i64(...) | main.rs:389:26:424:1 | { ... } | | -| main.rs:423:5:423:18 | ExprStmt | main.rs:423:5:423:13 | print_i64 | | -| main.rs:423:15:423:16 | b4 | main.rs:423:5:423:17 | print_i64(...) | | -| main.rs:426:1:441:1 | enter fn closure_variable | main.rs:427:5:429:10 | let ... = ... | | -| main.rs:426:1:441:1 | exit fn closure_variable (normal) | main.rs:426:1:441:1 | exit fn closure_variable | | -| main.rs:426:23:441:1 | { ... } | main.rs:426:1:441:1 | exit fn closure_variable (normal) | | -| main.rs:427:5:429:10 | let ... = ... | main.rs:428:9:429:9 | \|...\| x | | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | | -| main.rs:427:9:427:23 | example_closure | main.rs:430:5:431:27 | let ... = ... | match | -| main.rs:428:9:429:9 | \|...\| x | main.rs:427:9:427:23 | example_closure | | -| main.rs:428:9:429:9 | enter \|...\| x | main.rs:428:10:428:10 | x | | -| main.rs:428:9:429:9 | exit \|...\| x (normal) | main.rs:428:9:429:9 | exit \|...\| x | | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:15 | ...: i64 | match | -| main.rs:428:10:428:15 | ...: i64 | main.rs:429:9:429:9 | x | | -| main.rs:429:9:429:9 | x | main.rs:428:9:429:9 | exit \|...\| x (normal) | | -| main.rs:430:5:431:27 | let ... = ... | main.rs:431:9:431:23 | example_closure | | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | | -| main.rs:430:9:430:10 | n1 | main.rs:432:5:432:18 | ExprStmt | match | -| main.rs:431:9:431:23 | example_closure | main.rs:431:25:431:25 | 5 | | -| main.rs:431:9:431:26 | example_closure(...) | main.rs:430:9:430:10 | n1 | | -| main.rs:431:25:431:25 | 5 | main.rs:431:9:431:26 | example_closure(...) | | -| main.rs:432:5:432:13 | print_i64 | main.rs:432:15:432:16 | n1 | | -| main.rs:432:5:432:17 | print_i64(...) | main.rs:434:5:434:25 | ExprStmt | | -| main.rs:432:5:432:18 | ExprStmt | main.rs:432:5:432:13 | print_i64 | | -| main.rs:432:15:432:16 | n1 | main.rs:432:5:432:17 | print_i64(...) | | -| main.rs:434:5:434:22 | immutable_variable | main.rs:434:5:434:24 | immutable_variable(...) | | -| main.rs:434:5:434:24 | immutable_variable(...) | main.rs:435:5:437:10 | let ... = ... | | -| main.rs:434:5:434:25 | ExprStmt | main.rs:434:5:434:22 | immutable_variable | | -| main.rs:435:5:437:10 | let ... = ... | main.rs:436:5:437:9 | \|...\| x | | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | | -| main.rs:435:9:435:26 | immutable_variable | main.rs:438:5:439:30 | let ... = ... | match | -| main.rs:436:5:437:9 | \|...\| x | main.rs:435:9:435:26 | immutable_variable | | -| main.rs:436:5:437:9 | enter \|...\| x | main.rs:436:6:436:6 | x | | -| main.rs:436:5:437:9 | exit \|...\| x (normal) | main.rs:436:5:437:9 | exit \|...\| x | | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:11 | ...: i64 | match | -| main.rs:436:6:436:11 | ...: i64 | main.rs:437:9:437:9 | x | | -| main.rs:437:9:437:9 | x | main.rs:436:5:437:9 | exit \|...\| x (normal) | | -| main.rs:438:5:439:30 | let ... = ... | main.rs:439:9:439:26 | immutable_variable | | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | | -| main.rs:438:9:438:10 | n2 | main.rs:440:5:440:18 | ExprStmt | match | -| main.rs:439:9:439:26 | immutable_variable | main.rs:439:28:439:28 | 6 | | -| main.rs:439:9:439:29 | immutable_variable(...) | main.rs:438:9:438:10 | n2 | | -| main.rs:439:28:439:28 | 6 | main.rs:439:9:439:29 | immutable_variable(...) | | -| main.rs:440:5:440:13 | print_i64 | main.rs:440:15:440:16 | n2 | | -| main.rs:440:5:440:17 | print_i64(...) | main.rs:426:23:441:1 | { ... } | | -| main.rs:440:5:440:18 | ExprStmt | main.rs:440:5:440:13 | print_i64 | | -| main.rs:440:15:440:16 | n2 | main.rs:440:5:440:17 | print_i64(...) | | -| main.rs:443:1:473:1 | enter fn nested_function | main.rs:445:5:447:10 | let ... = ... | | -| main.rs:443:1:473:1 | exit fn nested_function (normal) | main.rs:443:1:473:1 | exit fn nested_function | | -| main.rs:443:22:473:1 | { ... } | main.rs:443:1:473:1 | exit fn nested_function (normal) | | -| main.rs:445:5:447:10 | let ... = ... | main.rs:446:9:447:9 | \|...\| x | | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | | -| main.rs:445:9:445:9 | f | main.rs:448:5:448:20 | ExprStmt | match | -| main.rs:446:9:447:9 | \|...\| x | main.rs:445:9:445:9 | f | | -| main.rs:446:9:447:9 | enter \|...\| x | main.rs:446:10:446:10 | x | | -| main.rs:446:9:447:9 | exit \|...\| x (normal) | main.rs:446:9:447:9 | exit \|...\| x | | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:15 | ...: i64 | match | -| main.rs:446:10:446:15 | ...: i64 | main.rs:447:9:447:9 | x | | -| main.rs:447:9:447:9 | x | main.rs:446:9:447:9 | exit \|...\| x (normal) | | -| main.rs:448:5:448:13 | print_i64 | main.rs:448:15:448:15 | f | | -| main.rs:448:5:448:19 | print_i64(...) | main.rs:450:5:453:5 | fn f | | -| main.rs:448:5:448:20 | ExprStmt | main.rs:448:5:448:13 | print_i64 | | -| main.rs:448:15:448:15 | f | main.rs:448:17:448:17 | 1 | | -| main.rs:448:15:448:18 | f(...) | main.rs:448:5:448:19 | print_i64(...) | | -| main.rs:448:17:448:17 | 1 | main.rs:448:15:448:18 | f(...) | | -| main.rs:450:5:453:5 | enter fn f | main.rs:450:10:450:10 | x | | -| main.rs:450:5:453:5 | exit fn f (normal) | main.rs:450:5:453:5 | exit fn f | | -| main.rs:450:5:453:5 | fn f | main.rs:455:5:455:20 | ExprStmt | | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:15 | ...: i64 | match | -| main.rs:450:10:450:15 | ...: i64 | main.rs:452:9:452:9 | x | | -| main.rs:451:5:453:5 | { ... } | main.rs:450:5:453:5 | exit fn f (normal) | | -| main.rs:452:9:452:9 | x | main.rs:452:13:452:13 | 1 | | -| main.rs:452:9:452:13 | ... + ... | main.rs:451:5:453:5 | { ... } | | -| main.rs:452:13:452:13 | 1 | main.rs:452:9:452:13 | ... + ... | | -| main.rs:455:5:455:13 | print_i64 | main.rs:455:15:455:15 | f | | -| main.rs:455:5:455:19 | print_i64(...) | main.rs:458:9:458:24 | ExprStmt | | -| main.rs:455:5:455:20 | ExprStmt | main.rs:455:5:455:13 | print_i64 | | -| main.rs:455:15:455:15 | f | main.rs:455:17:455:17 | 2 | | -| main.rs:455:15:455:18 | f(...) | main.rs:455:5:455:19 | print_i64(...) | | -| main.rs:455:17:455:17 | 2 | main.rs:455:15:455:18 | f(...) | | -| main.rs:457:5:472:5 | { ... } | main.rs:443:22:473:1 | { ... } | | -| main.rs:458:9:458:17 | print_i64 | main.rs:458:19:458:19 | f | | -| main.rs:458:9:458:23 | print_i64(...) | main.rs:459:9:462:9 | fn f | | -| main.rs:458:9:458:24 | ExprStmt | main.rs:458:9:458:17 | print_i64 | | -| main.rs:458:19:458:19 | f | main.rs:458:21:458:21 | 3 | | -| main.rs:458:19:458:22 | f(...) | main.rs:458:9:458:23 | print_i64(...) | | -| main.rs:458:21:458:21 | 3 | main.rs:458:19:458:22 | f(...) | | -| main.rs:459:9:462:9 | enter fn f | main.rs:459:14:459:14 | x | | -| main.rs:459:9:462:9 | exit fn f (normal) | main.rs:459:9:462:9 | exit fn f | | -| main.rs:459:9:462:9 | fn f | main.rs:464:9:466:9 | ExprStmt | | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:19 | ...: i64 | match | -| main.rs:459:14:459:19 | ...: i64 | main.rs:461:13:461:13 | 2 | | -| main.rs:460:9:462:9 | { ... } | main.rs:459:9:462:9 | exit fn f (normal) | | -| main.rs:461:13:461:13 | 2 | main.rs:461:17:461:17 | x | | -| main.rs:461:13:461:17 | ... * ... | main.rs:460:9:462:9 | { ... } | | -| main.rs:461:17:461:17 | x | main.rs:461:13:461:17 | ... * ... | | -| main.rs:464:9:466:9 | ExprStmt | main.rs:465:13:465:28 | ExprStmt | | -| main.rs:464:9:466:9 | { ... } | main.rs:468:9:470:14 | let ... = ... | | -| main.rs:465:13:465:21 | print_i64 | main.rs:465:23:465:23 | f | | -| main.rs:465:13:465:27 | print_i64(...) | main.rs:464:9:466:9 | { ... } | | -| main.rs:465:13:465:28 | ExprStmt | main.rs:465:13:465:21 | print_i64 | | -| main.rs:465:23:465:23 | f | main.rs:465:25:465:25 | 4 | | -| main.rs:465:23:465:26 | f(...) | main.rs:465:13:465:27 | print_i64(...) | | -| main.rs:465:25:465:25 | 4 | main.rs:465:23:465:26 | f(...) | | -| main.rs:468:9:470:14 | let ... = ... | main.rs:469:13:470:13 | \|...\| x | | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | | -| main.rs:468:13:468:13 | f | main.rs:471:9:471:24 | ExprStmt | match | -| main.rs:469:13:470:13 | \|...\| x | main.rs:468:13:468:13 | f | | -| main.rs:469:13:470:13 | enter \|...\| x | main.rs:469:14:469:14 | x | | -| main.rs:469:13:470:13 | exit \|...\| x (normal) | main.rs:469:13:470:13 | exit \|...\| x | | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:19 | ...: i64 | match | -| main.rs:469:14:469:19 | ...: i64 | main.rs:470:13:470:13 | x | | -| main.rs:470:13:470:13 | x | main.rs:469:13:470:13 | exit \|...\| x (normal) | | -| main.rs:471:9:471:17 | print_i64 | main.rs:471:19:471:19 | f | | -| main.rs:471:9:471:23 | print_i64(...) | main.rs:457:5:472:5 | { ... } | | -| main.rs:471:9:471:24 | ExprStmt | main.rs:471:9:471:17 | print_i64 | | -| main.rs:471:19:471:19 | f | main.rs:471:21:471:21 | 5 | | -| main.rs:471:19:471:22 | f(...) | main.rs:471:9:471:23 | print_i64(...) | | -| main.rs:471:21:471:21 | 5 | main.rs:471:19:471:22 | f(...) | | -| main.rs:475:1:482:1 | enter fn for_variable | main.rs:476:5:476:42 | let ... = ... | | -| main.rs:475:1:482:1 | exit fn for_variable (normal) | main.rs:475:1:482:1 | exit fn for_variable | | -| main.rs:475:19:482:1 | { ... } | main.rs:475:1:482:1 | exit fn for_variable (normal) | | -| main.rs:476:5:476:42 | let ... = ... | main.rs:476:15:476:22 | "apples" | | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | | -| main.rs:476:9:476:9 | v | main.rs:479:12:479:12 | v | match | -| main.rs:476:13:476:41 | &... | main.rs:476:9:476:9 | v | | -| main.rs:476:14:476:41 | [...] | main.rs:476:13:476:41 | &... | | -| main.rs:476:15:476:22 | "apples" | main.rs:476:25:476:30 | "cake" | | -| main.rs:476:25:476:30 | "cake" | main.rs:476:33:476:40 | "coffee" | | -| main.rs:476:33:476:40 | "coffee" | main.rs:476:14:476:41 | [...] | | -| main.rs:478:5:481:5 | for ... in ... { ... } | main.rs:475:19:482:1 | { ... } | | -| main.rs:478:9:478:12 | text | main.rs:478:5:481:5 | for ... in ... { ... } | no-match | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | | -| main.rs:478:9:478:12 | text | main.rs:480:9:480:24 | ExprStmt | match | -| main.rs:479:12:479:12 | v | main.rs:478:9:478:12 | text | | -| main.rs:479:14:481:5 | { ... } | main.rs:478:9:478:12 | text | | -| main.rs:480:9:480:17 | print_str | main.rs:480:19:480:22 | text | | -| main.rs:480:9:480:23 | print_str(...) | main.rs:479:14:481:5 | { ... } | | -| main.rs:480:9:480:24 | ExprStmt | main.rs:480:9:480:17 | print_str | | -| main.rs:480:19:480:22 | text | main.rs:480:9:480:23 | print_str(...) | | -| main.rs:484:1:490:1 | enter fn add_assign | main.rs:485:5:485:18 | let ... = 0 | | -| main.rs:484:1:490:1 | exit fn add_assign (normal) | main.rs:484:1:490:1 | exit fn add_assign | | -| main.rs:484:17:490:1 | { ... } | main.rs:484:1:490:1 | exit fn add_assign (normal) | | -| main.rs:485:5:485:18 | let ... = 0 | main.rs:485:17:485:17 | 0 | | -| main.rs:485:9:485:13 | mut a | main.rs:486:5:486:11 | ExprStmt | match | -| main.rs:485:13:485:13 | a | main.rs:485:9:485:13 | mut a | | -| main.rs:485:17:485:17 | 0 | main.rs:485:13:485:13 | a | | -| main.rs:486:5:486:5 | a | main.rs:486:10:486:10 | 1 | | -| main.rs:486:5:486:10 | ... += ... | main.rs:487:5:487:17 | ExprStmt | | -| main.rs:486:5:486:11 | ExprStmt | main.rs:486:5:486:5 | a | | -| main.rs:486:10:486:10 | 1 | main.rs:486:5:486:10 | ... += ... | | -| main.rs:487:5:487:13 | print_i64 | main.rs:487:15:487:15 | a | | -| main.rs:487:5:487:16 | print_i64(...) | main.rs:488:5:488:28 | ExprStmt | | -| main.rs:487:5:487:17 | ExprStmt | main.rs:487:5:487:13 | print_i64 | | -| main.rs:487:15:487:15 | a | main.rs:487:5:487:16 | print_i64(...) | | -| main.rs:488:5:488:27 | ... .add_assign(...) | main.rs:489:5:489:17 | ExprStmt | | -| main.rs:488:5:488:28 | ExprStmt | main.rs:488:11:488:11 | a | | -| main.rs:488:6:488:11 | &mut a | main.rs:488:25:488:26 | 10 | | -| main.rs:488:11:488:11 | a | main.rs:488:6:488:11 | &mut a | | -| main.rs:488:25:488:26 | 10 | main.rs:488:5:488:27 | ... .add_assign(...) | | -| main.rs:489:5:489:13 | print_i64 | main.rs:489:15:489:15 | a | | -| main.rs:489:5:489:16 | print_i64(...) | main.rs:484:17:490:1 | { ... } | | -| main.rs:489:5:489:17 | ExprStmt | main.rs:489:5:489:13 | print_i64 | | -| main.rs:489:15:489:15 | a | main.rs:489:5:489:16 | print_i64(...) | | -| main.rs:492:1:498:1 | enter fn mutate | main.rs:493:5:493:18 | let ... = 1 | | -| main.rs:492:1:498:1 | exit fn mutate (normal) | main.rs:492:1:498:1 | exit fn mutate | | -| main.rs:492:13:498:1 | { ... } | main.rs:492:1:498:1 | exit fn mutate (normal) | | -| main.rs:493:5:493:18 | let ... = 1 | main.rs:493:17:493:17 | 1 | | -| main.rs:493:9:493:13 | mut i | main.rs:494:5:495:15 | let ... = ... | match | -| main.rs:493:13:493:13 | i | main.rs:493:9:493:13 | mut i | | -| main.rs:493:17:493:17 | 1 | main.rs:493:13:493:13 | i | | -| main.rs:494:5:495:15 | let ... = ... | main.rs:495:14:495:14 | i | | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | | -| main.rs:494:9:494:13 | ref_i | main.rs:496:5:496:15 | ExprStmt | match | -| main.rs:495:9:495:14 | &mut i | main.rs:494:9:494:13 | ref_i | | -| main.rs:495:14:495:14 | i | main.rs:495:9:495:14 | &mut i | | -| main.rs:496:5:496:10 | * ... | main.rs:496:14:496:14 | 2 | | -| main.rs:496:5:496:14 | ... = ... | main.rs:497:5:497:17 | ExprStmt | | -| main.rs:496:5:496:15 | ExprStmt | main.rs:496:6:496:10 | ref_i | | -| main.rs:496:6:496:10 | ref_i | main.rs:496:5:496:10 | * ... | | -| main.rs:496:14:496:14 | 2 | main.rs:496:5:496:14 | ... = ... | | -| main.rs:497:5:497:13 | print_i64 | main.rs:497:15:497:15 | i | | -| main.rs:497:5:497:16 | print_i64(...) | main.rs:492:13:498:1 | { ... } | | -| main.rs:497:5:497:17 | ExprStmt | main.rs:497:5:497:13 | print_i64 | | -| main.rs:497:15:497:15 | i | main.rs:497:5:497:16 | print_i64(...) | | -| main.rs:500:1:505:1 | enter fn mutate_param | main.rs:500:17:500:17 | x | | -| main.rs:500:1:505:1 | exit fn mutate_param (normal) | main.rs:500:1:505:1 | exit fn mutate_param | | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:27 | ...: ... | match | -| main.rs:500:17:500:27 | ...: ... | main.rs:501:5:503:11 | ExprStmt | | -| main.rs:501:5:501:6 | * ... | main.rs:502:10:502:10 | x | | -| main.rs:501:5:503:10 | ... = ... | main.rs:504:5:504:13 | ExprStmt | | -| main.rs:501:5:503:11 | ExprStmt | main.rs:501:6:501:6 | x | | -| main.rs:501:6:501:6 | x | main.rs:501:5:501:6 | * ... | | -| main.rs:502:9:502:10 | * ... | main.rs:503:10:503:10 | x | | -| main.rs:502:9:503:10 | ... + ... | main.rs:501:5:503:10 | ... = ... | | -| main.rs:502:10:502:10 | x | main.rs:502:9:502:10 | * ... | | -| main.rs:503:9:503:10 | * ... | main.rs:502:9:503:10 | ... + ... | | -| main.rs:503:10:503:10 | x | main.rs:503:9:503:10 | * ... | | -| main.rs:504:5:504:12 | return x | main.rs:500:1:505:1 | exit fn mutate_param (normal) | return | -| main.rs:504:5:504:13 | ExprStmt | main.rs:504:12:504:12 | x | | -| main.rs:504:12:504:12 | x | main.rs:504:5:504:12 | return x | | -| main.rs:507:1:513:1 | enter fn mutate_param2 | main.rs:507:22:507:22 | x | | -| main.rs:507:1:513:1 | exit fn mutate_param2 (normal) | main.rs:507:1:513:1 | exit fn mutate_param2 | | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:35 | ...: ... | match | -| main.rs:507:22:507:35 | ...: ... | main.rs:507:38:507:38 | y | | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:56 | ...: ... | match | -| main.rs:507:38:507:56 | ...: ... | main.rs:508:5:510:11 | ExprStmt | | -| main.rs:507:59:513:1 | { ... } | main.rs:507:1:513:1 | exit fn mutate_param2 (normal) | | -| main.rs:508:5:508:6 | * ... | main.rs:509:10:509:10 | x | | -| main.rs:508:5:510:10 | ... = ... | main.rs:511:5:512:10 | ExprStmt | | -| main.rs:508:5:510:11 | ExprStmt | main.rs:508:6:508:6 | x | | -| main.rs:508:6:508:6 | x | main.rs:508:5:508:6 | * ... | | -| main.rs:509:9:509:10 | * ... | main.rs:510:10:510:10 | x | | -| main.rs:509:9:510:10 | ... + ... | main.rs:508:5:510:10 | ... = ... | | -| main.rs:509:10:509:10 | x | main.rs:509:9:509:10 | * ... | | -| main.rs:510:9:510:10 | * ... | main.rs:509:9:510:10 | ... + ... | | -| main.rs:510:10:510:10 | x | main.rs:510:9:510:10 | * ... | | -| main.rs:511:5:511:6 | * ... | main.rs:512:9:512:9 | x | | -| main.rs:511:5:512:9 | ... = ... | main.rs:507:59:513:1 | { ... } | | -| main.rs:511:5:512:10 | ExprStmt | main.rs:511:6:511:6 | y | | -| main.rs:511:6:511:6 | y | main.rs:511:5:511:6 | * ... | | -| main.rs:512:9:512:9 | x | main.rs:511:5:512:9 | ... = ... | | -| main.rs:515:1:535:1 | enter fn mutate_arg | main.rs:516:5:516:18 | let ... = 2 | | -| main.rs:515:1:535:1 | exit fn mutate_arg (normal) | main.rs:515:1:535:1 | exit fn mutate_arg | | -| main.rs:515:17:535:1 | { ... } | main.rs:515:1:535:1 | exit fn mutate_arg (normal) | | -| main.rs:516:5:516:18 | let ... = 2 | main.rs:516:17:516:17 | 2 | | -| main.rs:516:9:516:13 | mut x | main.rs:517:5:518:29 | let ... = ... | match | -| main.rs:516:13:516:13 | x | main.rs:516:9:516:13 | mut x | | -| main.rs:516:17:516:17 | 2 | main.rs:516:13:516:13 | x | | -| main.rs:517:5:518:29 | let ... = ... | main.rs:518:9:518:20 | mutate_param | | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | | -| main.rs:517:9:517:9 | y | main.rs:519:5:519:12 | ExprStmt | match | -| main.rs:518:9:518:20 | mutate_param | main.rs:518:27:518:27 | x | | -| main.rs:518:9:518:28 | mutate_param(...) | main.rs:517:9:517:9 | y | | -| main.rs:518:22:518:27 | &mut x | main.rs:518:9:518:28 | mutate_param(...) | | -| main.rs:518:27:518:27 | x | main.rs:518:22:518:27 | &mut x | | -| main.rs:519:5:519:6 | * ... | main.rs:519:10:519:11 | 10 | | -| main.rs:519:5:519:11 | ... = ... | main.rs:522:5:522:17 | ExprStmt | | -| main.rs:519:5:519:12 | ExprStmt | main.rs:519:6:519:6 | y | | -| main.rs:519:6:519:6 | y | main.rs:519:5:519:6 | * ... | | -| main.rs:519:10:519:11 | 10 | main.rs:519:5:519:11 | ... = ... | | -| main.rs:522:5:522:13 | print_i64 | main.rs:522:15:522:15 | x | | -| main.rs:522:5:522:16 | print_i64(...) | main.rs:524:5:524:18 | let ... = 4 | | -| main.rs:522:5:522:17 | ExprStmt | main.rs:522:5:522:13 | print_i64 | | -| main.rs:522:15:522:15 | x | main.rs:522:5:522:16 | print_i64(...) | | -| main.rs:524:5:524:18 | let ... = 4 | main.rs:524:17:524:17 | 4 | | -| main.rs:524:9:524:13 | mut z | main.rs:525:5:526:20 | let ... = ... | match | -| main.rs:524:13:524:13 | z | main.rs:524:9:524:13 | mut z | | -| main.rs:524:17:524:17 | 4 | main.rs:524:13:524:13 | z | | -| main.rs:525:5:526:20 | let ... = ... | main.rs:526:19:526:19 | x | | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | | -| main.rs:525:9:525:9 | w | main.rs:527:5:530:6 | ExprStmt | match | -| main.rs:526:9:526:19 | &mut ... | main.rs:525:9:525:9 | w | | -| main.rs:526:14:526:19 | &mut x | main.rs:526:9:526:19 | &mut ... | | -| main.rs:526:19:526:19 | x | main.rs:526:14:526:19 | &mut x | | -| main.rs:527:5:527:17 | mutate_param2 | main.rs:528:14:528:14 | z | | -| main.rs:527:5:530:5 | mutate_param2(...) | main.rs:531:5:531:13 | ExprStmt | | -| main.rs:527:5:530:6 | ExprStmt | main.rs:527:5:527:17 | mutate_param2 | | -| main.rs:528:9:528:14 | &mut z | main.rs:529:9:529:9 | w | | -| main.rs:528:14:528:14 | z | main.rs:528:9:528:14 | &mut z | | -| main.rs:529:9:529:9 | w | main.rs:527:5:530:5 | mutate_param2(...) | | -| main.rs:531:5:531:7 | * ... | main.rs:531:11:531:12 | 11 | | -| main.rs:531:5:531:12 | ... = ... | main.rs:534:5:534:17 | ExprStmt | | -| main.rs:531:5:531:13 | ExprStmt | main.rs:531:7:531:7 | w | | -| main.rs:531:6:531:7 | * ... | main.rs:531:5:531:7 | * ... | | -| main.rs:531:7:531:7 | w | main.rs:531:6:531:7 | * ... | | -| main.rs:531:11:531:12 | 11 | main.rs:531:5:531:12 | ... = ... | | -| main.rs:534:5:534:13 | print_i64 | main.rs:534:15:534:15 | z | | -| main.rs:534:5:534:16 | print_i64(...) | main.rs:515:17:535:1 | { ... } | | -| main.rs:534:5:534:17 | ExprStmt | main.rs:534:5:534:13 | print_i64 | | -| main.rs:534:15:534:15 | z | main.rs:534:5:534:16 | print_i64(...) | | -| main.rs:537:1:543:1 | enter fn alias | main.rs:538:5:538:18 | let ... = 1 | | -| main.rs:537:1:543:1 | exit fn alias (normal) | main.rs:537:1:543:1 | exit fn alias | | -| main.rs:537:12:543:1 | { ... } | main.rs:537:1:543:1 | exit fn alias (normal) | | -| main.rs:538:5:538:18 | let ... = 1 | main.rs:538:17:538:17 | 1 | | -| main.rs:538:9:538:13 | mut x | main.rs:539:5:540:15 | let ... = ... | match | -| main.rs:538:13:538:13 | x | main.rs:538:9:538:13 | mut x | | -| main.rs:538:17:538:17 | 1 | main.rs:538:13:538:13 | x | | -| main.rs:539:5:540:15 | let ... = ... | main.rs:540:14:540:14 | x | | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | | -| main.rs:539:9:539:9 | y | main.rs:541:5:541:11 | ExprStmt | match | -| main.rs:540:9:540:14 | &mut x | main.rs:539:9:539:9 | y | | -| main.rs:540:14:540:14 | x | main.rs:540:9:540:14 | &mut x | | -| main.rs:541:5:541:6 | * ... | main.rs:541:10:541:10 | 2 | | -| main.rs:541:5:541:10 | ... = ... | main.rs:542:5:542:17 | ExprStmt | | -| main.rs:541:5:541:11 | ExprStmt | main.rs:541:6:541:6 | y | | -| main.rs:541:6:541:6 | y | main.rs:541:5:541:6 | * ... | | -| main.rs:541:10:541:10 | 2 | main.rs:541:5:541:10 | ... = ... | | -| main.rs:542:5:542:13 | print_i64 | main.rs:542:15:542:15 | x | | -| main.rs:542:5:542:16 | print_i64(...) | main.rs:537:12:543:1 | { ... } | | -| main.rs:542:5:542:17 | ExprStmt | main.rs:542:5:542:13 | print_i64 | | -| main.rs:542:15:542:15 | x | main.rs:542:5:542:16 | print_i64(...) | | -| main.rs:545:1:554:1 | enter fn capture_immut | main.rs:546:5:546:16 | let ... = 100 | | -| main.rs:545:1:554:1 | exit fn capture_immut (normal) | main.rs:545:1:554:1 | exit fn capture_immut | | -| main.rs:545:20:554:1 | { ... } | main.rs:545:1:554:1 | exit fn capture_immut (normal) | | -| main.rs:546:5:546:16 | let ... = 100 | main.rs:546:13:546:15 | 100 | | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | | -| main.rs:546:9:546:9 | x | main.rs:549:5:551:6 | let ... = ... | match | -| main.rs:546:13:546:15 | 100 | main.rs:546:9:546:9 | x | | -| main.rs:549:5:551:6 | let ... = ... | main.rs:549:15:551:5 | \|...\| ... | | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | | -| main.rs:549:9:549:11 | cap | main.rs:552:5:552:10 | ExprStmt | match | -| main.rs:549:15:551:5 | \|...\| ... | main.rs:549:9:549:11 | cap | | -| main.rs:549:15:551:5 | enter \|...\| ... | main.rs:550:9:550:21 | ExprStmt | | -| main.rs:549:15:551:5 | exit \|...\| ... (normal) | main.rs:549:15:551:5 | exit \|...\| ... | | -| main.rs:549:18:551:5 | { ... } | main.rs:549:15:551:5 | exit \|...\| ... (normal) | | -| main.rs:550:9:550:17 | print_i64 | main.rs:550:19:550:19 | x | | -| main.rs:550:9:550:20 | print_i64(...) | main.rs:549:18:551:5 | { ... } | | -| main.rs:550:9:550:21 | ExprStmt | main.rs:550:9:550:17 | print_i64 | | -| main.rs:550:19:550:19 | x | main.rs:550:9:550:20 | print_i64(...) | | -| main.rs:552:5:552:7 | cap | main.rs:552:5:552:9 | cap(...) | | -| main.rs:552:5:552:9 | cap(...) | main.rs:553:5:553:17 | ExprStmt | | -| main.rs:552:5:552:10 | ExprStmt | main.rs:552:5:552:7 | cap | | +| main.rs:397:15:397:16 | a9 | main.rs:397:5:397:17 | print_i64(...) | | +| main.rs:400:1:435:1 | enter fn destruct_assignment | main.rs:401:5:405:18 | let ... = ... | | +| main.rs:400:1:435:1 | exit fn destruct_assignment (normal) | main.rs:400:1:435:1 | exit fn destruct_assignment | | +| main.rs:400:26:435:1 | { ... } | main.rs:400:1:435:1 | exit fn destruct_assignment (normal) | | +| main.rs:401:5:405:18 | let ... = ... | main.rs:405:10:405:10 | 1 | | +| main.rs:401:9:405:5 | TuplePat | main.rs:402:13:402:15 | a10 | match | +| main.rs:402:9:402:15 | mut a10 | main.rs:403:13:403:14 | b4 | match | +| main.rs:402:13:402:15 | a10 | main.rs:402:9:402:15 | mut a10 | | +| main.rs:403:9:403:14 | mut b4 | main.rs:404:13:404:14 | c2 | match | +| main.rs:403:13:403:14 | b4 | main.rs:403:9:403:14 | mut b4 | | +| main.rs:404:9:404:14 | mut c2 | main.rs:406:5:406:19 | ExprStmt | match | +| main.rs:404:13:404:14 | c2 | main.rs:404:9:404:14 | mut c2 | | +| main.rs:405:9:405:17 | TupleExpr | main.rs:401:9:405:5 | TuplePat | | +| main.rs:405:10:405:10 | 1 | main.rs:405:13:405:13 | 2 | | +| main.rs:405:13:405:13 | 2 | main.rs:405:16:405:16 | 3 | | +| main.rs:405:16:405:16 | 3 | main.rs:405:9:405:17 | TupleExpr | | +| main.rs:406:5:406:13 | print_i64 | main.rs:406:15:406:17 | a10 | | +| main.rs:406:5:406:18 | print_i64(...) | main.rs:407:5:407:18 | ExprStmt | | +| main.rs:406:5:406:19 | ExprStmt | main.rs:406:5:406:13 | print_i64 | | +| main.rs:406:15:406:17 | a10 | main.rs:406:5:406:18 | print_i64(...) | | +| main.rs:407:5:407:13 | print_i64 | main.rs:407:15:407:16 | b4 | | +| main.rs:407:5:407:17 | print_i64(...) | main.rs:408:5:408:18 | ExprStmt | | +| main.rs:407:5:407:18 | ExprStmt | main.rs:407:5:407:13 | print_i64 | | +| main.rs:407:15:407:16 | b4 | main.rs:407:5:407:17 | print_i64(...) | | +| main.rs:408:5:408:13 | print_i64 | main.rs:408:15:408:16 | c2 | | +| main.rs:408:5:408:17 | print_i64(...) | main.rs:410:5:418:6 | ExprStmt | | +| main.rs:408:5:408:18 | ExprStmt | main.rs:408:5:408:13 | print_i64 | | +| main.rs:408:15:408:16 | c2 | main.rs:408:5:408:17 | print_i64(...) | | +| main.rs:410:5:414:5 | TupleExpr | main.rs:415:9:415:11 | a10 | | +| main.rs:410:5:418:5 | ... = ... | main.rs:419:5:419:19 | ExprStmt | | +| main.rs:410:5:418:6 | ExprStmt | main.rs:411:9:411:10 | c2 | | +| main.rs:411:9:411:10 | c2 | main.rs:412:9:412:10 | b4 | | +| main.rs:412:9:412:10 | b4 | main.rs:413:9:413:11 | a10 | | +| main.rs:413:9:413:11 | a10 | main.rs:410:5:414:5 | TupleExpr | | +| main.rs:414:9:418:5 | TupleExpr | main.rs:410:5:418:5 | ... = ... | | +| main.rs:415:9:415:11 | a10 | main.rs:416:9:416:10 | b4 | | +| main.rs:416:9:416:10 | b4 | main.rs:417:9:417:10 | c2 | | +| main.rs:417:9:417:10 | c2 | main.rs:414:9:418:5 | TupleExpr | | +| main.rs:419:5:419:13 | print_i64 | main.rs:419:15:419:17 | a10 | | +| main.rs:419:5:419:18 | print_i64(...) | main.rs:420:5:420:18 | ExprStmt | | +| main.rs:419:5:419:19 | ExprStmt | main.rs:419:5:419:13 | print_i64 | | +| main.rs:419:15:419:17 | a10 | main.rs:419:5:419:18 | print_i64(...) | | +| main.rs:420:5:420:13 | print_i64 | main.rs:420:15:420:16 | b4 | | +| main.rs:420:5:420:17 | print_i64(...) | main.rs:421:5:421:18 | ExprStmt | | +| main.rs:420:5:420:18 | ExprStmt | main.rs:420:5:420:13 | print_i64 | | +| main.rs:420:15:420:16 | b4 | main.rs:420:5:420:17 | print_i64(...) | | +| main.rs:421:5:421:13 | print_i64 | main.rs:421:15:421:16 | c2 | | +| main.rs:421:5:421:17 | print_i64(...) | main.rs:423:5:431:5 | ExprStmt | | +| main.rs:421:5:421:18 | ExprStmt | main.rs:421:5:421:13 | print_i64 | | +| main.rs:421:15:421:16 | c2 | main.rs:421:5:421:17 | print_i64(...) | | +| main.rs:423:5:431:5 | ExprStmt | main.rs:423:12:423:12 | 4 | | +| main.rs:423:5:431:5 | match ... { ... } | main.rs:433:5:433:19 | ExprStmt | | +| main.rs:423:11:423:16 | TupleExpr | main.rs:424:9:427:9 | TuplePat | | +| main.rs:423:12:423:12 | 4 | main.rs:423:15:423:15 | 5 | | +| main.rs:423:15:423:15 | 5 | main.rs:423:11:423:16 | TupleExpr | | +| main.rs:424:9:427:9 | TuplePat | main.rs:425:13:425:15 | a10 | match | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | | +| main.rs:425:13:425:15 | a10 | main.rs:426:13:426:14 | b4 | match | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | | +| main.rs:426:13:426:14 | b4 | main.rs:428:13:428:27 | ExprStmt | match | +| main.rs:427:14:430:9 | { ... } | main.rs:423:5:431:5 | match ... { ... } | | +| main.rs:428:13:428:21 | print_i64 | main.rs:428:23:428:25 | a10 | | +| main.rs:428:13:428:26 | print_i64(...) | main.rs:429:13:429:26 | ExprStmt | | +| main.rs:428:13:428:27 | ExprStmt | main.rs:428:13:428:21 | print_i64 | | +| main.rs:428:23:428:25 | a10 | main.rs:428:13:428:26 | print_i64(...) | | +| main.rs:429:13:429:21 | print_i64 | main.rs:429:23:429:24 | b4 | | +| main.rs:429:13:429:25 | print_i64(...) | main.rs:427:14:430:9 | { ... } | | +| main.rs:429:13:429:26 | ExprStmt | main.rs:429:13:429:21 | print_i64 | | +| main.rs:429:23:429:24 | b4 | main.rs:429:13:429:25 | print_i64(...) | | +| main.rs:433:5:433:13 | print_i64 | main.rs:433:15:433:17 | a10 | | +| main.rs:433:5:433:18 | print_i64(...) | main.rs:434:5:434:18 | ExprStmt | | +| main.rs:433:5:433:19 | ExprStmt | main.rs:433:5:433:13 | print_i64 | | +| main.rs:433:15:433:17 | a10 | main.rs:433:5:433:18 | print_i64(...) | | +| main.rs:434:5:434:13 | print_i64 | main.rs:434:15:434:16 | b4 | | +| main.rs:434:5:434:17 | print_i64(...) | main.rs:400:26:435:1 | { ... } | | +| main.rs:434:5:434:18 | ExprStmt | main.rs:434:5:434:13 | print_i64 | | +| main.rs:434:15:434:16 | b4 | main.rs:434:5:434:17 | print_i64(...) | | +| main.rs:437:1:452:1 | enter fn closure_variable | main.rs:438:5:440:10 | let ... = ... | | +| main.rs:437:1:452:1 | exit fn closure_variable (normal) | main.rs:437:1:452:1 | exit fn closure_variable | | +| main.rs:437:23:452:1 | { ... } | main.rs:437:1:452:1 | exit fn closure_variable (normal) | | +| main.rs:438:5:440:10 | let ... = ... | main.rs:439:9:440:9 | \|...\| x | | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | | +| main.rs:438:9:438:23 | example_closure | main.rs:441:5:442:27 | let ... = ... | match | +| main.rs:439:9:440:9 | \|...\| x | main.rs:438:9:438:23 | example_closure | | +| main.rs:439:9:440:9 | enter \|...\| x | main.rs:439:10:439:10 | x | | +| main.rs:439:9:440:9 | exit \|...\| x (normal) | main.rs:439:9:440:9 | exit \|...\| x | | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:15 | ...: i64 | match | +| main.rs:439:10:439:15 | ...: i64 | main.rs:440:9:440:9 | x | | +| main.rs:440:9:440:9 | x | main.rs:439:9:440:9 | exit \|...\| x (normal) | | +| main.rs:441:5:442:27 | let ... = ... | main.rs:442:9:442:23 | example_closure | | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | | +| main.rs:441:9:441:10 | n1 | main.rs:443:5:443:18 | ExprStmt | match | +| main.rs:442:9:442:23 | example_closure | main.rs:442:25:442:25 | 5 | | +| main.rs:442:9:442:26 | example_closure(...) | main.rs:441:9:441:10 | n1 | | +| main.rs:442:25:442:25 | 5 | main.rs:442:9:442:26 | example_closure(...) | | +| main.rs:443:5:443:13 | print_i64 | main.rs:443:15:443:16 | n1 | | +| main.rs:443:5:443:17 | print_i64(...) | main.rs:445:5:445:25 | ExprStmt | | +| main.rs:443:5:443:18 | ExprStmt | main.rs:443:5:443:13 | print_i64 | | +| main.rs:443:15:443:16 | n1 | main.rs:443:5:443:17 | print_i64(...) | | +| main.rs:445:5:445:22 | immutable_variable | main.rs:445:5:445:24 | immutable_variable(...) | | +| main.rs:445:5:445:24 | immutable_variable(...) | main.rs:446:5:448:10 | let ... = ... | | +| main.rs:445:5:445:25 | ExprStmt | main.rs:445:5:445:22 | immutable_variable | | +| main.rs:446:5:448:10 | let ... = ... | main.rs:447:5:448:9 | \|...\| x | | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | | +| main.rs:446:9:446:26 | immutable_variable | main.rs:449:5:450:30 | let ... = ... | match | +| main.rs:447:5:448:9 | \|...\| x | main.rs:446:9:446:26 | immutable_variable | | +| main.rs:447:5:448:9 | enter \|...\| x | main.rs:447:6:447:6 | x | | +| main.rs:447:5:448:9 | exit \|...\| x (normal) | main.rs:447:5:448:9 | exit \|...\| x | | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:11 | ...: i64 | match | +| main.rs:447:6:447:11 | ...: i64 | main.rs:448:9:448:9 | x | | +| main.rs:448:9:448:9 | x | main.rs:447:5:448:9 | exit \|...\| x (normal) | | +| main.rs:449:5:450:30 | let ... = ... | main.rs:450:9:450:26 | immutable_variable | | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | | +| main.rs:449:9:449:10 | n2 | main.rs:451:5:451:18 | ExprStmt | match | +| main.rs:450:9:450:26 | immutable_variable | main.rs:450:28:450:28 | 6 | | +| main.rs:450:9:450:29 | immutable_variable(...) | main.rs:449:9:449:10 | n2 | | +| main.rs:450:28:450:28 | 6 | main.rs:450:9:450:29 | immutable_variable(...) | | +| main.rs:451:5:451:13 | print_i64 | main.rs:451:15:451:16 | n2 | | +| main.rs:451:5:451:17 | print_i64(...) | main.rs:437:23:452:1 | { ... } | | +| main.rs:451:5:451:18 | ExprStmt | main.rs:451:5:451:13 | print_i64 | | +| main.rs:451:15:451:16 | n2 | main.rs:451:5:451:17 | print_i64(...) | | +| main.rs:454:1:484:1 | enter fn nested_function | main.rs:456:5:458:10 | let ... = ... | | +| main.rs:454:1:484:1 | exit fn nested_function (normal) | main.rs:454:1:484:1 | exit fn nested_function | | +| main.rs:454:22:484:1 | { ... } | main.rs:454:1:484:1 | exit fn nested_function (normal) | | +| main.rs:456:5:458:10 | let ... = ... | main.rs:457:9:458:9 | \|...\| x | | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | | +| main.rs:456:9:456:9 | f | main.rs:459:5:459:20 | ExprStmt | match | +| main.rs:457:9:458:9 | \|...\| x | main.rs:456:9:456:9 | f | | +| main.rs:457:9:458:9 | enter \|...\| x | main.rs:457:10:457:10 | x | | +| main.rs:457:9:458:9 | exit \|...\| x (normal) | main.rs:457:9:458:9 | exit \|...\| x | | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:15 | ...: i64 | match | +| main.rs:457:10:457:15 | ...: i64 | main.rs:458:9:458:9 | x | | +| main.rs:458:9:458:9 | x | main.rs:457:9:458:9 | exit \|...\| x (normal) | | +| main.rs:459:5:459:13 | print_i64 | main.rs:459:15:459:15 | f | | +| main.rs:459:5:459:19 | print_i64(...) | main.rs:461:5:464:5 | fn f | | +| main.rs:459:5:459:20 | ExprStmt | main.rs:459:5:459:13 | print_i64 | | +| main.rs:459:15:459:15 | f | main.rs:459:17:459:17 | 1 | | +| main.rs:459:15:459:18 | f(...) | main.rs:459:5:459:19 | print_i64(...) | | +| main.rs:459:17:459:17 | 1 | main.rs:459:15:459:18 | f(...) | | +| main.rs:461:5:464:5 | enter fn f | main.rs:461:10:461:10 | x | | +| main.rs:461:5:464:5 | exit fn f (normal) | main.rs:461:5:464:5 | exit fn f | | +| main.rs:461:5:464:5 | fn f | main.rs:466:5:466:20 | ExprStmt | | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:15 | ...: i64 | match | +| main.rs:461:10:461:15 | ...: i64 | main.rs:463:9:463:9 | x | | +| main.rs:462:5:464:5 | { ... } | main.rs:461:5:464:5 | exit fn f (normal) | | +| main.rs:463:9:463:9 | x | main.rs:463:13:463:13 | 1 | | +| main.rs:463:9:463:13 | ... + ... | main.rs:462:5:464:5 | { ... } | | +| main.rs:463:13:463:13 | 1 | main.rs:463:9:463:13 | ... + ... | | +| main.rs:466:5:466:13 | print_i64 | main.rs:466:15:466:15 | f | | +| main.rs:466:5:466:19 | print_i64(...) | main.rs:469:9:469:24 | ExprStmt | | +| main.rs:466:5:466:20 | ExprStmt | main.rs:466:5:466:13 | print_i64 | | +| main.rs:466:15:466:15 | f | main.rs:466:17:466:17 | 2 | | +| main.rs:466:15:466:18 | f(...) | main.rs:466:5:466:19 | print_i64(...) | | +| main.rs:466:17:466:17 | 2 | main.rs:466:15:466:18 | f(...) | | +| main.rs:468:5:483:5 | { ... } | main.rs:454:22:484:1 | { ... } | | +| main.rs:469:9:469:17 | print_i64 | main.rs:469:19:469:19 | f | | +| main.rs:469:9:469:23 | print_i64(...) | main.rs:470:9:473:9 | fn f | | +| main.rs:469:9:469:24 | ExprStmt | main.rs:469:9:469:17 | print_i64 | | +| main.rs:469:19:469:19 | f | main.rs:469:21:469:21 | 3 | | +| main.rs:469:19:469:22 | f(...) | main.rs:469:9:469:23 | print_i64(...) | | +| main.rs:469:21:469:21 | 3 | main.rs:469:19:469:22 | f(...) | | +| main.rs:470:9:473:9 | enter fn f | main.rs:470:14:470:14 | x | | +| main.rs:470:9:473:9 | exit fn f (normal) | main.rs:470:9:473:9 | exit fn f | | +| main.rs:470:9:473:9 | fn f | main.rs:475:9:477:9 | ExprStmt | | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:19 | ...: i64 | match | +| main.rs:470:14:470:19 | ...: i64 | main.rs:472:13:472:13 | 2 | | +| main.rs:471:9:473:9 | { ... } | main.rs:470:9:473:9 | exit fn f (normal) | | +| main.rs:472:13:472:13 | 2 | main.rs:472:17:472:17 | x | | +| main.rs:472:13:472:17 | ... * ... | main.rs:471:9:473:9 | { ... } | | +| main.rs:472:17:472:17 | x | main.rs:472:13:472:17 | ... * ... | | +| main.rs:475:9:477:9 | ExprStmt | main.rs:476:13:476:28 | ExprStmt | | +| main.rs:475:9:477:9 | { ... } | main.rs:479:9:481:14 | let ... = ... | | +| main.rs:476:13:476:21 | print_i64 | main.rs:476:23:476:23 | f | | +| main.rs:476:13:476:27 | print_i64(...) | main.rs:475:9:477:9 | { ... } | | +| main.rs:476:13:476:28 | ExprStmt | main.rs:476:13:476:21 | print_i64 | | +| main.rs:476:23:476:23 | f | main.rs:476:25:476:25 | 4 | | +| main.rs:476:23:476:26 | f(...) | main.rs:476:13:476:27 | print_i64(...) | | +| main.rs:476:25:476:25 | 4 | main.rs:476:23:476:26 | f(...) | | +| main.rs:479:9:481:14 | let ... = ... | main.rs:480:13:481:13 | \|...\| x | | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | | +| main.rs:479:13:479:13 | f | main.rs:482:9:482:24 | ExprStmt | match | +| main.rs:480:13:481:13 | \|...\| x | main.rs:479:13:479:13 | f | | +| main.rs:480:13:481:13 | enter \|...\| x | main.rs:480:14:480:14 | x | | +| main.rs:480:13:481:13 | exit \|...\| x (normal) | main.rs:480:13:481:13 | exit \|...\| x | | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:19 | ...: i64 | match | +| main.rs:480:14:480:19 | ...: i64 | main.rs:481:13:481:13 | x | | +| main.rs:481:13:481:13 | x | main.rs:480:13:481:13 | exit \|...\| x (normal) | | +| main.rs:482:9:482:17 | print_i64 | main.rs:482:19:482:19 | f | | +| main.rs:482:9:482:23 | print_i64(...) | main.rs:468:5:483:5 | { ... } | | +| main.rs:482:9:482:24 | ExprStmt | main.rs:482:9:482:17 | print_i64 | | +| main.rs:482:19:482:19 | f | main.rs:482:21:482:21 | 5 | | +| main.rs:482:19:482:22 | f(...) | main.rs:482:9:482:23 | print_i64(...) | | +| main.rs:482:21:482:21 | 5 | main.rs:482:19:482:22 | f(...) | | +| main.rs:486:1:493:1 | enter fn for_variable | main.rs:487:5:487:42 | let ... = ... | | +| main.rs:486:1:493:1 | exit fn for_variable (normal) | main.rs:486:1:493:1 | exit fn for_variable | | +| main.rs:486:19:493:1 | { ... } | main.rs:486:1:493:1 | exit fn for_variable (normal) | | +| main.rs:487:5:487:42 | let ... = ... | main.rs:487:15:487:22 | "apples" | | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | | +| main.rs:487:9:487:9 | v | main.rs:490:12:490:12 | v | match | +| main.rs:487:13:487:41 | &... | main.rs:487:9:487:9 | v | | +| main.rs:487:14:487:41 | [...] | main.rs:487:13:487:41 | &... | | +| main.rs:487:15:487:22 | "apples" | main.rs:487:25:487:30 | "cake" | | +| main.rs:487:25:487:30 | "cake" | main.rs:487:33:487:40 | "coffee" | | +| main.rs:487:33:487:40 | "coffee" | main.rs:487:14:487:41 | [...] | | +| main.rs:489:5:492:5 | for ... in ... { ... } | main.rs:486:19:493:1 | { ... } | | +| main.rs:489:9:489:12 | text | main.rs:489:5:492:5 | for ... in ... { ... } | no-match | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | | +| main.rs:489:9:489:12 | text | main.rs:491:9:491:24 | ExprStmt | match | +| main.rs:490:12:490:12 | v | main.rs:489:9:489:12 | text | | +| main.rs:490:14:492:5 | { ... } | main.rs:489:9:489:12 | text | | +| main.rs:491:9:491:17 | print_str | main.rs:491:19:491:22 | text | | +| main.rs:491:9:491:23 | print_str(...) | main.rs:490:14:492:5 | { ... } | | +| main.rs:491:9:491:24 | ExprStmt | main.rs:491:9:491:17 | print_str | | +| main.rs:491:19:491:22 | text | main.rs:491:9:491:23 | print_str(...) | | +| main.rs:495:1:501:1 | enter fn add_assign | main.rs:496:5:496:18 | let ... = 0 | | +| main.rs:495:1:501:1 | exit fn add_assign (normal) | main.rs:495:1:501:1 | exit fn add_assign | | +| main.rs:495:17:501:1 | { ... } | main.rs:495:1:501:1 | exit fn add_assign (normal) | | +| main.rs:496:5:496:18 | let ... = 0 | main.rs:496:17:496:17 | 0 | | +| main.rs:496:9:496:13 | mut a | main.rs:497:5:497:11 | ExprStmt | match | +| main.rs:496:13:496:13 | a | main.rs:496:9:496:13 | mut a | | +| main.rs:496:17:496:17 | 0 | main.rs:496:13:496:13 | a | | +| main.rs:497:5:497:5 | a | main.rs:497:10:497:10 | 1 | | +| main.rs:497:5:497:10 | ... += ... | main.rs:498:5:498:17 | ExprStmt | | +| main.rs:497:5:497:11 | ExprStmt | main.rs:497:5:497:5 | a | | +| main.rs:497:10:497:10 | 1 | main.rs:497:5:497:10 | ... += ... | | +| main.rs:498:5:498:13 | print_i64 | main.rs:498:15:498:15 | a | | +| main.rs:498:5:498:16 | print_i64(...) | main.rs:499:5:499:28 | ExprStmt | | +| main.rs:498:5:498:17 | ExprStmt | main.rs:498:5:498:13 | print_i64 | | +| main.rs:498:15:498:15 | a | main.rs:498:5:498:16 | print_i64(...) | | +| main.rs:499:5:499:27 | ... .add_assign(...) | main.rs:500:5:500:17 | ExprStmt | | +| main.rs:499:5:499:28 | ExprStmt | main.rs:499:11:499:11 | a | | +| main.rs:499:6:499:11 | &mut a | main.rs:499:25:499:26 | 10 | | +| main.rs:499:11:499:11 | a | main.rs:499:6:499:11 | &mut a | | +| main.rs:499:25:499:26 | 10 | main.rs:499:5:499:27 | ... .add_assign(...) | | +| main.rs:500:5:500:13 | print_i64 | main.rs:500:15:500:15 | a | | +| main.rs:500:5:500:16 | print_i64(...) | main.rs:495:17:501:1 | { ... } | | +| main.rs:500:5:500:17 | ExprStmt | main.rs:500:5:500:13 | print_i64 | | +| main.rs:500:15:500:15 | a | main.rs:500:5:500:16 | print_i64(...) | | +| main.rs:503:1:509:1 | enter fn mutate | main.rs:504:5:504:18 | let ... = 1 | | +| main.rs:503:1:509:1 | exit fn mutate (normal) | main.rs:503:1:509:1 | exit fn mutate | | +| main.rs:503:13:509:1 | { ... } | main.rs:503:1:509:1 | exit fn mutate (normal) | | +| main.rs:504:5:504:18 | let ... = 1 | main.rs:504:17:504:17 | 1 | | +| main.rs:504:9:504:13 | mut i | main.rs:505:5:506:15 | let ... = ... | match | +| main.rs:504:13:504:13 | i | main.rs:504:9:504:13 | mut i | | +| main.rs:504:17:504:17 | 1 | main.rs:504:13:504:13 | i | | +| main.rs:505:5:506:15 | let ... = ... | main.rs:506:14:506:14 | i | | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | | +| main.rs:505:9:505:13 | ref_i | main.rs:507:5:507:15 | ExprStmt | match | +| main.rs:506:9:506:14 | &mut i | main.rs:505:9:505:13 | ref_i | | +| main.rs:506:14:506:14 | i | main.rs:506:9:506:14 | &mut i | | +| main.rs:507:5:507:10 | * ... | main.rs:507:14:507:14 | 2 | | +| main.rs:507:5:507:14 | ... = ... | main.rs:508:5:508:17 | ExprStmt | | +| main.rs:507:5:507:15 | ExprStmt | main.rs:507:6:507:10 | ref_i | | +| main.rs:507:6:507:10 | ref_i | main.rs:507:5:507:10 | * ... | | +| main.rs:507:14:507:14 | 2 | main.rs:507:5:507:14 | ... = ... | | +| main.rs:508:5:508:13 | print_i64 | main.rs:508:15:508:15 | i | | +| main.rs:508:5:508:16 | print_i64(...) | main.rs:503:13:509:1 | { ... } | | +| main.rs:508:5:508:17 | ExprStmt | main.rs:508:5:508:13 | print_i64 | | +| main.rs:508:15:508:15 | i | main.rs:508:5:508:16 | print_i64(...) | | +| main.rs:511:1:516:1 | enter fn mutate_param | main.rs:511:17:511:17 | x | | +| main.rs:511:1:516:1 | exit fn mutate_param (normal) | main.rs:511:1:516:1 | exit fn mutate_param | | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:27 | ...: ... | match | +| main.rs:511:17:511:27 | ...: ... | main.rs:512:5:514:11 | ExprStmt | | +| main.rs:512:5:512:6 | * ... | main.rs:513:10:513:10 | x | | +| main.rs:512:5:514:10 | ... = ... | main.rs:515:5:515:13 | ExprStmt | | +| main.rs:512:5:514:11 | ExprStmt | main.rs:512:6:512:6 | x | | +| main.rs:512:6:512:6 | x | main.rs:512:5:512:6 | * ... | | +| main.rs:513:9:513:10 | * ... | main.rs:514:10:514:10 | x | | +| main.rs:513:9:514:10 | ... + ... | main.rs:512:5:514:10 | ... = ... | | +| main.rs:513:10:513:10 | x | main.rs:513:9:513:10 | * ... | | +| main.rs:514:9:514:10 | * ... | main.rs:513:9:514:10 | ... + ... | | +| main.rs:514:10:514:10 | x | main.rs:514:9:514:10 | * ... | | +| main.rs:515:5:515:12 | return x | main.rs:511:1:516:1 | exit fn mutate_param (normal) | return | +| main.rs:515:5:515:13 | ExprStmt | main.rs:515:12:515:12 | x | | +| main.rs:515:12:515:12 | x | main.rs:515:5:515:12 | return x | | +| main.rs:518:1:524:1 | enter fn mutate_param2 | main.rs:518:22:518:22 | x | | +| main.rs:518:1:524:1 | exit fn mutate_param2 (normal) | main.rs:518:1:524:1 | exit fn mutate_param2 | | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:35 | ...: ... | match | +| main.rs:518:22:518:35 | ...: ... | main.rs:518:38:518:38 | y | | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:56 | ...: ... | match | +| main.rs:518:38:518:56 | ...: ... | main.rs:519:5:521:11 | ExprStmt | | +| main.rs:518:59:524:1 | { ... } | main.rs:518:1:524:1 | exit fn mutate_param2 (normal) | | +| main.rs:519:5:519:6 | * ... | main.rs:520:10:520:10 | x | | +| main.rs:519:5:521:10 | ... = ... | main.rs:522:5:523:10 | ExprStmt | | +| main.rs:519:5:521:11 | ExprStmt | main.rs:519:6:519:6 | x | | +| main.rs:519:6:519:6 | x | main.rs:519:5:519:6 | * ... | | +| main.rs:520:9:520:10 | * ... | main.rs:521:10:521:10 | x | | +| main.rs:520:9:521:10 | ... + ... | main.rs:519:5:521:10 | ... = ... | | +| main.rs:520:10:520:10 | x | main.rs:520:9:520:10 | * ... | | +| main.rs:521:9:521:10 | * ... | main.rs:520:9:521:10 | ... + ... | | +| main.rs:521:10:521:10 | x | main.rs:521:9:521:10 | * ... | | +| main.rs:522:5:522:6 | * ... | main.rs:523:9:523:9 | x | | +| main.rs:522:5:523:9 | ... = ... | main.rs:518:59:524:1 | { ... } | | +| main.rs:522:5:523:10 | ExprStmt | main.rs:522:6:522:6 | y | | +| main.rs:522:6:522:6 | y | main.rs:522:5:522:6 | * ... | | +| main.rs:523:9:523:9 | x | main.rs:522:5:523:9 | ... = ... | | +| main.rs:526:1:546:1 | enter fn mutate_arg | main.rs:527:5:527:18 | let ... = 2 | | +| main.rs:526:1:546:1 | exit fn mutate_arg (normal) | main.rs:526:1:546:1 | exit fn mutate_arg | | +| main.rs:526:17:546:1 | { ... } | main.rs:526:1:546:1 | exit fn mutate_arg (normal) | | +| main.rs:527:5:527:18 | let ... = 2 | main.rs:527:17:527:17 | 2 | | +| main.rs:527:9:527:13 | mut x | main.rs:528:5:529:29 | let ... = ... | match | +| main.rs:527:13:527:13 | x | main.rs:527:9:527:13 | mut x | | +| main.rs:527:17:527:17 | 2 | main.rs:527:13:527:13 | x | | +| main.rs:528:5:529:29 | let ... = ... | main.rs:529:9:529:20 | mutate_param | | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | | +| main.rs:528:9:528:9 | y | main.rs:530:5:530:12 | ExprStmt | match | +| main.rs:529:9:529:20 | mutate_param | main.rs:529:27:529:27 | x | | +| main.rs:529:9:529:28 | mutate_param(...) | main.rs:528:9:528:9 | y | | +| main.rs:529:22:529:27 | &mut x | main.rs:529:9:529:28 | mutate_param(...) | | +| main.rs:529:27:529:27 | x | main.rs:529:22:529:27 | &mut x | | +| main.rs:530:5:530:6 | * ... | main.rs:530:10:530:11 | 10 | | +| main.rs:530:5:530:11 | ... = ... | main.rs:533:5:533:17 | ExprStmt | | +| main.rs:530:5:530:12 | ExprStmt | main.rs:530:6:530:6 | y | | +| main.rs:530:6:530:6 | y | main.rs:530:5:530:6 | * ... | | +| main.rs:530:10:530:11 | 10 | main.rs:530:5:530:11 | ... = ... | | +| main.rs:533:5:533:13 | print_i64 | main.rs:533:15:533:15 | x | | +| main.rs:533:5:533:16 | print_i64(...) | main.rs:535:5:535:18 | let ... = 4 | | +| main.rs:533:5:533:17 | ExprStmt | main.rs:533:5:533:13 | print_i64 | | +| main.rs:533:15:533:15 | x | main.rs:533:5:533:16 | print_i64(...) | | +| main.rs:535:5:535:18 | let ... = 4 | main.rs:535:17:535:17 | 4 | | +| main.rs:535:9:535:13 | mut z | main.rs:536:5:537:20 | let ... = ... | match | +| main.rs:535:13:535:13 | z | main.rs:535:9:535:13 | mut z | | +| main.rs:535:17:535:17 | 4 | main.rs:535:13:535:13 | z | | +| main.rs:536:5:537:20 | let ... = ... | main.rs:537:19:537:19 | x | | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | | +| main.rs:536:9:536:9 | w | main.rs:538:5:541:6 | ExprStmt | match | +| main.rs:537:9:537:19 | &mut ... | main.rs:536:9:536:9 | w | | +| main.rs:537:14:537:19 | &mut x | main.rs:537:9:537:19 | &mut ... | | +| main.rs:537:19:537:19 | x | main.rs:537:14:537:19 | &mut x | | +| main.rs:538:5:538:17 | mutate_param2 | main.rs:539:14:539:14 | z | | +| main.rs:538:5:541:5 | mutate_param2(...) | main.rs:542:5:542:13 | ExprStmt | | +| main.rs:538:5:541:6 | ExprStmt | main.rs:538:5:538:17 | mutate_param2 | | +| main.rs:539:9:539:14 | &mut z | main.rs:540:9:540:9 | w | | +| main.rs:539:14:539:14 | z | main.rs:539:9:539:14 | &mut z | | +| main.rs:540:9:540:9 | w | main.rs:538:5:541:5 | mutate_param2(...) | | +| main.rs:542:5:542:7 | * ... | main.rs:542:11:542:12 | 11 | | +| main.rs:542:5:542:12 | ... = ... | main.rs:545:5:545:17 | ExprStmt | | +| main.rs:542:5:542:13 | ExprStmt | main.rs:542:7:542:7 | w | | +| main.rs:542:6:542:7 | * ... | main.rs:542:5:542:7 | * ... | | +| main.rs:542:7:542:7 | w | main.rs:542:6:542:7 | * ... | | +| main.rs:542:11:542:12 | 11 | main.rs:542:5:542:12 | ... = ... | | +| main.rs:545:5:545:13 | print_i64 | main.rs:545:15:545:15 | z | | +| main.rs:545:5:545:16 | print_i64(...) | main.rs:526:17:546:1 | { ... } | | +| main.rs:545:5:545:17 | ExprStmt | main.rs:545:5:545:13 | print_i64 | | +| main.rs:545:15:545:15 | z | main.rs:545:5:545:16 | print_i64(...) | | +| main.rs:548:1:554:1 | enter fn alias | main.rs:549:5:549:18 | let ... = 1 | | +| main.rs:548:1:554:1 | exit fn alias (normal) | main.rs:548:1:554:1 | exit fn alias | | +| main.rs:548:12:554:1 | { ... } | main.rs:548:1:554:1 | exit fn alias (normal) | | +| main.rs:549:5:549:18 | let ... = 1 | main.rs:549:17:549:17 | 1 | | +| main.rs:549:9:549:13 | mut x | main.rs:550:5:551:15 | let ... = ... | match | +| main.rs:549:13:549:13 | x | main.rs:549:9:549:13 | mut x | | +| main.rs:549:17:549:17 | 1 | main.rs:549:13:549:13 | x | | +| main.rs:550:5:551:15 | let ... = ... | main.rs:551:14:551:14 | x | | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | | +| main.rs:550:9:550:9 | y | main.rs:552:5:552:11 | ExprStmt | match | +| main.rs:551:9:551:14 | &mut x | main.rs:550:9:550:9 | y | | +| main.rs:551:14:551:14 | x | main.rs:551:9:551:14 | &mut x | | +| main.rs:552:5:552:6 | * ... | main.rs:552:10:552:10 | 2 | | +| main.rs:552:5:552:10 | ... = ... | main.rs:553:5:553:17 | ExprStmt | | +| main.rs:552:5:552:11 | ExprStmt | main.rs:552:6:552:6 | y | | +| main.rs:552:6:552:6 | y | main.rs:552:5:552:6 | * ... | | +| main.rs:552:10:552:10 | 2 | main.rs:552:5:552:10 | ... = ... | | | main.rs:553:5:553:13 | print_i64 | main.rs:553:15:553:15 | x | | -| main.rs:553:5:553:16 | print_i64(...) | main.rs:545:20:554:1 | { ... } | | +| main.rs:553:5:553:16 | print_i64(...) | main.rs:548:12:554:1 | { ... } | | | main.rs:553:5:553:17 | ExprStmt | main.rs:553:5:553:13 | print_i64 | | | main.rs:553:15:553:15 | x | main.rs:553:5:553:16 | print_i64(...) | | -| main.rs:556:1:583:1 | enter fn capture_mut | main.rs:557:5:557:18 | let ... = 1 | | -| main.rs:556:1:583:1 | exit fn capture_mut (normal) | main.rs:556:1:583:1 | exit fn capture_mut | | -| main.rs:556:18:583:1 | { ... } | main.rs:556:1:583:1 | exit fn capture_mut (normal) | | -| main.rs:557:5:557:18 | let ... = 1 | main.rs:557:17:557:17 | 1 | | -| main.rs:557:9:557:13 | mut x | main.rs:560:5:562:6 | let ... = ... | match | -| main.rs:557:13:557:13 | x | main.rs:557:9:557:13 | mut x | | -| main.rs:557:17:557:17 | 1 | main.rs:557:13:557:13 | x | | -| main.rs:560:5:562:6 | let ... = ... | main.rs:560:20:562:5 | \|...\| ... | | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | | -| main.rs:560:9:560:16 | closure1 | main.rs:563:5:563:15 | ExprStmt | match | -| main.rs:560:20:562:5 | \|...\| ... | main.rs:560:9:560:16 | closure1 | | -| main.rs:560:20:562:5 | enter \|...\| ... | main.rs:561:9:561:21 | ExprStmt | | -| main.rs:560:20:562:5 | exit \|...\| ... (normal) | main.rs:560:20:562:5 | exit \|...\| ... | | -| main.rs:560:23:562:5 | { ... } | main.rs:560:20:562:5 | exit \|...\| ... (normal) | | +| main.rs:556:1:565:1 | enter fn capture_immut | main.rs:557:5:557:16 | let ... = 100 | | +| main.rs:556:1:565:1 | exit fn capture_immut (normal) | main.rs:556:1:565:1 | exit fn capture_immut | | +| main.rs:556:20:565:1 | { ... } | main.rs:556:1:565:1 | exit fn capture_immut (normal) | | +| main.rs:557:5:557:16 | let ... = 100 | main.rs:557:13:557:15 | 100 | | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | | +| main.rs:557:9:557:9 | x | main.rs:560:5:562:6 | let ... = ... | match | +| main.rs:557:13:557:15 | 100 | main.rs:557:9:557:9 | x | | +| main.rs:560:5:562:6 | let ... = ... | main.rs:560:15:562:5 | \|...\| ... | | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | | +| main.rs:560:9:560:11 | cap | main.rs:563:5:563:10 | ExprStmt | match | +| main.rs:560:15:562:5 | \|...\| ... | main.rs:560:9:560:11 | cap | | +| main.rs:560:15:562:5 | enter \|...\| ... | main.rs:561:9:561:21 | ExprStmt | | +| main.rs:560:15:562:5 | exit \|...\| ... (normal) | main.rs:560:15:562:5 | exit \|...\| ... | | +| main.rs:560:18:562:5 | { ... } | main.rs:560:15:562:5 | exit \|...\| ... (normal) | | | main.rs:561:9:561:17 | print_i64 | main.rs:561:19:561:19 | x | | -| main.rs:561:9:561:20 | print_i64(...) | main.rs:560:23:562:5 | { ... } | | +| main.rs:561:9:561:20 | print_i64(...) | main.rs:560:18:562:5 | { ... } | | | main.rs:561:9:561:21 | ExprStmt | main.rs:561:9:561:17 | print_i64 | | | main.rs:561:19:561:19 | x | main.rs:561:9:561:20 | print_i64(...) | | -| main.rs:563:5:563:12 | closure1 | main.rs:563:5:563:14 | closure1(...) | | -| main.rs:563:5:563:14 | closure1(...) | main.rs:564:5:564:17 | ExprStmt | | -| main.rs:563:5:563:15 | ExprStmt | main.rs:563:5:563:12 | closure1 | | +| main.rs:563:5:563:7 | cap | main.rs:563:5:563:9 | cap(...) | | +| main.rs:563:5:563:9 | cap(...) | main.rs:564:5:564:17 | ExprStmt | | +| main.rs:563:5:563:10 | ExprStmt | main.rs:563:5:563:7 | cap | | | main.rs:564:5:564:13 | print_i64 | main.rs:564:15:564:15 | x | | -| main.rs:564:5:564:16 | print_i64(...) | main.rs:566:5:566:18 | let ... = 2 | | +| main.rs:564:5:564:16 | print_i64(...) | main.rs:556:20:565:1 | { ... } | | | main.rs:564:5:564:17 | ExprStmt | main.rs:564:5:564:13 | print_i64 | | | main.rs:564:15:564:15 | x | main.rs:564:5:564:16 | print_i64(...) | | -| main.rs:566:5:566:18 | let ... = 2 | main.rs:566:17:566:17 | 2 | | -| main.rs:566:9:566:13 | mut y | main.rs:569:5:571:6 | let ... = ... | match | -| main.rs:566:13:566:13 | y | main.rs:566:9:566:13 | mut y | | -| main.rs:566:17:566:17 | 2 | main.rs:566:13:566:13 | y | | -| main.rs:569:5:571:6 | let ... = ... | main.rs:569:24:571:5 | \|...\| ... | | -| main.rs:569:9:569:20 | mut closure2 | main.rs:572:5:572:15 | ExprStmt | match | -| main.rs:569:13:569:20 | closure2 | main.rs:569:9:569:20 | mut closure2 | | -| main.rs:569:24:571:5 | \|...\| ... | main.rs:569:13:569:20 | closure2 | | -| main.rs:569:24:571:5 | enter \|...\| ... | main.rs:570:9:570:14 | ExprStmt | | -| main.rs:569:24:571:5 | exit \|...\| ... (normal) | main.rs:569:24:571:5 | exit \|...\| ... | | -| main.rs:569:27:571:5 | { ... } | main.rs:569:24:571:5 | exit \|...\| ... (normal) | | -| main.rs:570:9:570:9 | y | main.rs:570:13:570:13 | 3 | | -| main.rs:570:9:570:13 | ... = ... | main.rs:569:27:571:5 | { ... } | | -| main.rs:570:9:570:14 | ExprStmt | main.rs:570:9:570:9 | y | | -| main.rs:570:13:570:13 | 3 | main.rs:570:9:570:13 | ... = ... | | -| main.rs:572:5:572:12 | closure2 | main.rs:572:5:572:14 | closure2(...) | | -| main.rs:572:5:572:14 | closure2(...) | main.rs:573:5:573:17 | ExprStmt | | -| main.rs:572:5:572:15 | ExprStmt | main.rs:572:5:572:12 | closure2 | | -| main.rs:573:5:573:13 | print_i64 | main.rs:573:15:573:15 | y | | -| main.rs:573:5:573:16 | print_i64(...) | main.rs:575:5:575:18 | let ... = 2 | | -| main.rs:573:5:573:17 | ExprStmt | main.rs:573:5:573:13 | print_i64 | | -| main.rs:573:15:573:15 | y | main.rs:573:5:573:16 | print_i64(...) | | -| main.rs:575:5:575:18 | let ... = 2 | main.rs:575:17:575:17 | 2 | | -| main.rs:575:9:575:13 | mut z | main.rs:578:5:580:6 | let ... = ... | match | -| main.rs:575:13:575:13 | z | main.rs:575:9:575:13 | mut z | | -| main.rs:575:17:575:17 | 2 | main.rs:575:13:575:13 | z | | -| main.rs:578:5:580:6 | let ... = ... | main.rs:578:24:580:5 | \|...\| ... | | -| main.rs:578:9:578:20 | mut closure3 | main.rs:581:5:581:15 | ExprStmt | match | -| main.rs:578:13:578:20 | closure3 | main.rs:578:9:578:20 | mut closure3 | | -| main.rs:578:24:580:5 | \|...\| ... | main.rs:578:13:578:20 | closure3 | | -| main.rs:578:24:580:5 | enter \|...\| ... | main.rs:579:9:579:24 | ExprStmt | | -| main.rs:578:24:580:5 | exit \|...\| ... (normal) | main.rs:578:24:580:5 | exit \|...\| ... | | -| main.rs:578:27:580:5 | { ... } | main.rs:578:24:580:5 | exit \|...\| ... (normal) | | -| main.rs:579:9:579:9 | z | main.rs:579:22:579:22 | 1 | | -| main.rs:579:9:579:23 | z.add_assign(...) | main.rs:578:27:580:5 | { ... } | | -| main.rs:579:9:579:24 | ExprStmt | main.rs:579:9:579:9 | z | | -| main.rs:579:22:579:22 | 1 | main.rs:579:9:579:23 | z.add_assign(...) | | -| main.rs:581:5:581:12 | closure3 | main.rs:581:5:581:14 | closure3(...) | | -| main.rs:581:5:581:14 | closure3(...) | main.rs:582:5:582:17 | ExprStmt | | -| main.rs:581:5:581:15 | ExprStmt | main.rs:581:5:581:12 | closure3 | | -| main.rs:582:5:582:13 | print_i64 | main.rs:582:15:582:15 | z | | -| main.rs:582:5:582:16 | print_i64(...) | main.rs:556:18:583:1 | { ... } | | -| main.rs:582:5:582:17 | ExprStmt | main.rs:582:5:582:13 | print_i64 | | -| main.rs:582:15:582:15 | z | main.rs:582:5:582:16 | print_i64(...) | | -| main.rs:585:1:593:1 | enter fn async_block_capture | main.rs:586:5:586:23 | let ... = 0 | | -| main.rs:585:1:593:1 | exit fn async_block_capture (normal) | main.rs:585:1:593:1 | exit fn async_block_capture | | -| main.rs:585:32:593:1 | { ... } | main.rs:585:1:593:1 | exit fn async_block_capture (normal) | | -| main.rs:586:5:586:23 | let ... = 0 | main.rs:586:22:586:22 | 0 | | -| main.rs:586:9:586:13 | mut i | main.rs:587:5:589:6 | let ... = ... | match | -| main.rs:586:13:586:13 | i | main.rs:586:9:586:13 | mut i | | -| main.rs:586:22:586:22 | 0 | main.rs:586:13:586:13 | i | | -| main.rs:587:5:589:6 | let ... = ... | main.rs:587:17:589:5 | { ... } | | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | | -| main.rs:587:9:587:13 | block | main.rs:591:5:591:16 | ExprStmt | match | -| main.rs:587:17:589:5 | enter { ... } | main.rs:588:9:588:14 | ExprStmt | | -| main.rs:587:17:589:5 | exit { ... } (normal) | main.rs:587:17:589:5 | exit { ... } | | -| main.rs:587:17:589:5 | { ... } | main.rs:587:9:587:13 | block | | -| main.rs:588:9:588:9 | i | main.rs:588:13:588:13 | 1 | | -| main.rs:588:9:588:13 | ... = ... | main.rs:587:17:589:5 | exit { ... } (normal) | | -| main.rs:588:9:588:14 | ExprStmt | main.rs:588:9:588:9 | i | | -| main.rs:588:13:588:13 | 1 | main.rs:588:9:588:13 | ... = ... | | -| main.rs:591:5:591:9 | block | main.rs:591:5:591:15 | await block | | -| main.rs:591:5:591:15 | await block | main.rs:592:5:592:17 | ExprStmt | | -| main.rs:591:5:591:16 | ExprStmt | main.rs:591:5:591:9 | block | | -| main.rs:592:5:592:13 | print_i64 | main.rs:592:15:592:15 | i | | -| main.rs:592:5:592:16 | print_i64(...) | main.rs:585:32:593:1 | { ... } | | -| main.rs:592:5:592:17 | ExprStmt | main.rs:592:5:592:13 | print_i64 | | -| main.rs:592:15:592:15 | i | main.rs:592:5:592:16 | print_i64(...) | | -| main.rs:595:1:611:1 | enter fn phi | main.rs:595:8:595:8 | b | | -| main.rs:595:1:611:1 | exit fn phi (normal) | main.rs:595:1:611:1 | exit fn phi | | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:14 | ...: bool | match | -| main.rs:595:8:595:14 | ...: bool | main.rs:596:5:596:18 | let ... = 1 | | -| main.rs:595:17:611:1 | { ... } | main.rs:595:1:611:1 | exit fn phi (normal) | | -| main.rs:596:5:596:18 | let ... = 1 | main.rs:596:17:596:17 | 1 | | -| main.rs:596:9:596:13 | mut x | main.rs:597:5:597:17 | ExprStmt | match | -| main.rs:596:13:596:13 | x | main.rs:596:9:596:13 | mut x | | -| main.rs:596:17:596:17 | 1 | main.rs:596:13:596:13 | x | | -| main.rs:597:5:597:13 | print_i64 | main.rs:597:15:597:15 | x | | -| main.rs:597:5:597:16 | print_i64(...) | main.rs:598:5:598:21 | ExprStmt | | -| main.rs:597:5:597:17 | ExprStmt | main.rs:597:5:597:13 | print_i64 | | -| main.rs:597:15:597:15 | x | main.rs:597:5:597:16 | print_i64(...) | | -| main.rs:598:5:598:13 | print_i64 | main.rs:598:15:598:15 | x | | -| main.rs:598:5:598:20 | print_i64(...) | main.rs:599:5:609:6 | let _ = ... | | -| main.rs:598:5:598:21 | ExprStmt | main.rs:598:5:598:13 | print_i64 | | -| main.rs:598:15:598:15 | x | main.rs:598:19:598:19 | 1 | | -| main.rs:598:15:598:19 | ... + ... | main.rs:598:5:598:20 | print_i64(...) | | -| main.rs:598:19:598:19 | 1 | main.rs:598:15:598:19 | ... + ... | | -| main.rs:599:5:609:6 | let _ = ... | main.rs:600:16:600:16 | b | | -| main.rs:600:9:600:9 | _ | main.rs:610:5:610:17 | ExprStmt | match | -| main.rs:600:13:609:5 | if b {...} else {...} | main.rs:600:9:600:9 | _ | | -| main.rs:600:16:600:16 | b | main.rs:602:9:602:14 | ExprStmt | true | -| main.rs:600:16:600:16 | b | main.rs:606:9:606:14 | ExprStmt | false | -| main.rs:601:5:605:5 | { ... } | main.rs:600:13:609:5 | if b {...} else {...} | | -| main.rs:602:9:602:9 | x | main.rs:602:13:602:13 | 2 | | -| main.rs:602:9:602:13 | ... = ... | main.rs:603:9:603:21 | ExprStmt | | -| main.rs:602:9:602:14 | ExprStmt | main.rs:602:9:602:9 | x | | -| main.rs:602:13:602:13 | 2 | main.rs:602:9:602:13 | ... = ... | | -| main.rs:603:9:603:17 | print_i64 | main.rs:603:19:603:19 | x | | -| main.rs:603:9:603:20 | print_i64(...) | main.rs:604:9:604:25 | ExprStmt | | -| main.rs:603:9:603:21 | ExprStmt | main.rs:603:9:603:17 | print_i64 | | -| main.rs:603:19:603:19 | x | main.rs:603:9:603:20 | print_i64(...) | | -| main.rs:604:9:604:17 | print_i64 | main.rs:604:19:604:19 | x | | -| main.rs:604:9:604:24 | print_i64(...) | main.rs:601:5:605:5 | { ... } | | -| main.rs:604:9:604:25 | ExprStmt | main.rs:604:9:604:17 | print_i64 | | -| main.rs:604:19:604:19 | x | main.rs:604:23:604:23 | 1 | | -| main.rs:604:19:604:23 | ... + ... | main.rs:604:9:604:24 | print_i64(...) | | -| main.rs:604:23:604:23 | 1 | main.rs:604:19:604:23 | ... + ... | | -| main.rs:605:12:609:5 | { ... } | main.rs:600:13:609:5 | if b {...} else {...} | | -| main.rs:606:9:606:9 | x | main.rs:606:13:606:13 | 3 | | -| main.rs:606:9:606:13 | ... = ... | main.rs:607:9:607:21 | ExprStmt | | -| main.rs:606:9:606:14 | ExprStmt | main.rs:606:9:606:9 | x | | -| main.rs:606:13:606:13 | 3 | main.rs:606:9:606:13 | ... = ... | | -| main.rs:607:9:607:17 | print_i64 | main.rs:607:19:607:19 | x | | -| main.rs:607:9:607:20 | print_i64(...) | main.rs:608:9:608:25 | ExprStmt | | -| main.rs:607:9:607:21 | ExprStmt | main.rs:607:9:607:17 | print_i64 | | -| main.rs:607:19:607:19 | x | main.rs:607:9:607:20 | print_i64(...) | | -| main.rs:608:9:608:17 | print_i64 | main.rs:608:19:608:19 | x | | -| main.rs:608:9:608:24 | print_i64(...) | main.rs:605:12:609:5 | { ... } | | -| main.rs:608:9:608:25 | ExprStmt | main.rs:608:9:608:17 | print_i64 | | -| main.rs:608:19:608:19 | x | main.rs:608:23:608:23 | 1 | | -| main.rs:608:19:608:23 | ... + ... | main.rs:608:9:608:24 | print_i64(...) | | -| main.rs:608:23:608:23 | 1 | main.rs:608:19:608:23 | ... + ... | | -| main.rs:610:5:610:13 | print_i64 | main.rs:610:15:610:15 | x | | -| main.rs:610:5:610:16 | print_i64(...) | main.rs:595:17:611:1 | { ... } | | -| main.rs:610:5:610:17 | ExprStmt | main.rs:610:5:610:13 | print_i64 | | -| main.rs:610:15:610:15 | x | main.rs:610:5:610:16 | print_i64(...) | | -| main.rs:613:1:630:1 | enter fn phi_read | main.rs:613:13:613:14 | b1 | | -| main.rs:613:1:630:1 | exit fn phi_read (normal) | main.rs:613:1:630:1 | exit fn phi_read | | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:20 | ...: bool | match | -| main.rs:613:13:613:20 | ...: bool | main.rs:613:23:613:24 | b2 | | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:30 | ...: bool | match | -| main.rs:613:23:613:30 | ...: bool | main.rs:614:5:614:14 | let ... = 1 | | -| main.rs:613:33:630:1 | { ... } | main.rs:613:1:630:1 | exit fn phi_read (normal) | | -| main.rs:614:5:614:14 | let ... = 1 | main.rs:614:13:614:13 | 1 | | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | | -| main.rs:614:9:614:9 | x | main.rs:615:5:621:6 | let _ = ... | match | -| main.rs:614:13:614:13 | 1 | main.rs:614:9:614:9 | x | | -| main.rs:615:5:621:6 | let _ = ... | main.rs:616:16:616:17 | b1 | | -| main.rs:616:9:616:9 | _ | main.rs:623:5:629:6 | let _ = ... | match | -| main.rs:616:13:621:5 | if b1 {...} else {...} | main.rs:616:9:616:9 | _ | | -| main.rs:616:16:616:17 | b1 | main.rs:618:9:618:21 | ExprStmt | true | -| main.rs:616:16:616:17 | b1 | main.rs:620:9:620:21 | ExprStmt | false | -| main.rs:617:5:619:5 | { ... } | main.rs:616:13:621:5 | if b1 {...} else {...} | | +| main.rs:567:1:594:1 | enter fn capture_mut | main.rs:568:5:568:18 | let ... = 1 | | +| main.rs:567:1:594:1 | exit fn capture_mut (normal) | main.rs:567:1:594:1 | exit fn capture_mut | | +| main.rs:567:18:594:1 | { ... } | main.rs:567:1:594:1 | exit fn capture_mut (normal) | | +| main.rs:568:5:568:18 | let ... = 1 | main.rs:568:17:568:17 | 1 | | +| main.rs:568:9:568:13 | mut x | main.rs:571:5:573:6 | let ... = ... | match | +| main.rs:568:13:568:13 | x | main.rs:568:9:568:13 | mut x | | +| main.rs:568:17:568:17 | 1 | main.rs:568:13:568:13 | x | | +| main.rs:571:5:573:6 | let ... = ... | main.rs:571:20:573:5 | \|...\| ... | | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | | +| main.rs:571:9:571:16 | closure1 | main.rs:574:5:574:15 | ExprStmt | match | +| main.rs:571:20:573:5 | \|...\| ... | main.rs:571:9:571:16 | closure1 | | +| main.rs:571:20:573:5 | enter \|...\| ... | main.rs:572:9:572:21 | ExprStmt | | +| main.rs:571:20:573:5 | exit \|...\| ... (normal) | main.rs:571:20:573:5 | exit \|...\| ... | | +| main.rs:571:23:573:5 | { ... } | main.rs:571:20:573:5 | exit \|...\| ... (normal) | | +| main.rs:572:9:572:17 | print_i64 | main.rs:572:19:572:19 | x | | +| main.rs:572:9:572:20 | print_i64(...) | main.rs:571:23:573:5 | { ... } | | +| main.rs:572:9:572:21 | ExprStmt | main.rs:572:9:572:17 | print_i64 | | +| main.rs:572:19:572:19 | x | main.rs:572:9:572:20 | print_i64(...) | | +| main.rs:574:5:574:12 | closure1 | main.rs:574:5:574:14 | closure1(...) | | +| main.rs:574:5:574:14 | closure1(...) | main.rs:575:5:575:17 | ExprStmt | | +| main.rs:574:5:574:15 | ExprStmt | main.rs:574:5:574:12 | closure1 | | +| main.rs:575:5:575:13 | print_i64 | main.rs:575:15:575:15 | x | | +| main.rs:575:5:575:16 | print_i64(...) | main.rs:577:5:577:18 | let ... = 2 | | +| main.rs:575:5:575:17 | ExprStmt | main.rs:575:5:575:13 | print_i64 | | +| main.rs:575:15:575:15 | x | main.rs:575:5:575:16 | print_i64(...) | | +| main.rs:577:5:577:18 | let ... = 2 | main.rs:577:17:577:17 | 2 | | +| main.rs:577:9:577:13 | mut y | main.rs:580:5:582:6 | let ... = ... | match | +| main.rs:577:13:577:13 | y | main.rs:577:9:577:13 | mut y | | +| main.rs:577:17:577:17 | 2 | main.rs:577:13:577:13 | y | | +| main.rs:580:5:582:6 | let ... = ... | main.rs:580:24:582:5 | \|...\| ... | | +| main.rs:580:9:580:20 | mut closure2 | main.rs:583:5:583:15 | ExprStmt | match | +| main.rs:580:13:580:20 | closure2 | main.rs:580:9:580:20 | mut closure2 | | +| main.rs:580:24:582:5 | \|...\| ... | main.rs:580:13:580:20 | closure2 | | +| main.rs:580:24:582:5 | enter \|...\| ... | main.rs:581:9:581:14 | ExprStmt | | +| main.rs:580:24:582:5 | exit \|...\| ... (normal) | main.rs:580:24:582:5 | exit \|...\| ... | | +| main.rs:580:27:582:5 | { ... } | main.rs:580:24:582:5 | exit \|...\| ... (normal) | | +| main.rs:581:9:581:9 | y | main.rs:581:13:581:13 | 3 | | +| main.rs:581:9:581:13 | ... = ... | main.rs:580:27:582:5 | { ... } | | +| main.rs:581:9:581:14 | ExprStmt | main.rs:581:9:581:9 | y | | +| main.rs:581:13:581:13 | 3 | main.rs:581:9:581:13 | ... = ... | | +| main.rs:583:5:583:12 | closure2 | main.rs:583:5:583:14 | closure2(...) | | +| main.rs:583:5:583:14 | closure2(...) | main.rs:584:5:584:17 | ExprStmt | | +| main.rs:583:5:583:15 | ExprStmt | main.rs:583:5:583:12 | closure2 | | +| main.rs:584:5:584:13 | print_i64 | main.rs:584:15:584:15 | y | | +| main.rs:584:5:584:16 | print_i64(...) | main.rs:586:5:586:18 | let ... = 2 | | +| main.rs:584:5:584:17 | ExprStmt | main.rs:584:5:584:13 | print_i64 | | +| main.rs:584:15:584:15 | y | main.rs:584:5:584:16 | print_i64(...) | | +| main.rs:586:5:586:18 | let ... = 2 | main.rs:586:17:586:17 | 2 | | +| main.rs:586:9:586:13 | mut z | main.rs:589:5:591:6 | let ... = ... | match | +| main.rs:586:13:586:13 | z | main.rs:586:9:586:13 | mut z | | +| main.rs:586:17:586:17 | 2 | main.rs:586:13:586:13 | z | | +| main.rs:589:5:591:6 | let ... = ... | main.rs:589:24:591:5 | \|...\| ... | | +| main.rs:589:9:589:20 | mut closure3 | main.rs:592:5:592:15 | ExprStmt | match | +| main.rs:589:13:589:20 | closure3 | main.rs:589:9:589:20 | mut closure3 | | +| main.rs:589:24:591:5 | \|...\| ... | main.rs:589:13:589:20 | closure3 | | +| main.rs:589:24:591:5 | enter \|...\| ... | main.rs:590:9:590:24 | ExprStmt | | +| main.rs:589:24:591:5 | exit \|...\| ... (normal) | main.rs:589:24:591:5 | exit \|...\| ... | | +| main.rs:589:27:591:5 | { ... } | main.rs:589:24:591:5 | exit \|...\| ... (normal) | | +| main.rs:590:9:590:9 | z | main.rs:590:22:590:22 | 1 | | +| main.rs:590:9:590:23 | z.add_assign(...) | main.rs:589:27:591:5 | { ... } | | +| main.rs:590:9:590:24 | ExprStmt | main.rs:590:9:590:9 | z | | +| main.rs:590:22:590:22 | 1 | main.rs:590:9:590:23 | z.add_assign(...) | | +| main.rs:592:5:592:12 | closure3 | main.rs:592:5:592:14 | closure3(...) | | +| main.rs:592:5:592:14 | closure3(...) | main.rs:593:5:593:17 | ExprStmt | | +| main.rs:592:5:592:15 | ExprStmt | main.rs:592:5:592:12 | closure3 | | +| main.rs:593:5:593:13 | print_i64 | main.rs:593:15:593:15 | z | | +| main.rs:593:5:593:16 | print_i64(...) | main.rs:567:18:594:1 | { ... } | | +| main.rs:593:5:593:17 | ExprStmt | main.rs:593:5:593:13 | print_i64 | | +| main.rs:593:15:593:15 | z | main.rs:593:5:593:16 | print_i64(...) | | +| main.rs:596:1:604:1 | enter fn async_block_capture | main.rs:597:5:597:23 | let ... = 0 | | +| main.rs:596:1:604:1 | exit fn async_block_capture (normal) | main.rs:596:1:604:1 | exit fn async_block_capture | | +| main.rs:596:32:604:1 | { ... } | main.rs:596:1:604:1 | exit fn async_block_capture (normal) | | +| main.rs:597:5:597:23 | let ... = 0 | main.rs:597:22:597:22 | 0 | | +| main.rs:597:9:597:13 | mut i | main.rs:598:5:600:6 | let ... = ... | match | +| main.rs:597:13:597:13 | i | main.rs:597:9:597:13 | mut i | | +| main.rs:597:22:597:22 | 0 | main.rs:597:13:597:13 | i | | +| main.rs:598:5:600:6 | let ... = ... | main.rs:598:17:600:5 | { ... } | | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | | +| main.rs:598:9:598:13 | block | main.rs:602:5:602:16 | ExprStmt | match | +| main.rs:598:17:600:5 | enter { ... } | main.rs:599:9:599:14 | ExprStmt | | +| main.rs:598:17:600:5 | exit { ... } (normal) | main.rs:598:17:600:5 | exit { ... } | | +| main.rs:598:17:600:5 | { ... } | main.rs:598:9:598:13 | block | | +| main.rs:599:9:599:9 | i | main.rs:599:13:599:13 | 1 | | +| main.rs:599:9:599:13 | ... = ... | main.rs:598:17:600:5 | exit { ... } (normal) | | +| main.rs:599:9:599:14 | ExprStmt | main.rs:599:9:599:9 | i | | +| main.rs:599:13:599:13 | 1 | main.rs:599:9:599:13 | ... = ... | | +| main.rs:602:5:602:9 | block | main.rs:602:5:602:15 | await block | | +| main.rs:602:5:602:15 | await block | main.rs:603:5:603:17 | ExprStmt | | +| main.rs:602:5:602:16 | ExprStmt | main.rs:602:5:602:9 | block | | +| main.rs:603:5:603:13 | print_i64 | main.rs:603:15:603:15 | i | | +| main.rs:603:5:603:16 | print_i64(...) | main.rs:596:32:604:1 | { ... } | | +| main.rs:603:5:603:17 | ExprStmt | main.rs:603:5:603:13 | print_i64 | | +| main.rs:603:15:603:15 | i | main.rs:603:5:603:16 | print_i64(...) | | +| main.rs:606:1:622:1 | enter fn phi | main.rs:606:8:606:8 | b | | +| main.rs:606:1:622:1 | exit fn phi (normal) | main.rs:606:1:622:1 | exit fn phi | | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:14 | ...: bool | match | +| main.rs:606:8:606:14 | ...: bool | main.rs:607:5:607:18 | let ... = 1 | | +| main.rs:606:17:622:1 | { ... } | main.rs:606:1:622:1 | exit fn phi (normal) | | +| main.rs:607:5:607:18 | let ... = 1 | main.rs:607:17:607:17 | 1 | | +| main.rs:607:9:607:13 | mut x | main.rs:608:5:608:17 | ExprStmt | match | +| main.rs:607:13:607:13 | x | main.rs:607:9:607:13 | mut x | | +| main.rs:607:17:607:17 | 1 | main.rs:607:13:607:13 | x | | +| main.rs:608:5:608:13 | print_i64 | main.rs:608:15:608:15 | x | | +| main.rs:608:5:608:16 | print_i64(...) | main.rs:609:5:609:21 | ExprStmt | | +| main.rs:608:5:608:17 | ExprStmt | main.rs:608:5:608:13 | print_i64 | | +| main.rs:608:15:608:15 | x | main.rs:608:5:608:16 | print_i64(...) | | +| main.rs:609:5:609:13 | print_i64 | main.rs:609:15:609:15 | x | | +| main.rs:609:5:609:20 | print_i64(...) | main.rs:610:5:620:6 | let _ = ... | | +| main.rs:609:5:609:21 | ExprStmt | main.rs:609:5:609:13 | print_i64 | | +| main.rs:609:15:609:15 | x | main.rs:609:19:609:19 | 1 | | +| main.rs:609:15:609:19 | ... + ... | main.rs:609:5:609:20 | print_i64(...) | | +| main.rs:609:19:609:19 | 1 | main.rs:609:15:609:19 | ... + ... | | +| main.rs:610:5:620:6 | let _ = ... | main.rs:611:16:611:16 | b | | +| main.rs:611:9:611:9 | _ | main.rs:621:5:621:17 | ExprStmt | match | +| main.rs:611:13:620:5 | if b {...} else {...} | main.rs:611:9:611:9 | _ | | +| main.rs:611:16:611:16 | b | main.rs:613:9:613:14 | ExprStmt | true | +| main.rs:611:16:611:16 | b | main.rs:617:9:617:14 | ExprStmt | false | +| main.rs:612:5:616:5 | { ... } | main.rs:611:13:620:5 | if b {...} else {...} | | +| main.rs:613:9:613:9 | x | main.rs:613:13:613:13 | 2 | | +| main.rs:613:9:613:13 | ... = ... | main.rs:614:9:614:21 | ExprStmt | | +| main.rs:613:9:613:14 | ExprStmt | main.rs:613:9:613:9 | x | | +| main.rs:613:13:613:13 | 2 | main.rs:613:9:613:13 | ... = ... | | +| main.rs:614:9:614:17 | print_i64 | main.rs:614:19:614:19 | x | | +| main.rs:614:9:614:20 | print_i64(...) | main.rs:615:9:615:25 | ExprStmt | | +| main.rs:614:9:614:21 | ExprStmt | main.rs:614:9:614:17 | print_i64 | | +| main.rs:614:19:614:19 | x | main.rs:614:9:614:20 | print_i64(...) | | +| main.rs:615:9:615:17 | print_i64 | main.rs:615:19:615:19 | x | | +| main.rs:615:9:615:24 | print_i64(...) | main.rs:612:5:616:5 | { ... } | | +| main.rs:615:9:615:25 | ExprStmt | main.rs:615:9:615:17 | print_i64 | | +| main.rs:615:19:615:19 | x | main.rs:615:23:615:23 | 1 | | +| main.rs:615:19:615:23 | ... + ... | main.rs:615:9:615:24 | print_i64(...) | | +| main.rs:615:23:615:23 | 1 | main.rs:615:19:615:23 | ... + ... | | +| main.rs:616:12:620:5 | { ... } | main.rs:611:13:620:5 | if b {...} else {...} | | +| main.rs:617:9:617:9 | x | main.rs:617:13:617:13 | 3 | | +| main.rs:617:9:617:13 | ... = ... | main.rs:618:9:618:21 | ExprStmt | | +| main.rs:617:9:617:14 | ExprStmt | main.rs:617:9:617:9 | x | | +| main.rs:617:13:617:13 | 3 | main.rs:617:9:617:13 | ... = ... | | | main.rs:618:9:618:17 | print_i64 | main.rs:618:19:618:19 | x | | -| main.rs:618:9:618:20 | print_i64(...) | main.rs:617:5:619:5 | { ... } | | +| main.rs:618:9:618:20 | print_i64(...) | main.rs:619:9:619:25 | ExprStmt | | | main.rs:618:9:618:21 | ExprStmt | main.rs:618:9:618:17 | print_i64 | | | main.rs:618:19:618:19 | x | main.rs:618:9:618:20 | print_i64(...) | | -| main.rs:619:12:621:5 | { ... } | main.rs:616:13:621:5 | if b1 {...} else {...} | | -| main.rs:620:9:620:17 | print_i64 | main.rs:620:19:620:19 | x | | -| main.rs:620:9:620:20 | print_i64(...) | main.rs:619:12:621:5 | { ... } | | -| main.rs:620:9:620:21 | ExprStmt | main.rs:620:9:620:17 | print_i64 | | -| main.rs:620:19:620:19 | x | main.rs:620:9:620:20 | print_i64(...) | | -| main.rs:623:5:629:6 | let _ = ... | main.rs:624:16:624:17 | b2 | | -| main.rs:624:9:624:9 | _ | main.rs:613:33:630:1 | { ... } | match | -| main.rs:624:13:629:5 | if b2 {...} else {...} | main.rs:624:9:624:9 | _ | | -| main.rs:624:16:624:17 | b2 | main.rs:626:9:626:21 | ExprStmt | true | -| main.rs:624:16:624:17 | b2 | main.rs:628:9:628:21 | ExprStmt | false | -| main.rs:625:5:627:5 | { ... } | main.rs:624:13:629:5 | if b2 {...} else {...} | | -| main.rs:626:9:626:17 | print_i64 | main.rs:626:19:626:19 | x | | -| main.rs:626:9:626:20 | print_i64(...) | main.rs:625:5:627:5 | { ... } | | -| main.rs:626:9:626:21 | ExprStmt | main.rs:626:9:626:17 | print_i64 | | -| main.rs:626:19:626:19 | x | main.rs:626:9:626:20 | print_i64(...) | | -| main.rs:627:12:629:5 | { ... } | main.rs:624:13:629:5 | if b2 {...} else {...} | | -| main.rs:628:9:628:17 | print_i64 | main.rs:628:19:628:19 | x | | -| main.rs:628:9:628:20 | print_i64(...) | main.rs:627:12:629:5 | { ... } | | -| main.rs:628:9:628:21 | ExprStmt | main.rs:628:9:628:17 | print_i64 | | -| main.rs:628:19:628:19 | x | main.rs:628:9:628:20 | print_i64(...) | | -| main.rs:637:5:639:5 | enter fn my_get | main.rs:637:20:637:23 | self | | -| main.rs:637:5:639:5 | exit fn my_get (normal) | main.rs:637:5:639:5 | exit fn my_get | | -| main.rs:637:15:637:23 | SelfParam | main.rs:638:9:638:24 | ExprStmt | | -| main.rs:637:20:637:23 | self | main.rs:637:15:637:23 | SelfParam | | -| main.rs:638:9:638:23 | return ... | main.rs:637:5:639:5 | exit fn my_get (normal) | return | -| main.rs:638:9:638:24 | ExprStmt | main.rs:638:16:638:19 | self | | -| main.rs:638:16:638:19 | self | main.rs:638:16:638:23 | self.val | | -| main.rs:638:16:638:23 | self.val | main.rs:638:9:638:23 | return ... | | -| main.rs:641:5:643:5 | enter fn id | main.rs:641:11:641:14 | self | | -| main.rs:641:5:643:5 | exit fn id (normal) | main.rs:641:5:643:5 | exit fn id | | -| main.rs:641:11:641:14 | SelfParam | main.rs:642:9:642:12 | self | | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | SelfParam | | -| main.rs:641:25:643:5 | { ... } | main.rs:641:5:643:5 | exit fn id (normal) | | -| main.rs:642:9:642:12 | self | main.rs:641:25:643:5 | { ... } | | -| main.rs:645:5:652:5 | enter fn my_method | main.rs:645:23:645:26 | self | | -| main.rs:645:5:652:5 | exit fn my_method (normal) | main.rs:645:5:652:5 | exit fn my_method | | -| main.rs:645:18:645:26 | SelfParam | main.rs:646:9:649:10 | let ... = ... | | -| main.rs:645:23:645:26 | self | main.rs:645:18:645:26 | SelfParam | | -| main.rs:645:29:652:5 | { ... } | main.rs:645:5:652:5 | exit fn my_method (normal) | | -| main.rs:646:9:649:10 | let ... = ... | main.rs:646:21:649:9 | \|...\| ... | | -| main.rs:646:13:646:17 | mut f | main.rs:650:9:650:13 | ExprStmt | match | -| main.rs:646:17:646:17 | f | main.rs:646:13:646:17 | mut f | | -| main.rs:646:21:649:9 | \|...\| ... | main.rs:646:17:646:17 | f | | -| main.rs:646:21:649:9 | enter \|...\| ... | main.rs:646:22:646:22 | n | | -| main.rs:646:21:649:9 | exit \|...\| ... (normal) | main.rs:646:21:649:9 | exit \|...\| ... | | -| main.rs:646:22:646:22 | ... | main.rs:648:13:648:26 | ExprStmt | | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | ... | match | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | | -| main.rs:646:25:649:9 | { ... } | main.rs:646:21:649:9 | exit \|...\| ... (normal) | | -| main.rs:648:13:648:16 | self | main.rs:648:13:648:20 | self.val | | -| main.rs:648:13:648:20 | self.val | main.rs:648:25:648:25 | n | | -| main.rs:648:13:648:25 | ... += ... | main.rs:646:25:649:9 | { ... } | | -| main.rs:648:13:648:26 | ExprStmt | main.rs:648:13:648:16 | self | | -| main.rs:648:25:648:25 | n | main.rs:648:13:648:25 | ... += ... | | -| main.rs:650:9:650:9 | f | main.rs:650:11:650:11 | 3 | | -| main.rs:650:9:650:12 | f(...) | main.rs:651:9:651:13 | ExprStmt | | -| main.rs:650:9:650:13 | ExprStmt | main.rs:650:9:650:9 | f | | -| main.rs:650:11:650:11 | 3 | main.rs:650:9:650:12 | f(...) | | -| main.rs:651:9:651:9 | f | main.rs:651:11:651:11 | 4 | | -| main.rs:651:9:651:12 | f(...) | main.rs:645:29:652:5 | { ... } | | -| main.rs:651:9:651:13 | ExprStmt | main.rs:651:9:651:9 | f | | -| main.rs:651:11:651:11 | 4 | main.rs:651:9:651:12 | f(...) | | -| main.rs:655:1:662:1 | enter fn structs | main.rs:656:5:656:36 | let ... = ... | | -| main.rs:655:1:662:1 | exit fn structs (normal) | main.rs:655:1:662:1 | exit fn structs | | -| main.rs:655:14:662:1 | { ... } | main.rs:655:1:662:1 | exit fn structs (normal) | | -| main.rs:656:5:656:36 | let ... = ... | main.rs:656:33:656:33 | 1 | | -| main.rs:656:9:656:13 | mut a | main.rs:657:5:657:26 | ExprStmt | match | -| main.rs:656:13:656:13 | a | main.rs:656:9:656:13 | mut a | | -| main.rs:656:17:656:35 | MyStruct {...} | main.rs:656:13:656:13 | a | | -| main.rs:656:33:656:33 | 1 | main.rs:656:17:656:35 | MyStruct {...} | | -| main.rs:657:5:657:13 | print_i64 | main.rs:657:15:657:15 | a | | -| main.rs:657:5:657:25 | print_i64(...) | main.rs:658:5:658:14 | ExprStmt | | -| main.rs:657:5:657:26 | ExprStmt | main.rs:657:5:657:13 | print_i64 | | -| main.rs:657:15:657:15 | a | main.rs:657:15:657:24 | a.my_get() | | -| main.rs:657:15:657:24 | a.my_get() | main.rs:657:5:657:25 | print_i64(...) | | -| main.rs:658:5:658:5 | a | main.rs:658:5:658:9 | a.val | | -| main.rs:658:5:658:9 | a.val | main.rs:658:13:658:13 | 5 | | -| main.rs:658:5:658:13 | ... = ... | main.rs:659:5:659:26 | ExprStmt | | -| main.rs:658:5:658:14 | ExprStmt | main.rs:658:5:658:5 | a | | -| main.rs:658:13:658:13 | 5 | main.rs:658:5:658:13 | ... = ... | | -| main.rs:659:5:659:13 | print_i64 | main.rs:659:15:659:15 | a | | -| main.rs:659:5:659:25 | print_i64(...) | main.rs:660:5:660:28 | ExprStmt | | -| main.rs:659:5:659:26 | ExprStmt | main.rs:659:5:659:13 | print_i64 | | -| main.rs:659:15:659:15 | a | main.rs:659:15:659:24 | a.my_get() | | -| main.rs:659:15:659:24 | a.my_get() | main.rs:659:5:659:25 | print_i64(...) | | -| main.rs:660:5:660:5 | a | main.rs:660:25:660:25 | 2 | | -| main.rs:660:5:660:27 | ... = ... | main.rs:661:5:661:26 | ExprStmt | | -| main.rs:660:5:660:28 | ExprStmt | main.rs:660:5:660:5 | a | | -| main.rs:660:9:660:27 | MyStruct {...} | main.rs:660:5:660:27 | ... = ... | | -| main.rs:660:25:660:25 | 2 | main.rs:660:9:660:27 | MyStruct {...} | | -| main.rs:661:5:661:13 | print_i64 | main.rs:661:15:661:15 | a | | -| main.rs:661:5:661:25 | print_i64(...) | main.rs:655:14:662:1 | { ... } | | -| main.rs:661:5:661:26 | ExprStmt | main.rs:661:5:661:13 | print_i64 | | -| main.rs:661:15:661:15 | a | main.rs:661:15:661:24 | a.my_get() | | -| main.rs:661:15:661:24 | a.my_get() | main.rs:661:5:661:25 | print_i64(...) | | -| main.rs:664:1:671:1 | enter fn arrays | main.rs:665:5:665:26 | let ... = ... | | -| main.rs:664:1:671:1 | exit fn arrays (normal) | main.rs:664:1:671:1 | exit fn arrays | | -| main.rs:664:13:671:1 | { ... } | main.rs:664:1:671:1 | exit fn arrays (normal) | | -| main.rs:665:5:665:26 | let ... = ... | main.rs:665:18:665:18 | 1 | | -| main.rs:665:9:665:13 | mut a | main.rs:666:5:666:20 | ExprStmt | match | -| main.rs:665:13:665:13 | a | main.rs:665:9:665:13 | mut a | | -| main.rs:665:17:665:25 | [...] | main.rs:665:13:665:13 | a | | -| main.rs:665:18:665:18 | 1 | main.rs:665:21:665:21 | 2 | | -| main.rs:665:21:665:21 | 2 | main.rs:665:24:665:24 | 3 | | -| main.rs:665:24:665:24 | 3 | main.rs:665:17:665:25 | [...] | | -| main.rs:666:5:666:13 | print_i64 | main.rs:666:15:666:15 | a | | -| main.rs:666:5:666:19 | print_i64(...) | main.rs:667:5:667:13 | ExprStmt | | -| main.rs:666:5:666:20 | ExprStmt | main.rs:666:5:666:13 | print_i64 | | -| main.rs:666:15:666:15 | a | main.rs:666:17:666:17 | 0 | | -| main.rs:666:15:666:18 | a[0] | main.rs:666:5:666:19 | print_i64(...) | | -| main.rs:666:17:666:17 | 0 | main.rs:666:15:666:18 | a[0] | | -| main.rs:667:5:667:5 | a | main.rs:667:7:667:7 | 1 | | -| main.rs:667:5:667:8 | a[1] | main.rs:667:12:667:12 | 5 | | -| main.rs:667:5:667:12 | ... = ... | main.rs:668:5:668:20 | ExprStmt | | -| main.rs:667:5:667:13 | ExprStmt | main.rs:667:5:667:5 | a | | -| main.rs:667:7:667:7 | 1 | main.rs:667:5:667:8 | a[1] | | -| main.rs:667:12:667:12 | 5 | main.rs:667:5:667:12 | ... = ... | | +| main.rs:619:9:619:17 | print_i64 | main.rs:619:19:619:19 | x | | +| main.rs:619:9:619:24 | print_i64(...) | main.rs:616:12:620:5 | { ... } | | +| main.rs:619:9:619:25 | ExprStmt | main.rs:619:9:619:17 | print_i64 | | +| main.rs:619:19:619:19 | x | main.rs:619:23:619:23 | 1 | | +| main.rs:619:19:619:23 | ... + ... | main.rs:619:9:619:24 | print_i64(...) | | +| main.rs:619:23:619:23 | 1 | main.rs:619:19:619:23 | ... + ... | | +| main.rs:621:5:621:13 | print_i64 | main.rs:621:15:621:15 | x | | +| main.rs:621:5:621:16 | print_i64(...) | main.rs:606:17:622:1 | { ... } | | +| main.rs:621:5:621:17 | ExprStmt | main.rs:621:5:621:13 | print_i64 | | +| main.rs:621:15:621:15 | x | main.rs:621:5:621:16 | print_i64(...) | | +| main.rs:624:1:641:1 | enter fn phi_read | main.rs:624:13:624:14 | b1 | | +| main.rs:624:1:641:1 | exit fn phi_read (normal) | main.rs:624:1:641:1 | exit fn phi_read | | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:20 | ...: bool | match | +| main.rs:624:13:624:20 | ...: bool | main.rs:624:23:624:24 | b2 | | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:30 | ...: bool | match | +| main.rs:624:23:624:30 | ...: bool | main.rs:625:5:625:14 | let ... = 1 | | +| main.rs:624:33:641:1 | { ... } | main.rs:624:1:641:1 | exit fn phi_read (normal) | | +| main.rs:625:5:625:14 | let ... = 1 | main.rs:625:13:625:13 | 1 | | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | | +| main.rs:625:9:625:9 | x | main.rs:626:5:632:6 | let _ = ... | match | +| main.rs:625:13:625:13 | 1 | main.rs:625:9:625:9 | x | | +| main.rs:626:5:632:6 | let _ = ... | main.rs:627:16:627:17 | b1 | | +| main.rs:627:9:627:9 | _ | main.rs:634:5:640:6 | let _ = ... | match | +| main.rs:627:13:632:5 | if b1 {...} else {...} | main.rs:627:9:627:9 | _ | | +| main.rs:627:16:627:17 | b1 | main.rs:629:9:629:21 | ExprStmt | true | +| main.rs:627:16:627:17 | b1 | main.rs:631:9:631:21 | ExprStmt | false | +| main.rs:628:5:630:5 | { ... } | main.rs:627:13:632:5 | if b1 {...} else {...} | | +| main.rs:629:9:629:17 | print_i64 | main.rs:629:19:629:19 | x | | +| main.rs:629:9:629:20 | print_i64(...) | main.rs:628:5:630:5 | { ... } | | +| main.rs:629:9:629:21 | ExprStmt | main.rs:629:9:629:17 | print_i64 | | +| main.rs:629:19:629:19 | x | main.rs:629:9:629:20 | print_i64(...) | | +| main.rs:630:12:632:5 | { ... } | main.rs:627:13:632:5 | if b1 {...} else {...} | | +| main.rs:631:9:631:17 | print_i64 | main.rs:631:19:631:19 | x | | +| main.rs:631:9:631:20 | print_i64(...) | main.rs:630:12:632:5 | { ... } | | +| main.rs:631:9:631:21 | ExprStmt | main.rs:631:9:631:17 | print_i64 | | +| main.rs:631:19:631:19 | x | main.rs:631:9:631:20 | print_i64(...) | | +| main.rs:634:5:640:6 | let _ = ... | main.rs:635:16:635:17 | b2 | | +| main.rs:635:9:635:9 | _ | main.rs:624:33:641:1 | { ... } | match | +| main.rs:635:13:640:5 | if b2 {...} else {...} | main.rs:635:9:635:9 | _ | | +| main.rs:635:16:635:17 | b2 | main.rs:637:9:637:21 | ExprStmt | true | +| main.rs:635:16:635:17 | b2 | main.rs:639:9:639:21 | ExprStmt | false | +| main.rs:636:5:638:5 | { ... } | main.rs:635:13:640:5 | if b2 {...} else {...} | | +| main.rs:637:9:637:17 | print_i64 | main.rs:637:19:637:19 | x | | +| main.rs:637:9:637:20 | print_i64(...) | main.rs:636:5:638:5 | { ... } | | +| main.rs:637:9:637:21 | ExprStmt | main.rs:637:9:637:17 | print_i64 | | +| main.rs:637:19:637:19 | x | main.rs:637:9:637:20 | print_i64(...) | | +| main.rs:638:12:640:5 | { ... } | main.rs:635:13:640:5 | if b2 {...} else {...} | | +| main.rs:639:9:639:17 | print_i64 | main.rs:639:19:639:19 | x | | +| main.rs:639:9:639:20 | print_i64(...) | main.rs:638:12:640:5 | { ... } | | +| main.rs:639:9:639:21 | ExprStmt | main.rs:639:9:639:17 | print_i64 | | +| main.rs:639:19:639:19 | x | main.rs:639:9:639:20 | print_i64(...) | | +| main.rs:648:5:650:5 | enter fn my_get | main.rs:648:20:648:23 | self | | +| main.rs:648:5:650:5 | exit fn my_get (normal) | main.rs:648:5:650:5 | exit fn my_get | | +| main.rs:648:15:648:23 | SelfParam | main.rs:649:9:649:24 | ExprStmt | | +| main.rs:648:20:648:23 | self | main.rs:648:15:648:23 | SelfParam | | +| main.rs:649:9:649:23 | return ... | main.rs:648:5:650:5 | exit fn my_get (normal) | return | +| main.rs:649:9:649:24 | ExprStmt | main.rs:649:16:649:19 | self | | +| main.rs:649:16:649:19 | self | main.rs:649:16:649:23 | self.val | | +| main.rs:649:16:649:23 | self.val | main.rs:649:9:649:23 | return ... | | +| main.rs:652:5:654:5 | enter fn id | main.rs:652:11:652:14 | self | | +| main.rs:652:5:654:5 | exit fn id (normal) | main.rs:652:5:654:5 | exit fn id | | +| main.rs:652:11:652:14 | SelfParam | main.rs:653:9:653:12 | self | | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | SelfParam | | +| main.rs:652:25:654:5 | { ... } | main.rs:652:5:654:5 | exit fn id (normal) | | +| main.rs:653:9:653:12 | self | main.rs:652:25:654:5 | { ... } | | +| main.rs:656:5:663:5 | enter fn my_method | main.rs:656:23:656:26 | self | | +| main.rs:656:5:663:5 | exit fn my_method (normal) | main.rs:656:5:663:5 | exit fn my_method | | +| main.rs:656:18:656:26 | SelfParam | main.rs:657:9:660:10 | let ... = ... | | +| main.rs:656:23:656:26 | self | main.rs:656:18:656:26 | SelfParam | | +| main.rs:656:29:663:5 | { ... } | main.rs:656:5:663:5 | exit fn my_method (normal) | | +| main.rs:657:9:660:10 | let ... = ... | main.rs:657:21:660:9 | \|...\| ... | | +| main.rs:657:13:657:17 | mut f | main.rs:661:9:661:13 | ExprStmt | match | +| main.rs:657:17:657:17 | f | main.rs:657:13:657:17 | mut f | | +| main.rs:657:21:660:9 | \|...\| ... | main.rs:657:17:657:17 | f | | +| main.rs:657:21:660:9 | enter \|...\| ... | main.rs:657:22:657:22 | n | | +| main.rs:657:21:660:9 | exit \|...\| ... (normal) | main.rs:657:21:660:9 | exit \|...\| ... | | +| main.rs:657:22:657:22 | ... | main.rs:659:13:659:26 | ExprStmt | | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | ... | match | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | | +| main.rs:657:25:660:9 | { ... } | main.rs:657:21:660:9 | exit \|...\| ... (normal) | | +| main.rs:659:13:659:16 | self | main.rs:659:13:659:20 | self.val | | +| main.rs:659:13:659:20 | self.val | main.rs:659:25:659:25 | n | | +| main.rs:659:13:659:25 | ... += ... | main.rs:657:25:660:9 | { ... } | | +| main.rs:659:13:659:26 | ExprStmt | main.rs:659:13:659:16 | self | | +| main.rs:659:25:659:25 | n | main.rs:659:13:659:25 | ... += ... | | +| main.rs:661:9:661:9 | f | main.rs:661:11:661:11 | 3 | | +| main.rs:661:9:661:12 | f(...) | main.rs:662:9:662:13 | ExprStmt | | +| main.rs:661:9:661:13 | ExprStmt | main.rs:661:9:661:9 | f | | +| main.rs:661:11:661:11 | 3 | main.rs:661:9:661:12 | f(...) | | +| main.rs:662:9:662:9 | f | main.rs:662:11:662:11 | 4 | | +| main.rs:662:9:662:12 | f(...) | main.rs:656:29:663:5 | { ... } | | +| main.rs:662:9:662:13 | ExprStmt | main.rs:662:9:662:9 | f | | +| main.rs:662:11:662:11 | 4 | main.rs:662:9:662:12 | f(...) | | +| main.rs:666:1:673:1 | enter fn structs | main.rs:667:5:667:36 | let ... = ... | | +| main.rs:666:1:673:1 | exit fn structs (normal) | main.rs:666:1:673:1 | exit fn structs | | +| main.rs:666:14:673:1 | { ... } | main.rs:666:1:673:1 | exit fn structs (normal) | | +| main.rs:667:5:667:36 | let ... = ... | main.rs:667:33:667:33 | 1 | | +| main.rs:667:9:667:13 | mut a | main.rs:668:5:668:26 | ExprStmt | match | +| main.rs:667:13:667:13 | a | main.rs:667:9:667:13 | mut a | | +| main.rs:667:17:667:35 | MyStruct {...} | main.rs:667:13:667:13 | a | | +| main.rs:667:33:667:33 | 1 | main.rs:667:17:667:35 | MyStruct {...} | | | main.rs:668:5:668:13 | print_i64 | main.rs:668:15:668:15 | a | | -| main.rs:668:5:668:19 | print_i64(...) | main.rs:669:5:669:18 | ExprStmt | | -| main.rs:668:5:668:20 | ExprStmt | main.rs:668:5:668:13 | print_i64 | | -| main.rs:668:15:668:15 | a | main.rs:668:17:668:17 | 1 | | -| main.rs:668:15:668:18 | a[1] | main.rs:668:5:668:19 | print_i64(...) | | -| main.rs:668:17:668:17 | 1 | main.rs:668:15:668:18 | a[1] | | -| main.rs:669:5:669:5 | a | main.rs:669:10:669:10 | 4 | | -| main.rs:669:5:669:17 | ... = ... | main.rs:670:5:670:20 | ExprStmt | | -| main.rs:669:5:669:18 | ExprStmt | main.rs:669:5:669:5 | a | | -| main.rs:669:9:669:17 | [...] | main.rs:669:5:669:17 | ... = ... | | -| main.rs:669:10:669:10 | 4 | main.rs:669:13:669:13 | 5 | | -| main.rs:669:13:669:13 | 5 | main.rs:669:16:669:16 | 6 | | -| main.rs:669:16:669:16 | 6 | main.rs:669:9:669:17 | [...] | | +| main.rs:668:5:668:25 | print_i64(...) | main.rs:669:5:669:14 | ExprStmt | | +| main.rs:668:5:668:26 | ExprStmt | main.rs:668:5:668:13 | print_i64 | | +| main.rs:668:15:668:15 | a | main.rs:668:15:668:24 | a.my_get() | | +| main.rs:668:15:668:24 | a.my_get() | main.rs:668:5:668:25 | print_i64(...) | | +| main.rs:669:5:669:5 | a | main.rs:669:5:669:9 | a.val | | +| main.rs:669:5:669:9 | a.val | main.rs:669:13:669:13 | 5 | | +| main.rs:669:5:669:13 | ... = ... | main.rs:670:5:670:26 | ExprStmt | | +| main.rs:669:5:669:14 | ExprStmt | main.rs:669:5:669:5 | a | | +| main.rs:669:13:669:13 | 5 | main.rs:669:5:669:13 | ... = ... | | | main.rs:670:5:670:13 | print_i64 | main.rs:670:15:670:15 | a | | -| main.rs:670:5:670:19 | print_i64(...) | main.rs:664:13:671:1 | { ... } | | -| main.rs:670:5:670:20 | ExprStmt | main.rs:670:5:670:13 | print_i64 | | -| main.rs:670:15:670:15 | a | main.rs:670:17:670:17 | 2 | | -| main.rs:670:15:670:18 | a[2] | main.rs:670:5:670:19 | print_i64(...) | | -| main.rs:670:17:670:17 | 2 | main.rs:670:15:670:18 | a[2] | | -| main.rs:673:1:680:1 | enter fn ref_arg | main.rs:674:5:674:15 | let ... = 16 | | -| main.rs:673:1:680:1 | exit fn ref_arg (normal) | main.rs:673:1:680:1 | exit fn ref_arg | | -| main.rs:673:14:680:1 | { ... } | main.rs:673:1:680:1 | exit fn ref_arg (normal) | | -| main.rs:674:5:674:15 | let ... = 16 | main.rs:674:13:674:14 | 16 | | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | | -| main.rs:674:9:674:9 | x | main.rs:675:5:675:22 | ExprStmt | match | -| main.rs:674:13:674:14 | 16 | main.rs:674:9:674:9 | x | | -| main.rs:675:5:675:17 | print_i64_ref | main.rs:675:20:675:20 | x | | -| main.rs:675:5:675:21 | print_i64_ref(...) | main.rs:676:5:676:17 | ExprStmt | | -| main.rs:675:5:675:22 | ExprStmt | main.rs:675:5:675:17 | print_i64_ref | | -| main.rs:675:19:675:20 | &x | main.rs:675:5:675:21 | print_i64_ref(...) | | -| main.rs:675:20:675:20 | x | main.rs:675:19:675:20 | &x | | -| main.rs:676:5:676:13 | print_i64 | main.rs:676:15:676:15 | x | | -| main.rs:676:5:676:16 | print_i64(...) | main.rs:678:5:678:15 | let ... = 17 | | -| main.rs:676:5:676:17 | ExprStmt | main.rs:676:5:676:13 | print_i64 | | -| main.rs:676:15:676:15 | x | main.rs:676:5:676:16 | print_i64(...) | | -| main.rs:678:5:678:15 | let ... = 17 | main.rs:678:13:678:14 | 17 | | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | | -| main.rs:678:9:678:9 | z | main.rs:679:5:679:22 | ExprStmt | match | -| main.rs:678:13:678:14 | 17 | main.rs:678:9:678:9 | z | | -| main.rs:679:5:679:17 | print_i64_ref | main.rs:679:20:679:20 | z | | -| main.rs:679:5:679:21 | print_i64_ref(...) | main.rs:673:14:680:1 | { ... } | | -| main.rs:679:5:679:22 | ExprStmt | main.rs:679:5:679:17 | print_i64_ref | | -| main.rs:679:19:679:20 | &z | main.rs:679:5:679:21 | print_i64_ref(...) | | -| main.rs:679:20:679:20 | z | main.rs:679:19:679:20 | &z | | -| main.rs:687:5:689:5 | enter fn bar | main.rs:687:17:687:20 | self | | -| main.rs:687:5:689:5 | exit fn bar (normal) | main.rs:687:5:689:5 | exit fn bar | | -| main.rs:687:12:687:20 | SelfParam | main.rs:688:9:688:36 | ExprStmt | | -| main.rs:687:17:687:20 | self | main.rs:687:12:687:20 | SelfParam | | -| main.rs:687:23:689:5 | { ... } | main.rs:687:5:689:5 | exit fn bar (normal) | | -| main.rs:688:9:688:13 | * ... | main.rs:688:33:688:33 | 3 | | -| main.rs:688:9:688:35 | ... = ... | main.rs:687:23:689:5 | { ... } | | -| main.rs:688:9:688:36 | ExprStmt | main.rs:688:10:688:13 | self | | -| main.rs:688:10:688:13 | self | main.rs:688:9:688:13 | * ... | | -| main.rs:688:17:688:35 | MyStruct {...} | main.rs:688:9:688:35 | ... = ... | | -| main.rs:688:33:688:33 | 3 | main.rs:688:17:688:35 | MyStruct {...} | | -| main.rs:692:1:698:1 | enter fn ref_methodcall_receiver | main.rs:693:5:693:36 | let ... = ... | | -| main.rs:692:1:698:1 | exit fn ref_methodcall_receiver (normal) | main.rs:692:1:698:1 | exit fn ref_methodcall_receiver | | -| main.rs:692:30:698:1 | { ... } | main.rs:692:1:698:1 | exit fn ref_methodcall_receiver (normal) | | -| main.rs:693:5:693:36 | let ... = ... | main.rs:693:33:693:33 | 1 | | -| main.rs:693:9:693:13 | mut a | main.rs:694:5:694:12 | ExprStmt | match | -| main.rs:693:13:693:13 | a | main.rs:693:9:693:13 | mut a | | -| main.rs:693:17:693:35 | MyStruct {...} | main.rs:693:13:693:13 | a | | -| main.rs:693:33:693:33 | 1 | main.rs:693:17:693:35 | MyStruct {...} | | -| main.rs:694:5:694:5 | a | main.rs:694:5:694:11 | a.bar() | | -| main.rs:694:5:694:11 | a.bar() | main.rs:697:5:697:21 | ExprStmt | | -| main.rs:694:5:694:12 | ExprStmt | main.rs:694:5:694:5 | a | | -| main.rs:697:5:697:13 | print_i64 | main.rs:697:15:697:15 | a | | -| main.rs:697:5:697:20 | print_i64(...) | main.rs:692:30:698:1 | { ... } | | -| main.rs:697:5:697:21 | ExprStmt | main.rs:697:5:697:13 | print_i64 | | -| main.rs:697:15:697:15 | a | main.rs:697:15:697:19 | a.val | | -| main.rs:697:15:697:19 | a.val | main.rs:697:5:697:20 | print_i64(...) | | -| main.rs:714:1:725:1 | enter fn macro_invocation | main.rs:715:5:716:26 | let ... = ... | | -| main.rs:714:1:725:1 | exit fn macro_invocation (normal) | main.rs:714:1:725:1 | exit fn macro_invocation | | -| main.rs:714:23:725:1 | { ... } | main.rs:714:1:725:1 | exit fn macro_invocation (normal) | | -| main.rs:715:5:716:26 | let ... = ... | main.rs:716:23:716:24 | let ... = 37 | | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | | -| main.rs:715:9:715:22 | var_from_macro | main.rs:717:5:717:30 | ExprStmt | match | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | match | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:23:716:24 | { ... } | | -| main.rs:716:9:716:25 | MacroExpr | main.rs:715:9:715:22 | var_from_macro | | -| main.rs:716:9:716:25 | let_in_macro!... | main.rs:716:9:716:25 | MacroExpr | | -| main.rs:716:23:716:24 | 37 | main.rs:716:9:716:21 | var_in_macro | | -| main.rs:716:23:716:24 | let ... = 37 | main.rs:716:23:716:24 | 37 | | -| main.rs:716:23:716:24 | { ... } | main.rs:716:9:716:25 | let_in_macro!... | | -| main.rs:717:5:717:13 | print_i64 | main.rs:717:15:717:28 | var_from_macro | | -| main.rs:717:5:717:29 | print_i64(...) | main.rs:718:5:718:26 | let ... = 33 | | -| main.rs:717:5:717:30 | ExprStmt | main.rs:717:5:717:13 | print_i64 | | -| main.rs:717:15:717:28 | var_from_macro | main.rs:717:5:717:29 | print_i64(...) | | -| main.rs:718:5:718:26 | let ... = 33 | main.rs:718:24:718:25 | 33 | | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | | -| main.rs:718:9:718:20 | var_in_macro | main.rs:723:5:723:44 | ExprStmt | match | -| main.rs:718:24:718:25 | 33 | main.rs:718:9:718:20 | var_in_macro | | -| main.rs:723:5:723:13 | print_i64 | main.rs:723:15:723:28 | let ... = 0 | | -| main.rs:723:5:723:43 | print_i64(...) | main.rs:724:5:724:28 | ExprStmt | | -| main.rs:723:5:723:44 | ExprStmt | main.rs:723:5:723:13 | print_i64 | | -| main.rs:723:15:723:28 | 0 | main.rs:723:15:723:28 | var_in_macro | | -| main.rs:723:15:723:28 | let ... = 0 | main.rs:723:15:723:28 | 0 | | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:30:723:41 | var_in_macro | match | -| main.rs:723:15:723:42 | MacroExpr | main.rs:723:5:723:43 | print_i64(...) | | -| main.rs:723:15:723:42 | let_in_macro2!... | main.rs:723:15:723:42 | MacroExpr | | -| main.rs:723:30:723:41 | var_in_macro | main.rs:723:30:723:41 | { ... } | | -| main.rs:723:30:723:41 | { ... } | main.rs:723:15:723:42 | let_in_macro2!... | | -| main.rs:724:5:724:13 | print_i64 | main.rs:724:15:724:26 | var_in_macro | | -| main.rs:724:5:724:27 | print_i64(...) | main.rs:714:23:725:1 | { ... } | | -| main.rs:724:5:724:28 | ExprStmt | main.rs:724:5:724:13 | print_i64 | | -| main.rs:724:15:724:26 | var_in_macro | main.rs:724:5:724:27 | print_i64(...) | | -| main.rs:727:1:731:1 | enter fn let_without_initializer | main.rs:728:5:728:10 | let ... | | -| main.rs:727:1:731:1 | exit fn let_without_initializer (normal) | main.rs:727:1:731:1 | exit fn let_without_initializer | | -| main.rs:727:30:731:1 | { ... } | main.rs:727:1:731:1 | exit fn let_without_initializer (normal) | | -| main.rs:728:5:728:10 | let ... | main.rs:728:9:728:9 | x | | -| main.rs:728:9:728:9 | x | main.rs:728:9:728:9 | x | | -| main.rs:728:9:728:9 | x | main.rs:729:5:729:10 | ExprStmt | match | -| main.rs:729:5:729:5 | x | main.rs:729:9:729:9 | 1 | | -| main.rs:729:5:729:9 | ... = ... | main.rs:730:5:730:17 | ExprStmt | | -| main.rs:729:5:729:10 | ExprStmt | main.rs:729:5:729:5 | x | | -| main.rs:729:9:729:9 | 1 | main.rs:729:5:729:9 | ... = ... | | -| main.rs:730:5:730:13 | print_i64 | main.rs:730:15:730:15 | x | | -| main.rs:730:5:730:16 | print_i64(...) | main.rs:727:30:731:1 | { ... } | | -| main.rs:730:5:730:17 | ExprStmt | main.rs:730:5:730:13 | print_i64 | | -| main.rs:730:15:730:15 | x | main.rs:730:5:730:16 | print_i64(...) | | -| main.rs:733:1:743:1 | enter fn capture_phi | main.rs:734:5:734:20 | let ... = 100 | | -| main.rs:733:1:743:1 | exit fn capture_phi (normal) | main.rs:733:1:743:1 | exit fn capture_phi | | -| main.rs:733:18:743:1 | { ... } | main.rs:733:1:743:1 | exit fn capture_phi (normal) | | -| main.rs:734:5:734:20 | let ... = 100 | main.rs:734:17:734:19 | 100 | | -| main.rs:734:9:734:13 | mut x | main.rs:735:5:740:6 | let ... = ... | match | -| main.rs:734:13:734:13 | x | main.rs:734:9:734:13 | mut x | | -| main.rs:734:17:734:19 | 100 | main.rs:734:13:734:13 | x | | -| main.rs:735:5:740:6 | let ... = ... | main.rs:735:19:740:5 | \|...\| ... | | -| main.rs:735:9:735:15 | mut cap | main.rs:741:5:741:14 | ExprStmt | match | -| main.rs:735:13:735:15 | cap | main.rs:735:9:735:15 | mut cap | | -| main.rs:735:19:740:5 | \|...\| ... | main.rs:735:13:735:15 | cap | | -| main.rs:735:19:740:5 | enter \|...\| ... | main.rs:735:20:735:20 | b | | -| main.rs:735:19:740:5 | exit \|...\| ... (normal) | main.rs:735:19:740:5 | exit \|...\| ... | | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:26 | ...: bool | match | -| main.rs:735:20:735:26 | ...: bool | main.rs:736:9:739:10 | let _ = ... | | -| main.rs:735:29:740:5 | { ... } | main.rs:735:19:740:5 | exit \|...\| ... (normal) | | -| main.rs:736:9:739:10 | let _ = ... | main.rs:737:20:737:20 | b | | -| main.rs:737:13:737:13 | _ | main.rs:735:29:740:5 | { ... } | match | -| main.rs:737:17:739:9 | if b {...} | main.rs:737:13:737:13 | _ | | -| main.rs:737:20:737:20 | b | main.rs:737:17:739:9 | if b {...} | false | -| main.rs:737:20:737:20 | b | main.rs:738:13:738:20 | ExprStmt | true | -| main.rs:737:22:739:9 | { ... } | main.rs:737:17:739:9 | if b {...} | | -| main.rs:738:13:738:13 | x | main.rs:738:17:738:19 | 200 | | -| main.rs:738:13:738:19 | ... = ... | main.rs:737:22:739:9 | { ... } | | -| main.rs:738:13:738:20 | ExprStmt | main.rs:738:13:738:13 | x | | -| main.rs:738:17:738:19 | 200 | main.rs:738:13:738:19 | ... = ... | | -| main.rs:741:5:741:7 | cap | main.rs:741:9:741:12 | true | | -| main.rs:741:5:741:13 | cap(...) | main.rs:742:5:742:17 | ExprStmt | | -| main.rs:741:5:741:14 | ExprStmt | main.rs:741:5:741:7 | cap | | -| main.rs:741:9:741:12 | true | main.rs:741:5:741:13 | cap(...) | | -| main.rs:742:5:742:13 | print_i64 | main.rs:742:15:742:15 | x | | -| main.rs:742:5:742:16 | print_i64(...) | main.rs:733:18:743:1 | { ... } | | -| main.rs:742:5:742:17 | ExprStmt | main.rs:742:5:742:13 | print_i64 | | -| main.rs:742:15:742:15 | x | main.rs:742:5:742:16 | print_i64(...) | | -| main.rs:745:1:788:1 | enter fn main | main.rs:746:5:746:25 | ExprStmt | | -| main.rs:745:1:788:1 | exit fn main (normal) | main.rs:745:1:788:1 | exit fn main | | -| main.rs:745:11:788:1 | { ... } | main.rs:745:1:788:1 | exit fn main (normal) | | -| main.rs:746:5:746:22 | immutable_variable | main.rs:746:5:746:24 | immutable_variable(...) | | -| main.rs:746:5:746:24 | immutable_variable(...) | main.rs:747:5:747:23 | ExprStmt | | -| main.rs:746:5:746:25 | ExprStmt | main.rs:746:5:746:22 | immutable_variable | | -| main.rs:747:5:747:20 | mutable_variable | main.rs:747:5:747:22 | mutable_variable(...) | | -| main.rs:747:5:747:22 | mutable_variable(...) | main.rs:748:5:748:40 | ExprStmt | | -| main.rs:747:5:747:23 | ExprStmt | main.rs:747:5:747:20 | mutable_variable | | -| main.rs:748:5:748:37 | mutable_variable_immutable_borrow | main.rs:748:5:748:39 | mutable_variable_immutable_borrow(...) | | -| main.rs:748:5:748:39 | mutable_variable_immutable_borrow(...) | main.rs:749:5:749:23 | ExprStmt | | -| main.rs:748:5:748:40 | ExprStmt | main.rs:748:5:748:37 | mutable_variable_immutable_borrow | | -| main.rs:749:5:749:20 | variable_shadow1 | main.rs:749:5:749:22 | variable_shadow1(...) | | -| main.rs:749:5:749:22 | variable_shadow1(...) | main.rs:750:5:750:23 | ExprStmt | | -| main.rs:749:5:749:23 | ExprStmt | main.rs:749:5:749:20 | variable_shadow1 | | -| main.rs:750:5:750:20 | variable_shadow2 | main.rs:750:5:750:22 | variable_shadow2(...) | | -| main.rs:750:5:750:22 | variable_shadow2(...) | main.rs:751:5:751:19 | ExprStmt | | -| main.rs:750:5:750:23 | ExprStmt | main.rs:750:5:750:20 | variable_shadow2 | | -| main.rs:751:5:751:16 | let_pattern1 | main.rs:751:5:751:18 | let_pattern1(...) | | -| main.rs:751:5:751:18 | let_pattern1(...) | main.rs:752:5:752:19 | ExprStmt | | -| main.rs:751:5:751:19 | ExprStmt | main.rs:751:5:751:16 | let_pattern1 | | -| main.rs:752:5:752:16 | let_pattern2 | main.rs:752:5:752:18 | let_pattern2(...) | | -| main.rs:752:5:752:18 | let_pattern2(...) | main.rs:753:5:753:19 | ExprStmt | | -| main.rs:752:5:752:19 | ExprStmt | main.rs:752:5:752:16 | let_pattern2 | | -| main.rs:753:5:753:16 | let_pattern3 | main.rs:753:5:753:18 | let_pattern3(...) | | -| main.rs:753:5:753:18 | let_pattern3(...) | main.rs:754:5:754:19 | ExprStmt | | -| main.rs:753:5:753:19 | ExprStmt | main.rs:753:5:753:16 | let_pattern3 | | -| main.rs:754:5:754:16 | let_pattern4 | main.rs:754:5:754:18 | let_pattern4(...) | | -| main.rs:754:5:754:18 | let_pattern4(...) | main.rs:755:5:755:21 | ExprStmt | | -| main.rs:754:5:754:19 | ExprStmt | main.rs:754:5:754:16 | let_pattern4 | | -| main.rs:755:5:755:18 | match_pattern1 | main.rs:755:5:755:20 | match_pattern1(...) | | -| main.rs:755:5:755:20 | match_pattern1(...) | main.rs:756:5:756:21 | ExprStmt | | -| main.rs:755:5:755:21 | ExprStmt | main.rs:755:5:755:18 | match_pattern1 | | -| main.rs:756:5:756:18 | match_pattern2 | main.rs:756:5:756:20 | match_pattern2(...) | | -| main.rs:756:5:756:20 | match_pattern2(...) | main.rs:757:5:757:21 | ExprStmt | | -| main.rs:756:5:756:21 | ExprStmt | main.rs:756:5:756:18 | match_pattern2 | | -| main.rs:757:5:757:18 | match_pattern3 | main.rs:757:5:757:20 | match_pattern3(...) | | -| main.rs:757:5:757:20 | match_pattern3(...) | main.rs:758:5:758:21 | ExprStmt | | -| main.rs:757:5:757:21 | ExprStmt | main.rs:757:5:757:18 | match_pattern3 | | -| main.rs:758:5:758:18 | match_pattern4 | main.rs:758:5:758:20 | match_pattern4(...) | | -| main.rs:758:5:758:20 | match_pattern4(...) | main.rs:759:5:759:21 | ExprStmt | | -| main.rs:758:5:758:21 | ExprStmt | main.rs:758:5:758:18 | match_pattern4 | | -| main.rs:759:5:759:18 | match_pattern5 | main.rs:759:5:759:20 | match_pattern5(...) | | -| main.rs:759:5:759:20 | match_pattern5(...) | main.rs:760:5:760:21 | ExprStmt | | -| main.rs:759:5:759:21 | ExprStmt | main.rs:759:5:759:18 | match_pattern5 | | -| main.rs:760:5:760:18 | match_pattern6 | main.rs:760:5:760:20 | match_pattern6(...) | | -| main.rs:760:5:760:20 | match_pattern6(...) | main.rs:761:5:761:21 | ExprStmt | | -| main.rs:760:5:760:21 | ExprStmt | main.rs:760:5:760:18 | match_pattern6 | | -| main.rs:761:5:761:18 | match_pattern7 | main.rs:761:5:761:20 | match_pattern7(...) | | -| main.rs:761:5:761:20 | match_pattern7(...) | main.rs:762:5:762:21 | ExprStmt | | -| main.rs:761:5:761:21 | ExprStmt | main.rs:761:5:761:18 | match_pattern7 | | -| main.rs:762:5:762:18 | match_pattern8 | main.rs:762:5:762:20 | match_pattern8(...) | | -| main.rs:762:5:762:20 | match_pattern8(...) | main.rs:763:5:763:21 | ExprStmt | | -| main.rs:762:5:762:21 | ExprStmt | main.rs:762:5:762:18 | match_pattern8 | | -| main.rs:763:5:763:18 | match_pattern9 | main.rs:763:5:763:20 | match_pattern9(...) | | -| main.rs:763:5:763:20 | match_pattern9(...) | main.rs:764:5:764:22 | ExprStmt | | -| main.rs:763:5:763:21 | ExprStmt | main.rs:763:5:763:18 | match_pattern9 | | -| main.rs:764:5:764:19 | match_pattern10 | main.rs:764:5:764:21 | match_pattern10(...) | | -| main.rs:764:5:764:21 | match_pattern10(...) | main.rs:765:5:765:22 | ExprStmt | | -| main.rs:764:5:764:22 | ExprStmt | main.rs:764:5:764:19 | match_pattern10 | | -| main.rs:765:5:765:19 | match_pattern11 | main.rs:765:5:765:21 | match_pattern11(...) | | -| main.rs:765:5:765:21 | match_pattern11(...) | main.rs:766:5:766:22 | ExprStmt | | -| main.rs:765:5:765:22 | ExprStmt | main.rs:765:5:765:19 | match_pattern11 | | -| main.rs:766:5:766:19 | match_pattern12 | main.rs:766:5:766:21 | match_pattern12(...) | | -| main.rs:766:5:766:21 | match_pattern12(...) | main.rs:767:5:767:22 | ExprStmt | | -| main.rs:766:5:766:22 | ExprStmt | main.rs:766:5:766:19 | match_pattern12 | | -| main.rs:767:5:767:19 | match_pattern13 | main.rs:767:5:767:21 | match_pattern13(...) | | -| main.rs:767:5:767:21 | match_pattern13(...) | main.rs:768:5:768:22 | ExprStmt | | -| main.rs:767:5:767:22 | ExprStmt | main.rs:767:5:767:19 | match_pattern13 | | -| main.rs:768:5:768:19 | match_pattern14 | main.rs:768:5:768:21 | match_pattern14(...) | | -| main.rs:768:5:768:21 | match_pattern14(...) | main.rs:769:5:769:22 | ExprStmt | | -| main.rs:768:5:768:22 | ExprStmt | main.rs:768:5:768:19 | match_pattern14 | | -| main.rs:769:5:769:19 | match_pattern15 | main.rs:769:5:769:21 | match_pattern15(...) | | -| main.rs:769:5:769:21 | match_pattern15(...) | main.rs:770:5:770:36 | ExprStmt | | -| main.rs:769:5:769:22 | ExprStmt | main.rs:769:5:769:19 | match_pattern15 | | -| main.rs:770:5:770:18 | param_pattern1 | main.rs:770:20:770:22 | "a" | | -| main.rs:770:5:770:35 | param_pattern1(...) | main.rs:771:5:771:37 | ExprStmt | | -| main.rs:770:5:770:36 | ExprStmt | main.rs:770:5:770:18 | param_pattern1 | | -| main.rs:770:20:770:22 | "a" | main.rs:770:26:770:28 | "b" | | -| main.rs:770:25:770:34 | TupleExpr | main.rs:770:5:770:35 | param_pattern1(...) | | -| main.rs:770:26:770:28 | "b" | main.rs:770:31:770:33 | "c" | | -| main.rs:770:31:770:33 | "c" | main.rs:770:25:770:34 | TupleExpr | | -| main.rs:771:5:771:18 | param_pattern2 | main.rs:771:20:771:31 | ...::Left | | -| main.rs:771:5:771:36 | param_pattern2(...) | main.rs:772:5:772:26 | ExprStmt | | -| main.rs:771:5:771:37 | ExprStmt | main.rs:771:5:771:18 | param_pattern2 | | -| main.rs:771:20:771:31 | ...::Left | main.rs:771:33:771:34 | 45 | | -| main.rs:771:20:771:35 | ...::Left(...) | main.rs:771:5:771:36 | param_pattern2(...) | | -| main.rs:771:33:771:34 | 45 | main.rs:771:20:771:35 | ...::Left(...) | | -| main.rs:772:5:772:23 | destruct_assignment | main.rs:772:5:772:25 | destruct_assignment(...) | | -| main.rs:772:5:772:25 | destruct_assignment(...) | main.rs:773:5:773:23 | ExprStmt | | -| main.rs:772:5:772:26 | ExprStmt | main.rs:772:5:772:23 | destruct_assignment | | -| main.rs:773:5:773:20 | closure_variable | main.rs:773:5:773:22 | closure_variable(...) | | -| main.rs:773:5:773:22 | closure_variable(...) | main.rs:774:5:774:22 | ExprStmt | | -| main.rs:773:5:773:23 | ExprStmt | main.rs:773:5:773:20 | closure_variable | | -| main.rs:774:5:774:19 | nested_function | main.rs:774:5:774:21 | nested_function(...) | | -| main.rs:774:5:774:21 | nested_function(...) | main.rs:775:5:775:19 | ExprStmt | | -| main.rs:774:5:774:22 | ExprStmt | main.rs:774:5:774:19 | nested_function | | -| main.rs:775:5:775:16 | for_variable | main.rs:775:5:775:18 | for_variable(...) | | -| main.rs:775:5:775:18 | for_variable(...) | main.rs:776:5:776:17 | ExprStmt | | -| main.rs:775:5:775:19 | ExprStmt | main.rs:775:5:775:16 | for_variable | | -| main.rs:776:5:776:14 | add_assign | main.rs:776:5:776:16 | add_assign(...) | | -| main.rs:776:5:776:16 | add_assign(...) | main.rs:777:5:777:13 | ExprStmt | | -| main.rs:776:5:776:17 | ExprStmt | main.rs:776:5:776:14 | add_assign | | -| main.rs:777:5:777:10 | mutate | main.rs:777:5:777:12 | mutate(...) | | -| main.rs:777:5:777:12 | mutate(...) | main.rs:778:5:778:17 | ExprStmt | | -| main.rs:777:5:777:13 | ExprStmt | main.rs:777:5:777:10 | mutate | | -| main.rs:778:5:778:14 | mutate_arg | main.rs:778:5:778:16 | mutate_arg(...) | | -| main.rs:778:5:778:16 | mutate_arg(...) | main.rs:779:5:779:12 | ExprStmt | | -| main.rs:778:5:778:17 | ExprStmt | main.rs:778:5:778:14 | mutate_arg | | -| main.rs:779:5:779:9 | alias | main.rs:779:5:779:11 | alias(...) | | -| main.rs:779:5:779:11 | alias(...) | main.rs:780:5:780:18 | ExprStmt | | -| main.rs:779:5:779:12 | ExprStmt | main.rs:779:5:779:9 | alias | | -| main.rs:780:5:780:15 | capture_mut | main.rs:780:5:780:17 | capture_mut(...) | | -| main.rs:780:5:780:17 | capture_mut(...) | main.rs:781:5:781:20 | ExprStmt | | -| main.rs:780:5:780:18 | ExprStmt | main.rs:780:5:780:15 | capture_mut | | -| main.rs:781:5:781:17 | capture_immut | main.rs:781:5:781:19 | capture_immut(...) | | -| main.rs:781:5:781:19 | capture_immut(...) | main.rs:782:5:782:26 | ExprStmt | | -| main.rs:781:5:781:20 | ExprStmt | main.rs:781:5:781:17 | capture_immut | | -| main.rs:782:5:782:23 | async_block_capture | main.rs:782:5:782:25 | async_block_capture(...) | | -| main.rs:782:5:782:25 | async_block_capture(...) | main.rs:783:5:783:14 | ExprStmt | | -| main.rs:782:5:782:26 | ExprStmt | main.rs:782:5:782:23 | async_block_capture | | -| main.rs:783:5:783:11 | structs | main.rs:783:5:783:13 | structs(...) | | -| main.rs:783:5:783:13 | structs(...) | main.rs:784:5:784:14 | ExprStmt | | -| main.rs:783:5:783:14 | ExprStmt | main.rs:783:5:783:11 | structs | | -| main.rs:784:5:784:11 | ref_arg | main.rs:784:5:784:13 | ref_arg(...) | | -| main.rs:784:5:784:13 | ref_arg(...) | main.rs:785:5:785:30 | ExprStmt | | -| main.rs:784:5:784:14 | ExprStmt | main.rs:784:5:784:11 | ref_arg | | -| main.rs:785:5:785:27 | ref_methodcall_receiver | main.rs:785:5:785:29 | ref_methodcall_receiver(...) | | -| main.rs:785:5:785:29 | ref_methodcall_receiver(...) | main.rs:786:5:786:23 | ExprStmt | | -| main.rs:785:5:785:30 | ExprStmt | main.rs:785:5:785:27 | ref_methodcall_receiver | | -| main.rs:786:5:786:20 | macro_invocation | main.rs:786:5:786:22 | macro_invocation(...) | | -| main.rs:786:5:786:22 | macro_invocation(...) | main.rs:787:5:787:18 | ExprStmt | | -| main.rs:786:5:786:23 | ExprStmt | main.rs:786:5:786:20 | macro_invocation | | -| main.rs:787:5:787:15 | capture_phi | main.rs:787:5:787:17 | capture_phi(...) | | -| main.rs:787:5:787:17 | capture_phi(...) | main.rs:745:11:788:1 | { ... } | | -| main.rs:787:5:787:18 | ExprStmt | main.rs:787:5:787:15 | capture_phi | | +| main.rs:670:5:670:25 | print_i64(...) | main.rs:671:5:671:28 | ExprStmt | | +| main.rs:670:5:670:26 | ExprStmt | main.rs:670:5:670:13 | print_i64 | | +| main.rs:670:15:670:15 | a | main.rs:670:15:670:24 | a.my_get() | | +| main.rs:670:15:670:24 | a.my_get() | main.rs:670:5:670:25 | print_i64(...) | | +| main.rs:671:5:671:5 | a | main.rs:671:25:671:25 | 2 | | +| main.rs:671:5:671:27 | ... = ... | main.rs:672:5:672:26 | ExprStmt | | +| main.rs:671:5:671:28 | ExprStmt | main.rs:671:5:671:5 | a | | +| main.rs:671:9:671:27 | MyStruct {...} | main.rs:671:5:671:27 | ... = ... | | +| main.rs:671:25:671:25 | 2 | main.rs:671:9:671:27 | MyStruct {...} | | +| main.rs:672:5:672:13 | print_i64 | main.rs:672:15:672:15 | a | | +| main.rs:672:5:672:25 | print_i64(...) | main.rs:666:14:673:1 | { ... } | | +| main.rs:672:5:672:26 | ExprStmt | main.rs:672:5:672:13 | print_i64 | | +| main.rs:672:15:672:15 | a | main.rs:672:15:672:24 | a.my_get() | | +| main.rs:672:15:672:24 | a.my_get() | main.rs:672:5:672:25 | print_i64(...) | | +| main.rs:675:1:682:1 | enter fn arrays | main.rs:676:5:676:26 | let ... = ... | | +| main.rs:675:1:682:1 | exit fn arrays (normal) | main.rs:675:1:682:1 | exit fn arrays | | +| main.rs:675:13:682:1 | { ... } | main.rs:675:1:682:1 | exit fn arrays (normal) | | +| main.rs:676:5:676:26 | let ... = ... | main.rs:676:18:676:18 | 1 | | +| main.rs:676:9:676:13 | mut a | main.rs:677:5:677:20 | ExprStmt | match | +| main.rs:676:13:676:13 | a | main.rs:676:9:676:13 | mut a | | +| main.rs:676:17:676:25 | [...] | main.rs:676:13:676:13 | a | | +| main.rs:676:18:676:18 | 1 | main.rs:676:21:676:21 | 2 | | +| main.rs:676:21:676:21 | 2 | main.rs:676:24:676:24 | 3 | | +| main.rs:676:24:676:24 | 3 | main.rs:676:17:676:25 | [...] | | +| main.rs:677:5:677:13 | print_i64 | main.rs:677:15:677:15 | a | | +| main.rs:677:5:677:19 | print_i64(...) | main.rs:678:5:678:13 | ExprStmt | | +| main.rs:677:5:677:20 | ExprStmt | main.rs:677:5:677:13 | print_i64 | | +| main.rs:677:15:677:15 | a | main.rs:677:17:677:17 | 0 | | +| main.rs:677:15:677:18 | a[0] | main.rs:677:5:677:19 | print_i64(...) | | +| main.rs:677:17:677:17 | 0 | main.rs:677:15:677:18 | a[0] | | +| main.rs:678:5:678:5 | a | main.rs:678:7:678:7 | 1 | | +| main.rs:678:5:678:8 | a[1] | main.rs:678:12:678:12 | 5 | | +| main.rs:678:5:678:12 | ... = ... | main.rs:679:5:679:20 | ExprStmt | | +| main.rs:678:5:678:13 | ExprStmt | main.rs:678:5:678:5 | a | | +| main.rs:678:7:678:7 | 1 | main.rs:678:5:678:8 | a[1] | | +| main.rs:678:12:678:12 | 5 | main.rs:678:5:678:12 | ... = ... | | +| main.rs:679:5:679:13 | print_i64 | main.rs:679:15:679:15 | a | | +| main.rs:679:5:679:19 | print_i64(...) | main.rs:680:5:680:18 | ExprStmt | | +| main.rs:679:5:679:20 | ExprStmt | main.rs:679:5:679:13 | print_i64 | | +| main.rs:679:15:679:15 | a | main.rs:679:17:679:17 | 1 | | +| main.rs:679:15:679:18 | a[1] | main.rs:679:5:679:19 | print_i64(...) | | +| main.rs:679:17:679:17 | 1 | main.rs:679:15:679:18 | a[1] | | +| main.rs:680:5:680:5 | a | main.rs:680:10:680:10 | 4 | | +| main.rs:680:5:680:17 | ... = ... | main.rs:681:5:681:20 | ExprStmt | | +| main.rs:680:5:680:18 | ExprStmt | main.rs:680:5:680:5 | a | | +| main.rs:680:9:680:17 | [...] | main.rs:680:5:680:17 | ... = ... | | +| main.rs:680:10:680:10 | 4 | main.rs:680:13:680:13 | 5 | | +| main.rs:680:13:680:13 | 5 | main.rs:680:16:680:16 | 6 | | +| main.rs:680:16:680:16 | 6 | main.rs:680:9:680:17 | [...] | | +| main.rs:681:5:681:13 | print_i64 | main.rs:681:15:681:15 | a | | +| main.rs:681:5:681:19 | print_i64(...) | main.rs:675:13:682:1 | { ... } | | +| main.rs:681:5:681:20 | ExprStmt | main.rs:681:5:681:13 | print_i64 | | +| main.rs:681:15:681:15 | a | main.rs:681:17:681:17 | 2 | | +| main.rs:681:15:681:18 | a[2] | main.rs:681:5:681:19 | print_i64(...) | | +| main.rs:681:17:681:17 | 2 | main.rs:681:15:681:18 | a[2] | | +| main.rs:684:1:691:1 | enter fn ref_arg | main.rs:685:5:685:15 | let ... = 16 | | +| main.rs:684:1:691:1 | exit fn ref_arg (normal) | main.rs:684:1:691:1 | exit fn ref_arg | | +| main.rs:684:14:691:1 | { ... } | main.rs:684:1:691:1 | exit fn ref_arg (normal) | | +| main.rs:685:5:685:15 | let ... = 16 | main.rs:685:13:685:14 | 16 | | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | | +| main.rs:685:9:685:9 | x | main.rs:686:5:686:22 | ExprStmt | match | +| main.rs:685:13:685:14 | 16 | main.rs:685:9:685:9 | x | | +| main.rs:686:5:686:17 | print_i64_ref | main.rs:686:20:686:20 | x | | +| main.rs:686:5:686:21 | print_i64_ref(...) | main.rs:687:5:687:17 | ExprStmt | | +| main.rs:686:5:686:22 | ExprStmt | main.rs:686:5:686:17 | print_i64_ref | | +| main.rs:686:19:686:20 | &x | main.rs:686:5:686:21 | print_i64_ref(...) | | +| main.rs:686:20:686:20 | x | main.rs:686:19:686:20 | &x | | +| main.rs:687:5:687:13 | print_i64 | main.rs:687:15:687:15 | x | | +| main.rs:687:5:687:16 | print_i64(...) | main.rs:689:5:689:15 | let ... = 17 | | +| main.rs:687:5:687:17 | ExprStmt | main.rs:687:5:687:13 | print_i64 | | +| main.rs:687:15:687:15 | x | main.rs:687:5:687:16 | print_i64(...) | | +| main.rs:689:5:689:15 | let ... = 17 | main.rs:689:13:689:14 | 17 | | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | | +| main.rs:689:9:689:9 | z | main.rs:690:5:690:22 | ExprStmt | match | +| main.rs:689:13:689:14 | 17 | main.rs:689:9:689:9 | z | | +| main.rs:690:5:690:17 | print_i64_ref | main.rs:690:20:690:20 | z | | +| main.rs:690:5:690:21 | print_i64_ref(...) | main.rs:684:14:691:1 | { ... } | | +| main.rs:690:5:690:22 | ExprStmt | main.rs:690:5:690:17 | print_i64_ref | | +| main.rs:690:19:690:20 | &z | main.rs:690:5:690:21 | print_i64_ref(...) | | +| main.rs:690:20:690:20 | z | main.rs:690:19:690:20 | &z | | +| main.rs:698:5:700:5 | enter fn bar | main.rs:698:17:698:20 | self | | +| main.rs:698:5:700:5 | exit fn bar (normal) | main.rs:698:5:700:5 | exit fn bar | | +| main.rs:698:12:698:20 | SelfParam | main.rs:699:9:699:36 | ExprStmt | | +| main.rs:698:17:698:20 | self | main.rs:698:12:698:20 | SelfParam | | +| main.rs:698:23:700:5 | { ... } | main.rs:698:5:700:5 | exit fn bar (normal) | | +| main.rs:699:9:699:13 | * ... | main.rs:699:33:699:33 | 3 | | +| main.rs:699:9:699:35 | ... = ... | main.rs:698:23:700:5 | { ... } | | +| main.rs:699:9:699:36 | ExprStmt | main.rs:699:10:699:13 | self | | +| main.rs:699:10:699:13 | self | main.rs:699:9:699:13 | * ... | | +| main.rs:699:17:699:35 | MyStruct {...} | main.rs:699:9:699:35 | ... = ... | | +| main.rs:699:33:699:33 | 3 | main.rs:699:17:699:35 | MyStruct {...} | | +| main.rs:703:1:709:1 | enter fn ref_methodcall_receiver | main.rs:704:5:704:36 | let ... = ... | | +| main.rs:703:1:709:1 | exit fn ref_methodcall_receiver (normal) | main.rs:703:1:709:1 | exit fn ref_methodcall_receiver | | +| main.rs:703:30:709:1 | { ... } | main.rs:703:1:709:1 | exit fn ref_methodcall_receiver (normal) | | +| main.rs:704:5:704:36 | let ... = ... | main.rs:704:33:704:33 | 1 | | +| main.rs:704:9:704:13 | mut a | main.rs:705:5:705:12 | ExprStmt | match | +| main.rs:704:13:704:13 | a | main.rs:704:9:704:13 | mut a | | +| main.rs:704:17:704:35 | MyStruct {...} | main.rs:704:13:704:13 | a | | +| main.rs:704:33:704:33 | 1 | main.rs:704:17:704:35 | MyStruct {...} | | +| main.rs:705:5:705:5 | a | main.rs:705:5:705:11 | a.bar() | | +| main.rs:705:5:705:11 | a.bar() | main.rs:708:5:708:21 | ExprStmt | | +| main.rs:705:5:705:12 | ExprStmt | main.rs:705:5:705:5 | a | | +| main.rs:708:5:708:13 | print_i64 | main.rs:708:15:708:15 | a | | +| main.rs:708:5:708:20 | print_i64(...) | main.rs:703:30:709:1 | { ... } | | +| main.rs:708:5:708:21 | ExprStmt | main.rs:708:5:708:13 | print_i64 | | +| main.rs:708:15:708:15 | a | main.rs:708:15:708:19 | a.val | | +| main.rs:708:15:708:19 | a.val | main.rs:708:5:708:20 | print_i64(...) | | +| main.rs:725:1:736:1 | enter fn macro_invocation | main.rs:726:5:727:26 | let ... = ... | | +| main.rs:725:1:736:1 | exit fn macro_invocation (normal) | main.rs:725:1:736:1 | exit fn macro_invocation | | +| main.rs:725:23:736:1 | { ... } | main.rs:725:1:736:1 | exit fn macro_invocation (normal) | | +| main.rs:726:5:727:26 | let ... = ... | main.rs:727:23:727:24 | let ... = 37 | | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | | +| main.rs:726:9:726:22 | var_from_macro | main.rs:728:5:728:30 | ExprStmt | match | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | match | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:23:727:24 | { ... } | | +| main.rs:727:9:727:25 | MacroExpr | main.rs:726:9:726:22 | var_from_macro | | +| main.rs:727:9:727:25 | let_in_macro!... | main.rs:727:9:727:25 | MacroExpr | | +| main.rs:727:23:727:24 | 37 | main.rs:727:9:727:21 | var_in_macro | | +| main.rs:727:23:727:24 | let ... = 37 | main.rs:727:23:727:24 | 37 | | +| main.rs:727:23:727:24 | { ... } | main.rs:727:9:727:25 | let_in_macro!... | | +| main.rs:728:5:728:13 | print_i64 | main.rs:728:15:728:28 | var_from_macro | | +| main.rs:728:5:728:29 | print_i64(...) | main.rs:729:5:729:26 | let ... = 33 | | +| main.rs:728:5:728:30 | ExprStmt | main.rs:728:5:728:13 | print_i64 | | +| main.rs:728:15:728:28 | var_from_macro | main.rs:728:5:728:29 | print_i64(...) | | +| main.rs:729:5:729:26 | let ... = 33 | main.rs:729:24:729:25 | 33 | | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | | +| main.rs:729:9:729:20 | var_in_macro | main.rs:734:5:734:44 | ExprStmt | match | +| main.rs:729:24:729:25 | 33 | main.rs:729:9:729:20 | var_in_macro | | +| main.rs:734:5:734:13 | print_i64 | main.rs:734:15:734:28 | let ... = 0 | | +| main.rs:734:5:734:43 | print_i64(...) | main.rs:735:5:735:28 | ExprStmt | | +| main.rs:734:5:734:44 | ExprStmt | main.rs:734:5:734:13 | print_i64 | | +| main.rs:734:15:734:28 | 0 | main.rs:734:15:734:28 | var_in_macro | | +| main.rs:734:15:734:28 | let ... = 0 | main.rs:734:15:734:28 | 0 | | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:30:734:41 | var_in_macro | match | +| main.rs:734:15:734:42 | MacroExpr | main.rs:734:5:734:43 | print_i64(...) | | +| main.rs:734:15:734:42 | let_in_macro2!... | main.rs:734:15:734:42 | MacroExpr | | +| main.rs:734:30:734:41 | var_in_macro | main.rs:734:30:734:41 | { ... } | | +| main.rs:734:30:734:41 | { ... } | main.rs:734:15:734:42 | let_in_macro2!... | | +| main.rs:735:5:735:13 | print_i64 | main.rs:735:15:735:26 | var_in_macro | | +| main.rs:735:5:735:27 | print_i64(...) | main.rs:725:23:736:1 | { ... } | | +| main.rs:735:5:735:28 | ExprStmt | main.rs:735:5:735:13 | print_i64 | | +| main.rs:735:15:735:26 | var_in_macro | main.rs:735:5:735:27 | print_i64(...) | | +| main.rs:738:1:742:1 | enter fn let_without_initializer | main.rs:739:5:739:10 | let ... | | +| main.rs:738:1:742:1 | exit fn let_without_initializer (normal) | main.rs:738:1:742:1 | exit fn let_without_initializer | | +| main.rs:738:30:742:1 | { ... } | main.rs:738:1:742:1 | exit fn let_without_initializer (normal) | | +| main.rs:739:5:739:10 | let ... | main.rs:739:9:739:9 | x | | +| main.rs:739:9:739:9 | x | main.rs:739:9:739:9 | x | | +| main.rs:739:9:739:9 | x | main.rs:740:5:740:10 | ExprStmt | match | +| main.rs:740:5:740:5 | x | main.rs:740:9:740:9 | 1 | | +| main.rs:740:5:740:9 | ... = ... | main.rs:741:5:741:17 | ExprStmt | | +| main.rs:740:5:740:10 | ExprStmt | main.rs:740:5:740:5 | x | | +| main.rs:740:9:740:9 | 1 | main.rs:740:5:740:9 | ... = ... | | +| main.rs:741:5:741:13 | print_i64 | main.rs:741:15:741:15 | x | | +| main.rs:741:5:741:16 | print_i64(...) | main.rs:738:30:742:1 | { ... } | | +| main.rs:741:5:741:17 | ExprStmt | main.rs:741:5:741:13 | print_i64 | | +| main.rs:741:15:741:15 | x | main.rs:741:5:741:16 | print_i64(...) | | +| main.rs:744:1:754:1 | enter fn capture_phi | main.rs:745:5:745:20 | let ... = 100 | | +| main.rs:744:1:754:1 | exit fn capture_phi (normal) | main.rs:744:1:754:1 | exit fn capture_phi | | +| main.rs:744:18:754:1 | { ... } | main.rs:744:1:754:1 | exit fn capture_phi (normal) | | +| main.rs:745:5:745:20 | let ... = 100 | main.rs:745:17:745:19 | 100 | | +| main.rs:745:9:745:13 | mut x | main.rs:746:5:751:6 | let ... = ... | match | +| main.rs:745:13:745:13 | x | main.rs:745:9:745:13 | mut x | | +| main.rs:745:17:745:19 | 100 | main.rs:745:13:745:13 | x | | +| main.rs:746:5:751:6 | let ... = ... | main.rs:746:19:751:5 | \|...\| ... | | +| main.rs:746:9:746:15 | mut cap | main.rs:752:5:752:14 | ExprStmt | match | +| main.rs:746:13:746:15 | cap | main.rs:746:9:746:15 | mut cap | | +| main.rs:746:19:751:5 | \|...\| ... | main.rs:746:13:746:15 | cap | | +| main.rs:746:19:751:5 | enter \|...\| ... | main.rs:746:20:746:20 | b | | +| main.rs:746:19:751:5 | exit \|...\| ... (normal) | main.rs:746:19:751:5 | exit \|...\| ... | | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:26 | ...: bool | match | +| main.rs:746:20:746:26 | ...: bool | main.rs:747:9:750:10 | let _ = ... | | +| main.rs:746:29:751:5 | { ... } | main.rs:746:19:751:5 | exit \|...\| ... (normal) | | +| main.rs:747:9:750:10 | let _ = ... | main.rs:748:20:748:20 | b | | +| main.rs:748:13:748:13 | _ | main.rs:746:29:751:5 | { ... } | match | +| main.rs:748:17:750:9 | if b {...} | main.rs:748:13:748:13 | _ | | +| main.rs:748:20:748:20 | b | main.rs:748:17:750:9 | if b {...} | false | +| main.rs:748:20:748:20 | b | main.rs:749:13:749:20 | ExprStmt | true | +| main.rs:748:22:750:9 | { ... } | main.rs:748:17:750:9 | if b {...} | | +| main.rs:749:13:749:13 | x | main.rs:749:17:749:19 | 200 | | +| main.rs:749:13:749:19 | ... = ... | main.rs:748:22:750:9 | { ... } | | +| main.rs:749:13:749:20 | ExprStmt | main.rs:749:13:749:13 | x | | +| main.rs:749:17:749:19 | 200 | main.rs:749:13:749:19 | ... = ... | | +| main.rs:752:5:752:7 | cap | main.rs:752:9:752:12 | true | | +| main.rs:752:5:752:13 | cap(...) | main.rs:753:5:753:17 | ExprStmt | | +| main.rs:752:5:752:14 | ExprStmt | main.rs:752:5:752:7 | cap | | +| main.rs:752:9:752:12 | true | main.rs:752:5:752:13 | cap(...) | | +| main.rs:753:5:753:13 | print_i64 | main.rs:753:15:753:15 | x | | +| main.rs:753:5:753:16 | print_i64(...) | main.rs:744:18:754:1 | { ... } | | +| main.rs:753:5:753:17 | ExprStmt | main.rs:753:5:753:13 | print_i64 | | +| main.rs:753:15:753:15 | x | main.rs:753:5:753:16 | print_i64(...) | | +| main.rs:757:5:772:5 | enter fn test | main.rs:759:9:759:25 | let ... = ... | | +| main.rs:757:5:772:5 | exit fn test (normal) | main.rs:757:5:772:5 | exit fn test | | +| main.rs:758:34:772:5 | { ... } | main.rs:757:5:772:5 | exit fn test (normal) | | +| main.rs:759:9:759:25 | let ... = ... | main.rs:759:17:759:20 | Some | | +| main.rs:759:13:759:13 | x | main.rs:759:13:759:13 | x | | +| main.rs:759:13:759:13 | x | main.rs:760:9:767:10 | let ... = ... | match | +| main.rs:759:17:759:20 | Some | main.rs:759:22:759:23 | 42 | | +| main.rs:759:17:759:24 | Some(...) | main.rs:759:13:759:13 | x | | +| main.rs:759:22:759:23 | 42 | main.rs:759:17:759:24 | Some(...) | | +| main.rs:760:9:767:10 | let ... = ... | main.rs:761:19:761:19 | x | | +| main.rs:760:13:760:13 | y | main.rs:760:13:760:13 | y | | +| main.rs:760:13:760:13 | y | main.rs:768:15:768:15 | y | match | +| main.rs:761:13:767:9 | match x { ... } | main.rs:760:13:760:13 | y | | +| main.rs:761:19:761:19 | x | main.rs:762:13:762:19 | Some(...) | | +| main.rs:762:13:762:19 | Some(...) | main.rs:762:18:762:18 | y | match | +| main.rs:762:13:762:19 | Some(...) | main.rs:765:13:765:16 | None | no-match | +| main.rs:762:18:762:18 | y | main.rs:762:18:762:18 | y | | +| main.rs:762:18:762:18 | y | main.rs:763:17:763:20 | None | match | +| main.rs:762:24:764:13 | { ... } | main.rs:761:13:767:9 | match x { ... } | | +| main.rs:763:17:763:20 | None | main.rs:762:24:764:13 | { ... } | | +| main.rs:765:13:765:16 | None | main.rs:765:13:765:16 | None | | +| main.rs:765:13:765:16 | None | main.rs:766:17:766:20 | None | match | +| main.rs:766:17:766:20 | None | main.rs:761:13:767:9 | match x { ... } | | +| main.rs:768:9:771:9 | match y { ... } | main.rs:758:34:772:5 | { ... } | | +| main.rs:768:15:768:15 | y | main.rs:769:13:769:16 | N0ne | | +| main.rs:769:13:769:16 | N0ne | main.rs:769:13:769:16 | N0ne | | +| main.rs:769:13:769:16 | N0ne | main.rs:770:17:770:20 | N0ne | match | +| main.rs:770:17:770:20 | N0ne | main.rs:768:9:771:9 | match y { ... } | | +| main.rs:774:5:781:5 | enter fn test2 | main.rs:776:9:777:17 | let ... = test | | +| main.rs:774:5:781:5 | exit fn test2 (normal) | main.rs:774:5:781:5 | exit fn test2 | | +| main.rs:775:31:781:5 | { ... } | main.rs:774:5:781:5 | exit fn test2 (normal) | | +| main.rs:776:9:777:17 | let ... = test | main.rs:777:13:777:16 | test | | +| main.rs:776:13:776:22 | test_alias | main.rs:776:13:776:22 | test_alias | | +| main.rs:776:13:776:22 | test_alias | main.rs:778:9:779:25 | let ... = ... | match | +| main.rs:777:13:777:16 | test | main.rs:776:13:776:22 | test_alias | | +| main.rs:778:9:779:25 | let ... = ... | main.rs:779:13:779:22 | test_alias | | +| main.rs:778:13:778:16 | test | main.rs:778:13:778:16 | test | | +| main.rs:778:13:778:16 | test | main.rs:780:9:780:12 | test | match | +| main.rs:779:13:779:22 | test_alias | main.rs:779:13:779:24 | test_alias(...) | | +| main.rs:779:13:779:24 | test_alias(...) | main.rs:778:13:778:16 | test | | +| main.rs:780:9:780:12 | test | main.rs:775:31:781:5 | { ... } | | +| main.rs:785:5:798:5 | enter fn test3 | main.rs:787:9:787:24 | let ... = ... | | +| main.rs:785:5:798:5 | exit fn test3 (normal) | main.rs:785:5:798:5 | exit fn test3 | | +| main.rs:786:16:798:5 | { ... } | main.rs:785:5:798:5 | exit fn test3 (normal) | | +| main.rs:787:9:787:24 | let ... = ... | main.rs:787:17:787:20 | Some | | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | | +| main.rs:787:13:787:13 | x | main.rs:788:9:792:10 | ExprStmt | match | +| main.rs:787:17:787:20 | Some | main.rs:787:22:787:22 | 0 | | +| main.rs:787:17:787:23 | Some(...) | main.rs:787:13:787:13 | x | | +| main.rs:787:22:787:22 | 0 | main.rs:787:17:787:23 | Some(...) | | +| main.rs:788:9:792:9 | match x { ... } | main.rs:793:9:797:10 | ExprStmt | | +| main.rs:788:9:792:10 | ExprStmt | main.rs:788:15:788:15 | x | | +| main.rs:788:15:788:15 | x | main.rs:789:13:789:19 | Some(...) | | +| main.rs:789:13:789:19 | Some(...) | main.rs:789:18:789:18 | x | match | +| main.rs:789:13:789:19 | Some(...) | main.rs:791:13:791:13 | _ | no-match | +| main.rs:789:18:789:18 | x | main.rs:789:18:789:18 | x | | +| main.rs:789:18:789:18 | x | main.rs:790:20:790:20 | x | match | +| main.rs:790:20:790:20 | x | main.rs:788:9:792:9 | match x { ... } | | +| main.rs:791:13:791:13 | _ | main.rs:791:18:791:18 | 0 | match | +| main.rs:791:18:791:18 | 0 | main.rs:788:9:792:9 | match x { ... } | | +| main.rs:793:9:797:9 | match x { ... } | main.rs:786:16:798:5 | { ... } | | +| main.rs:793:9:797:10 | ExprStmt | main.rs:793:15:793:15 | x | | +| main.rs:793:15:793:15 | x | main.rs:794:13:794:19 | Some(...) | | +| main.rs:794:13:794:19 | Some(...) | main.rs:794:18:794:18 | z | match | +| main.rs:794:13:794:19 | Some(...) | main.rs:796:13:796:13 | _ | no-match | +| main.rs:794:18:794:18 | z | main.rs:794:18:794:18 | z | | +| main.rs:794:18:794:18 | z | main.rs:795:17:795:17 | z | match | +| main.rs:794:18:794:18 | z | main.rs:796:13:796:13 | _ | no-match | +| main.rs:795:17:795:17 | z | main.rs:793:9:797:9 | match x { ... } | | +| main.rs:796:13:796:13 | _ | main.rs:796:18:796:18 | 0 | match | +| main.rs:796:18:796:18 | 0 | main.rs:793:9:797:9 | match x { ... } | | +| main.rs:801:1:845:1 | enter fn main | main.rs:802:5:802:25 | ExprStmt | | +| main.rs:801:1:845:1 | exit fn main (normal) | main.rs:801:1:845:1 | exit fn main | | +| main.rs:801:11:845:1 | { ... } | main.rs:801:1:845:1 | exit fn main (normal) | | +| main.rs:802:5:802:22 | immutable_variable | main.rs:802:5:802:24 | immutable_variable(...) | | +| main.rs:802:5:802:24 | immutable_variable(...) | main.rs:803:5:803:23 | ExprStmt | | +| main.rs:802:5:802:25 | ExprStmt | main.rs:802:5:802:22 | immutable_variable | | +| main.rs:803:5:803:20 | mutable_variable | main.rs:803:5:803:22 | mutable_variable(...) | | +| main.rs:803:5:803:22 | mutable_variable(...) | main.rs:804:5:804:40 | ExprStmt | | +| main.rs:803:5:803:23 | ExprStmt | main.rs:803:5:803:20 | mutable_variable | | +| main.rs:804:5:804:37 | mutable_variable_immutable_borrow | main.rs:804:5:804:39 | mutable_variable_immutable_borrow(...) | | +| main.rs:804:5:804:39 | mutable_variable_immutable_borrow(...) | main.rs:805:5:805:23 | ExprStmt | | +| main.rs:804:5:804:40 | ExprStmt | main.rs:804:5:804:37 | mutable_variable_immutable_borrow | | +| main.rs:805:5:805:20 | variable_shadow1 | main.rs:805:5:805:22 | variable_shadow1(...) | | +| main.rs:805:5:805:22 | variable_shadow1(...) | main.rs:806:5:806:23 | ExprStmt | | +| main.rs:805:5:805:23 | ExprStmt | main.rs:805:5:805:20 | variable_shadow1 | | +| main.rs:806:5:806:20 | variable_shadow2 | main.rs:806:5:806:22 | variable_shadow2(...) | | +| main.rs:806:5:806:22 | variable_shadow2(...) | main.rs:807:5:807:19 | ExprStmt | | +| main.rs:806:5:806:23 | ExprStmt | main.rs:806:5:806:20 | variable_shadow2 | | +| main.rs:807:5:807:16 | let_pattern1 | main.rs:807:5:807:18 | let_pattern1(...) | | +| main.rs:807:5:807:18 | let_pattern1(...) | main.rs:808:5:808:19 | ExprStmt | | +| main.rs:807:5:807:19 | ExprStmt | main.rs:807:5:807:16 | let_pattern1 | | +| main.rs:808:5:808:16 | let_pattern2 | main.rs:808:5:808:18 | let_pattern2(...) | | +| main.rs:808:5:808:18 | let_pattern2(...) | main.rs:809:5:809:19 | ExprStmt | | +| main.rs:808:5:808:19 | ExprStmt | main.rs:808:5:808:16 | let_pattern2 | | +| main.rs:809:5:809:16 | let_pattern3 | main.rs:809:5:809:18 | let_pattern3(...) | | +| main.rs:809:5:809:18 | let_pattern3(...) | main.rs:810:5:810:19 | ExprStmt | | +| main.rs:809:5:809:19 | ExprStmt | main.rs:809:5:809:16 | let_pattern3 | | +| main.rs:810:5:810:16 | let_pattern4 | main.rs:810:5:810:18 | let_pattern4(...) | | +| main.rs:810:5:810:18 | let_pattern4(...) | main.rs:811:5:811:21 | ExprStmt | | +| main.rs:810:5:810:19 | ExprStmt | main.rs:810:5:810:16 | let_pattern4 | | +| main.rs:811:5:811:18 | match_pattern1 | main.rs:811:5:811:20 | match_pattern1(...) | | +| main.rs:811:5:811:20 | match_pattern1(...) | main.rs:812:5:812:21 | ExprStmt | | +| main.rs:811:5:811:21 | ExprStmt | main.rs:811:5:811:18 | match_pattern1 | | +| main.rs:812:5:812:18 | match_pattern2 | main.rs:812:5:812:20 | match_pattern2(...) | | +| main.rs:812:5:812:20 | match_pattern2(...) | main.rs:813:5:813:21 | ExprStmt | | +| main.rs:812:5:812:21 | ExprStmt | main.rs:812:5:812:18 | match_pattern2 | | +| main.rs:813:5:813:18 | match_pattern3 | main.rs:813:5:813:20 | match_pattern3(...) | | +| main.rs:813:5:813:20 | match_pattern3(...) | main.rs:814:5:814:21 | ExprStmt | | +| main.rs:813:5:813:21 | ExprStmt | main.rs:813:5:813:18 | match_pattern3 | | +| main.rs:814:5:814:18 | match_pattern4 | main.rs:814:5:814:20 | match_pattern4(...) | | +| main.rs:814:5:814:20 | match_pattern4(...) | main.rs:815:5:815:21 | ExprStmt | | +| main.rs:814:5:814:21 | ExprStmt | main.rs:814:5:814:18 | match_pattern4 | | +| main.rs:815:5:815:18 | match_pattern5 | main.rs:815:5:815:20 | match_pattern5(...) | | +| main.rs:815:5:815:20 | match_pattern5(...) | main.rs:816:5:816:21 | ExprStmt | | +| main.rs:815:5:815:21 | ExprStmt | main.rs:815:5:815:18 | match_pattern5 | | +| main.rs:816:5:816:18 | match_pattern6 | main.rs:816:5:816:20 | match_pattern6(...) | | +| main.rs:816:5:816:20 | match_pattern6(...) | main.rs:817:5:817:21 | ExprStmt | | +| main.rs:816:5:816:21 | ExprStmt | main.rs:816:5:816:18 | match_pattern6 | | +| main.rs:817:5:817:18 | match_pattern7 | main.rs:817:5:817:20 | match_pattern7(...) | | +| main.rs:817:5:817:20 | match_pattern7(...) | main.rs:818:5:818:21 | ExprStmt | | +| main.rs:817:5:817:21 | ExprStmt | main.rs:817:5:817:18 | match_pattern7 | | +| main.rs:818:5:818:18 | match_pattern8 | main.rs:818:5:818:20 | match_pattern8(...) | | +| main.rs:818:5:818:20 | match_pattern8(...) | main.rs:819:5:819:21 | ExprStmt | | +| main.rs:818:5:818:21 | ExprStmt | main.rs:818:5:818:18 | match_pattern8 | | +| main.rs:819:5:819:18 | match_pattern9 | main.rs:819:5:819:20 | match_pattern9(...) | | +| main.rs:819:5:819:20 | match_pattern9(...) | main.rs:820:5:820:22 | ExprStmt | | +| main.rs:819:5:819:21 | ExprStmt | main.rs:819:5:819:18 | match_pattern9 | | +| main.rs:820:5:820:19 | match_pattern10 | main.rs:820:5:820:21 | match_pattern10(...) | | +| main.rs:820:5:820:21 | match_pattern10(...) | main.rs:821:5:821:22 | ExprStmt | | +| main.rs:820:5:820:22 | ExprStmt | main.rs:820:5:820:19 | match_pattern10 | | +| main.rs:821:5:821:19 | match_pattern11 | main.rs:821:5:821:21 | match_pattern11(...) | | +| main.rs:821:5:821:21 | match_pattern11(...) | main.rs:822:5:822:22 | ExprStmt | | +| main.rs:821:5:821:22 | ExprStmt | main.rs:821:5:821:19 | match_pattern11 | | +| main.rs:822:5:822:19 | match_pattern12 | main.rs:822:5:822:21 | match_pattern12(...) | | +| main.rs:822:5:822:21 | match_pattern12(...) | main.rs:823:5:823:22 | ExprStmt | | +| main.rs:822:5:822:22 | ExprStmt | main.rs:822:5:822:19 | match_pattern12 | | +| main.rs:823:5:823:19 | match_pattern13 | main.rs:823:5:823:21 | match_pattern13(...) | | +| main.rs:823:5:823:21 | match_pattern13(...) | main.rs:824:5:824:22 | ExprStmt | | +| main.rs:823:5:823:22 | ExprStmt | main.rs:823:5:823:19 | match_pattern13 | | +| main.rs:824:5:824:19 | match_pattern14 | main.rs:824:5:824:21 | match_pattern14(...) | | +| main.rs:824:5:824:21 | match_pattern14(...) | main.rs:825:5:825:22 | ExprStmt | | +| main.rs:824:5:824:22 | ExprStmt | main.rs:824:5:824:19 | match_pattern14 | | +| main.rs:825:5:825:19 | match_pattern15 | main.rs:825:5:825:21 | match_pattern15(...) | | +| main.rs:825:5:825:21 | match_pattern15(...) | main.rs:826:5:826:22 | ExprStmt | | +| main.rs:825:5:825:22 | ExprStmt | main.rs:825:5:825:19 | match_pattern15 | | +| main.rs:826:5:826:19 | match_pattern16 | main.rs:826:5:826:21 | match_pattern16(...) | | +| main.rs:826:5:826:21 | match_pattern16(...) | main.rs:827:5:827:36 | ExprStmt | | +| main.rs:826:5:826:22 | ExprStmt | main.rs:826:5:826:19 | match_pattern16 | | +| main.rs:827:5:827:18 | param_pattern1 | main.rs:827:20:827:22 | "a" | | +| main.rs:827:5:827:35 | param_pattern1(...) | main.rs:828:5:828:37 | ExprStmt | | +| main.rs:827:5:827:36 | ExprStmt | main.rs:827:5:827:18 | param_pattern1 | | +| main.rs:827:20:827:22 | "a" | main.rs:827:26:827:28 | "b" | | +| main.rs:827:25:827:34 | TupleExpr | main.rs:827:5:827:35 | param_pattern1(...) | | +| main.rs:827:26:827:28 | "b" | main.rs:827:31:827:33 | "c" | | +| main.rs:827:31:827:33 | "c" | main.rs:827:25:827:34 | TupleExpr | | +| main.rs:828:5:828:18 | param_pattern2 | main.rs:828:20:828:31 | ...::Left | | +| main.rs:828:5:828:36 | param_pattern2(...) | main.rs:829:5:829:26 | ExprStmt | | +| main.rs:828:5:828:37 | ExprStmt | main.rs:828:5:828:18 | param_pattern2 | | +| main.rs:828:20:828:31 | ...::Left | main.rs:828:33:828:34 | 45 | | +| main.rs:828:20:828:35 | ...::Left(...) | main.rs:828:5:828:36 | param_pattern2(...) | | +| main.rs:828:33:828:34 | 45 | main.rs:828:20:828:35 | ...::Left(...) | | +| main.rs:829:5:829:23 | destruct_assignment | main.rs:829:5:829:25 | destruct_assignment(...) | | +| main.rs:829:5:829:25 | destruct_assignment(...) | main.rs:830:5:830:23 | ExprStmt | | +| main.rs:829:5:829:26 | ExprStmt | main.rs:829:5:829:23 | destruct_assignment | | +| main.rs:830:5:830:20 | closure_variable | main.rs:830:5:830:22 | closure_variable(...) | | +| main.rs:830:5:830:22 | closure_variable(...) | main.rs:831:5:831:22 | ExprStmt | | +| main.rs:830:5:830:23 | ExprStmt | main.rs:830:5:830:20 | closure_variable | | +| main.rs:831:5:831:19 | nested_function | main.rs:831:5:831:21 | nested_function(...) | | +| main.rs:831:5:831:21 | nested_function(...) | main.rs:832:5:832:19 | ExprStmt | | +| main.rs:831:5:831:22 | ExprStmt | main.rs:831:5:831:19 | nested_function | | +| main.rs:832:5:832:16 | for_variable | main.rs:832:5:832:18 | for_variable(...) | | +| main.rs:832:5:832:18 | for_variable(...) | main.rs:833:5:833:17 | ExprStmt | | +| main.rs:832:5:832:19 | ExprStmt | main.rs:832:5:832:16 | for_variable | | +| main.rs:833:5:833:14 | add_assign | main.rs:833:5:833:16 | add_assign(...) | | +| main.rs:833:5:833:16 | add_assign(...) | main.rs:834:5:834:13 | ExprStmt | | +| main.rs:833:5:833:17 | ExprStmt | main.rs:833:5:833:14 | add_assign | | +| main.rs:834:5:834:10 | mutate | main.rs:834:5:834:12 | mutate(...) | | +| main.rs:834:5:834:12 | mutate(...) | main.rs:835:5:835:17 | ExprStmt | | +| main.rs:834:5:834:13 | ExprStmt | main.rs:834:5:834:10 | mutate | | +| main.rs:835:5:835:14 | mutate_arg | main.rs:835:5:835:16 | mutate_arg(...) | | +| main.rs:835:5:835:16 | mutate_arg(...) | main.rs:836:5:836:12 | ExprStmt | | +| main.rs:835:5:835:17 | ExprStmt | main.rs:835:5:835:14 | mutate_arg | | +| main.rs:836:5:836:9 | alias | main.rs:836:5:836:11 | alias(...) | | +| main.rs:836:5:836:11 | alias(...) | main.rs:837:5:837:18 | ExprStmt | | +| main.rs:836:5:836:12 | ExprStmt | main.rs:836:5:836:9 | alias | | +| main.rs:837:5:837:15 | capture_mut | main.rs:837:5:837:17 | capture_mut(...) | | +| main.rs:837:5:837:17 | capture_mut(...) | main.rs:838:5:838:20 | ExprStmt | | +| main.rs:837:5:837:18 | ExprStmt | main.rs:837:5:837:15 | capture_mut | | +| main.rs:838:5:838:17 | capture_immut | main.rs:838:5:838:19 | capture_immut(...) | | +| main.rs:838:5:838:19 | capture_immut(...) | main.rs:839:5:839:26 | ExprStmt | | +| main.rs:838:5:838:20 | ExprStmt | main.rs:838:5:838:17 | capture_immut | | +| main.rs:839:5:839:23 | async_block_capture | main.rs:839:5:839:25 | async_block_capture(...) | | +| main.rs:839:5:839:25 | async_block_capture(...) | main.rs:840:5:840:14 | ExprStmt | | +| main.rs:839:5:839:26 | ExprStmt | main.rs:839:5:839:23 | async_block_capture | | +| main.rs:840:5:840:11 | structs | main.rs:840:5:840:13 | structs(...) | | +| main.rs:840:5:840:13 | structs(...) | main.rs:841:5:841:14 | ExprStmt | | +| main.rs:840:5:840:14 | ExprStmt | main.rs:840:5:840:11 | structs | | +| main.rs:841:5:841:11 | ref_arg | main.rs:841:5:841:13 | ref_arg(...) | | +| main.rs:841:5:841:13 | ref_arg(...) | main.rs:842:5:842:30 | ExprStmt | | +| main.rs:841:5:841:14 | ExprStmt | main.rs:841:5:841:11 | ref_arg | | +| main.rs:842:5:842:27 | ref_methodcall_receiver | main.rs:842:5:842:29 | ref_methodcall_receiver(...) | | +| main.rs:842:5:842:29 | ref_methodcall_receiver(...) | main.rs:843:5:843:23 | ExprStmt | | +| main.rs:842:5:842:30 | ExprStmt | main.rs:842:5:842:27 | ref_methodcall_receiver | | +| main.rs:843:5:843:20 | macro_invocation | main.rs:843:5:843:22 | macro_invocation(...) | | +| main.rs:843:5:843:22 | macro_invocation(...) | main.rs:844:5:844:18 | ExprStmt | | +| main.rs:843:5:843:23 | ExprStmt | main.rs:843:5:843:20 | macro_invocation | | +| main.rs:844:5:844:15 | capture_phi | main.rs:844:5:844:17 | capture_phi(...) | | +| main.rs:844:5:844:17 | capture_phi(...) | main.rs:801:11:845:1 | { ... } | | +| main.rs:844:5:844:18 | ExprStmt | main.rs:844:5:844:15 | capture_phi | | breakTarget | main.rs:326:9:326:13 | break | main.rs:317:5:327:5 | while ... { ... } | continueTarget diff --git a/rust/ql/test/library-tests/variables/Ssa.expected b/rust/ql/test/library-tests/variables/Ssa.expected index 4b9764b21c9a..0acf3e94c5b5 100644 --- a/rust/ql/test/library-tests/variables/Ssa.expected +++ b/rust/ql/test/library-tests/variables/Ssa.expected @@ -94,105 +94,115 @@ definition | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | | main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | -| main.rs:384:33:384:34 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:384:53:384:54 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | -| main.rs:485:13:485:13 | a | main.rs:485:13:485:13 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | -| main.rs:488:6:488:11 | &mut a | main.rs:485:13:485:13 | a | -| main.rs:493:13:493:13 | i | main.rs:493:13:493:13 | i | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | -| main.rs:495:9:495:14 | &mut i | main.rs:493:13:493:13 | i | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | -| main.rs:516:13:516:13 | x | main.rs:516:13:516:13 | x | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | -| main.rs:524:13:524:13 | z | main.rs:524:13:524:13 | z | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | -| main.rs:528:9:528:14 | &mut z | main.rs:524:13:524:13 | z | -| main.rs:538:13:538:13 | x | main.rs:538:13:538:13 | x | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | -| main.rs:540:9:540:14 | &mut x | main.rs:538:13:538:13 | x | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | -| main.rs:549:15:551:5 | x | main.rs:546:9:546:9 | x | -| main.rs:557:13:557:13 | x | main.rs:557:13:557:13 | x | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | -| main.rs:560:20:562:5 | x | main.rs:557:13:557:13 | x | -| main.rs:566:13:566:13 | y | main.rs:566:13:566:13 | y | -| main.rs:569:13:569:20 | closure2 | main.rs:569:13:569:20 | closure2 | -| main.rs:570:9:570:9 | y | main.rs:566:13:566:13 | y | -| main.rs:572:5:572:14 | y | main.rs:566:13:566:13 | y | -| main.rs:575:13:575:13 | z | main.rs:575:13:575:13 | z | -| main.rs:578:13:578:20 | closure3 | main.rs:578:13:578:20 | closure3 | -| main.rs:578:24:580:5 | z | main.rs:575:13:575:13 | z | -| main.rs:586:13:586:13 | i | main.rs:586:13:586:13 | i | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | -| main.rs:588:9:588:9 | i | main.rs:586:13:586:13 | i | -| main.rs:591:5:591:15 | i | main.rs:586:13:586:13 | i | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | -| main.rs:637:20:637:23 | self | main.rs:637:20:637:23 | self | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | self | -| main.rs:645:23:645:26 | self | main.rs:645:23:645:26 | self | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | -| main.rs:646:21:649:9 | self | main.rs:645:23:645:26 | self | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | -| main.rs:687:17:687:20 | self | main.rs:687:17:687:20 | self | -| main.rs:693:13:693:13 | a | main.rs:693:13:693:13 | a | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | -| main.rs:734:13:734:13 | x | main.rs:734:13:734:13 | x | -| main.rs:735:13:735:15 | cap | main.rs:735:13:735:15 | cap | -| main.rs:735:19:740:5 | x | main.rs:734:13:734:13 | x | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:734:13:734:13 | x | -| main.rs:738:13:738:13 | x | main.rs:734:13:734:13 | x | -| main.rs:741:5:741:13 | x | main.rs:734:13:734:13 | x | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | +| main.rs:395:33:395:34 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:395:53:395:54 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | +| main.rs:496:13:496:13 | a | main.rs:496:13:496:13 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | +| main.rs:499:6:499:11 | &mut a | main.rs:496:13:496:13 | a | +| main.rs:504:13:504:13 | i | main.rs:504:13:504:13 | i | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | +| main.rs:506:9:506:14 | &mut i | main.rs:504:13:504:13 | i | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | +| main.rs:527:13:527:13 | x | main.rs:527:13:527:13 | x | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | +| main.rs:535:13:535:13 | z | main.rs:535:13:535:13 | z | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | +| main.rs:539:9:539:14 | &mut z | main.rs:535:13:535:13 | z | +| main.rs:549:13:549:13 | x | main.rs:549:13:549:13 | x | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | +| main.rs:551:9:551:14 | &mut x | main.rs:549:13:549:13 | x | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | +| main.rs:560:15:562:5 | x | main.rs:557:9:557:9 | x | +| main.rs:568:13:568:13 | x | main.rs:568:13:568:13 | x | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | +| main.rs:571:20:573:5 | x | main.rs:568:13:568:13 | x | +| main.rs:577:13:577:13 | y | main.rs:577:13:577:13 | y | +| main.rs:580:13:580:20 | closure2 | main.rs:580:13:580:20 | closure2 | +| main.rs:581:9:581:9 | y | main.rs:577:13:577:13 | y | +| main.rs:583:5:583:14 | y | main.rs:577:13:577:13 | y | +| main.rs:586:13:586:13 | z | main.rs:586:13:586:13 | z | +| main.rs:589:13:589:20 | closure3 | main.rs:589:13:589:20 | closure3 | +| main.rs:589:24:591:5 | z | main.rs:586:13:586:13 | z | +| main.rs:597:13:597:13 | i | main.rs:597:13:597:13 | i | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | +| main.rs:599:9:599:9 | i | main.rs:597:13:597:13 | i | +| main.rs:602:5:602:15 | i | main.rs:597:13:597:13 | i | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | +| main.rs:648:20:648:23 | self | main.rs:648:20:648:23 | self | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | self | +| main.rs:656:23:656:26 | self | main.rs:656:23:656:26 | self | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | +| main.rs:657:21:660:9 | self | main.rs:656:23:656:26 | self | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | +| main.rs:667:13:667:13 | a | main.rs:667:13:667:13 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | +| main.rs:698:17:698:20 | self | main.rs:698:17:698:20 | self | +| main.rs:704:13:704:13 | a | main.rs:704:13:704:13 | a | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | +| main.rs:745:13:745:13 | x | main.rs:745:13:745:13 | x | +| main.rs:746:13:746:15 | cap | main.rs:746:13:746:15 | cap | +| main.rs:746:19:751:5 | x | main.rs:745:13:745:13 | x | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:745:13:745:13 | x | +| main.rs:749:13:749:13 | x | main.rs:745:13:745:13 | x | +| main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | +| main.rs:759:13:759:13 | x | main.rs:759:13:759:13 | x | +| main.rs:760:13:760:13 | y | main.rs:760:13:760:13 | y | +| main.rs:769:13:769:16 | N0ne | main.rs:769:13:769:16 | N0ne | +| main.rs:776:13:776:22 | test_alias | main.rs:776:13:776:22 | test_alias | +| main.rs:778:13:778:16 | test | main.rs:778:13:778:16 | test | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | +| main.rs:789:18:789:18 | x | main.rs:789:18:789:18 | x | read | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -284,120 +294,131 @@ read | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | main.rs:357:19:357:19 | x | | main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:365:11:365:11 | x | | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | main.rs:379:15:379:16 | a8 | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | main.rs:380:15:380:16 | b3 | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | main.rs:381:15:381:16 | c1 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:386:15:386:16 | a9 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:404:9:404:11 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:405:9:405:10 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:406:9:406:10 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | main.rs:410:15:410:16 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:409:15:409:16 | b4 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:423:15:423:16 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:408:15:408:17 | a10 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:422:15:422:17 | a10 | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | main.rs:417:23:417:25 | a10 | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | main.rs:418:23:418:24 | b4 | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | main.rs:431:9:431:23 | example_closure | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | main.rs:429:9:429:9 | x | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | main.rs:432:15:432:16 | n1 | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | main.rs:439:9:439:26 | immutable_variable | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | main.rs:437:9:437:9 | x | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | main.rs:440:15:440:16 | n2 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:448:15:448:15 | f | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:455:15:455:15 | f | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | main.rs:447:9:447:9 | x | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | main.rs:452:9:452:9 | x | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | main.rs:461:17:461:17 | x | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | main.rs:471:19:471:19 | f | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | main.rs:470:13:470:13 | x | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | main.rs:479:12:479:12 | v | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | main.rs:480:19:480:22 | text | -| main.rs:485:13:485:13 | a | main.rs:485:13:485:13 | a | main.rs:486:5:486:5 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:487:15:487:15 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:488:11:488:11 | a | -| main.rs:488:6:488:11 | &mut a | main.rs:485:13:485:13 | a | main.rs:489:15:489:15 | a | -| main.rs:493:13:493:13 | i | main.rs:493:13:493:13 | i | main.rs:495:14:495:14 | i | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | main.rs:496:6:496:10 | ref_i | -| main.rs:495:9:495:14 | &mut i | main.rs:493:13:493:13 | i | main.rs:497:15:497:15 | i | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:501:6:501:6 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:502:10:502:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:503:10:503:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:504:12:504:12 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:508:6:508:6 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:509:10:509:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:510:10:510:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:512:9:512:9 | x | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | main.rs:511:6:511:6 | y | -| main.rs:516:13:516:13 | x | main.rs:516:13:516:13 | x | main.rs:518:27:518:27 | x | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | main.rs:519:6:519:6 | y | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:522:15:522:15 | x | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:526:19:526:19 | x | -| main.rs:524:13:524:13 | z | main.rs:524:13:524:13 | z | main.rs:528:14:528:14 | z | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:529:9:529:9 | w | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:531:7:531:7 | w | -| main.rs:528:9:528:14 | &mut z | main.rs:524:13:524:13 | z | main.rs:534:15:534:15 | z | -| main.rs:538:13:538:13 | x | main.rs:538:13:538:13 | x | main.rs:540:14:540:14 | x | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | main.rs:541:6:541:6 | y | -| main.rs:540:9:540:14 | &mut x | main.rs:538:13:538:13 | x | main.rs:542:15:542:15 | x | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | main.rs:553:15:553:15 | x | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | main.rs:552:5:552:7 | cap | -| main.rs:549:15:551:5 | x | main.rs:546:9:546:9 | x | main.rs:550:19:550:19 | x | -| main.rs:557:13:557:13 | x | main.rs:557:13:557:13 | x | main.rs:564:15:564:15 | x | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | main.rs:563:5:563:12 | closure1 | -| main.rs:560:20:562:5 | x | main.rs:557:13:557:13 | x | main.rs:561:19:561:19 | x | -| main.rs:569:13:569:20 | closure2 | main.rs:569:13:569:20 | closure2 | main.rs:572:5:572:12 | closure2 | -| main.rs:572:5:572:14 | y | main.rs:566:13:566:13 | y | main.rs:573:15:573:15 | y | -| main.rs:575:13:575:13 | z | main.rs:575:13:575:13 | z | main.rs:582:15:582:15 | z | -| main.rs:578:13:578:20 | closure3 | main.rs:578:13:578:20 | closure3 | main.rs:581:5:581:12 | closure3 | -| main.rs:578:24:580:5 | z | main.rs:575:13:575:13 | z | main.rs:579:9:579:9 | z | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | main.rs:591:5:591:9 | block | -| main.rs:591:5:591:15 | i | main.rs:586:13:586:13 | i | main.rs:592:15:592:15 | i | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | main.rs:600:16:600:16 | b | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:597:15:597:15 | x | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:598:15:598:15 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:610:15:610:15 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:603:19:603:19 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:604:19:604:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:607:19:607:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:608:19:608:19 | x | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | main.rs:616:16:616:17 | b1 | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | main.rs:624:16:624:17 | b2 | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:626:19:626:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:628:19:628:19 | x | -| main.rs:637:20:637:23 | self | main.rs:637:20:637:23 | self | main.rs:638:16:638:19 | self | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | self | main.rs:642:9:642:12 | self | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:650:9:650:9 | f | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:651:9:651:9 | f | -| main.rs:646:21:649:9 | self | main.rs:645:23:645:26 | self | main.rs:648:13:648:16 | self | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | main.rs:648:25:648:25 | n | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:657:15:657:15 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:659:15:659:15 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | main.rs:661:15:661:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:666:15:666:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:667:5:667:5 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:668:15:668:15 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | main.rs:670:15:670:15 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:675:20:675:20 | x | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:676:15:676:15 | x | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | main.rs:679:20:679:20 | z | -| main.rs:687:17:687:20 | self | main.rs:687:17:687:20 | self | main.rs:688:10:688:13 | self | -| main.rs:693:13:693:13 | a | main.rs:693:13:693:13 | a | main.rs:694:5:694:5 | a | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | main.rs:697:15:697:15 | a | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | main.rs:717:15:717:28 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | main.rs:724:15:724:26 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | main.rs:723:30:723:41 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | main.rs:730:15:730:15 | x | -| main.rs:735:13:735:15 | cap | main.rs:735:13:735:15 | cap | main.rs:741:5:741:7 | cap | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | main.rs:737:20:737:20 | b | -| main.rs:741:5:741:13 | x | main.rs:734:13:734:13 | x | main.rs:742:15:742:15 | x | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | main.rs:378:26:378:26 | y | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | main.rs:390:15:390:16 | a8 | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | main.rs:391:15:391:16 | b3 | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | main.rs:392:15:392:16 | c1 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:397:15:397:16 | a9 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:406:15:406:17 | a10 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:415:9:415:11 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:407:15:407:16 | b4 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:416:9:416:10 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:408:15:408:16 | c2 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:417:9:417:10 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | main.rs:421:15:421:16 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:420:15:420:16 | b4 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:434:15:434:16 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:419:15:419:17 | a10 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:433:15:433:17 | a10 | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | main.rs:428:23:428:25 | a10 | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | main.rs:429:23:429:24 | b4 | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | main.rs:442:9:442:23 | example_closure | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | main.rs:440:9:440:9 | x | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | main.rs:443:15:443:16 | n1 | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | main.rs:450:9:450:26 | immutable_variable | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | main.rs:448:9:448:9 | x | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | main.rs:451:15:451:16 | n2 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:459:15:459:15 | f | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:466:15:466:15 | f | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | main.rs:458:9:458:9 | x | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | main.rs:463:9:463:9 | x | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | main.rs:472:17:472:17 | x | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | main.rs:482:19:482:19 | f | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | main.rs:481:13:481:13 | x | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | main.rs:490:12:490:12 | v | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | main.rs:491:19:491:22 | text | +| main.rs:496:13:496:13 | a | main.rs:496:13:496:13 | a | main.rs:497:5:497:5 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:498:15:498:15 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:499:11:499:11 | a | +| main.rs:499:6:499:11 | &mut a | main.rs:496:13:496:13 | a | main.rs:500:15:500:15 | a | +| main.rs:504:13:504:13 | i | main.rs:504:13:504:13 | i | main.rs:506:14:506:14 | i | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | main.rs:507:6:507:10 | ref_i | +| main.rs:506:9:506:14 | &mut i | main.rs:504:13:504:13 | i | main.rs:508:15:508:15 | i | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:512:6:512:6 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:513:10:513:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:514:10:514:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:515:12:515:12 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:519:6:519:6 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:520:10:520:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:521:10:521:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:523:9:523:9 | x | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | main.rs:522:6:522:6 | y | +| main.rs:527:13:527:13 | x | main.rs:527:13:527:13 | x | main.rs:529:27:529:27 | x | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | main.rs:530:6:530:6 | y | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:533:15:533:15 | x | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:537:19:537:19 | x | +| main.rs:535:13:535:13 | z | main.rs:535:13:535:13 | z | main.rs:539:14:539:14 | z | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:540:9:540:9 | w | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:542:7:542:7 | w | +| main.rs:539:9:539:14 | &mut z | main.rs:535:13:535:13 | z | main.rs:545:15:545:15 | z | +| main.rs:549:13:549:13 | x | main.rs:549:13:549:13 | x | main.rs:551:14:551:14 | x | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | main.rs:552:6:552:6 | y | +| main.rs:551:9:551:14 | &mut x | main.rs:549:13:549:13 | x | main.rs:553:15:553:15 | x | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | main.rs:564:15:564:15 | x | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | main.rs:563:5:563:7 | cap | +| main.rs:560:15:562:5 | x | main.rs:557:9:557:9 | x | main.rs:561:19:561:19 | x | +| main.rs:568:13:568:13 | x | main.rs:568:13:568:13 | x | main.rs:575:15:575:15 | x | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | main.rs:574:5:574:12 | closure1 | +| main.rs:571:20:573:5 | x | main.rs:568:13:568:13 | x | main.rs:572:19:572:19 | x | +| main.rs:580:13:580:20 | closure2 | main.rs:580:13:580:20 | closure2 | main.rs:583:5:583:12 | closure2 | +| main.rs:583:5:583:14 | y | main.rs:577:13:577:13 | y | main.rs:584:15:584:15 | y | +| main.rs:586:13:586:13 | z | main.rs:586:13:586:13 | z | main.rs:593:15:593:15 | z | +| main.rs:589:13:589:20 | closure3 | main.rs:589:13:589:20 | closure3 | main.rs:592:5:592:12 | closure3 | +| main.rs:589:24:591:5 | z | main.rs:586:13:586:13 | z | main.rs:590:9:590:9 | z | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | main.rs:602:5:602:9 | block | +| main.rs:602:5:602:15 | i | main.rs:597:13:597:13 | i | main.rs:603:15:603:15 | i | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | main.rs:611:16:611:16 | b | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:608:15:608:15 | x | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:609:15:609:15 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:621:15:621:15 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:614:19:614:19 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:615:19:615:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:618:19:618:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:619:19:619:19 | x | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | main.rs:627:16:627:17 | b1 | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | main.rs:635:16:635:17 | b2 | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:637:19:637:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:639:19:639:19 | x | +| main.rs:648:20:648:23 | self | main.rs:648:20:648:23 | self | main.rs:649:16:649:19 | self | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | self | main.rs:653:9:653:12 | self | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:661:9:661:9 | f | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:662:9:662:9 | f | +| main.rs:657:21:660:9 | self | main.rs:656:23:656:26 | self | main.rs:659:13:659:16 | self | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | main.rs:659:25:659:25 | n | +| main.rs:667:13:667:13 | a | main.rs:667:13:667:13 | a | main.rs:668:15:668:15 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:669:5:669:5 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:670:15:670:15 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | main.rs:672:15:672:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:677:15:677:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:678:5:678:5 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:679:15:679:15 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | main.rs:681:15:681:15 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:686:20:686:20 | x | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:687:15:687:15 | x | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | main.rs:690:20:690:20 | z | +| main.rs:698:17:698:20 | self | main.rs:698:17:698:20 | self | main.rs:699:10:699:13 | self | +| main.rs:704:13:704:13 | a | main.rs:704:13:704:13 | a | main.rs:705:5:705:5 | a | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | main.rs:708:15:708:15 | a | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | main.rs:728:15:728:28 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | main.rs:735:15:735:26 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | main.rs:734:30:734:41 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | main.rs:741:15:741:15 | x | +| main.rs:746:13:746:15 | cap | main.rs:746:13:746:15 | cap | main.rs:752:5:752:7 | cap | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | main.rs:748:20:748:20 | b | +| main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | main.rs:753:15:753:15 | x | +| main.rs:759:13:759:13 | x | main.rs:759:13:759:13 | x | main.rs:761:19:761:19 | x | +| main.rs:760:13:760:13 | y | main.rs:760:13:760:13 | y | main.rs:768:15:768:15 | y | +| main.rs:769:13:769:16 | N0ne | main.rs:769:13:769:16 | N0ne | main.rs:770:17:770:20 | N0ne | +| main.rs:776:13:776:22 | test_alias | main.rs:776:13:776:22 | test_alias | main.rs:779:13:779:22 | test_alias | +| main.rs:778:13:778:16 | test | main.rs:778:13:778:16 | test | main.rs:780:9:780:12 | test | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | main.rs:788:15:788:15 | x | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | main.rs:793:15:793:15 | x | +| main.rs:789:18:789:18 | x | main.rs:789:18:789:18 | x | main.rs:790:20:790:20 | x | firstRead | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -472,95 +493,105 @@ firstRead | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | main.rs:357:19:357:19 | x | | main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:365:11:365:11 | x | | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | main.rs:379:15:379:16 | a8 | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | main.rs:380:15:380:16 | b3 | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | main.rs:381:15:381:16 | c1 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:386:15:386:16 | a9 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | main.rs:410:15:410:16 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:409:15:409:16 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:408:15:408:17 | a10 | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | main.rs:417:23:417:25 | a10 | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | main.rs:418:23:418:24 | b4 | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | main.rs:431:9:431:23 | example_closure | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | main.rs:429:9:429:9 | x | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | main.rs:432:15:432:16 | n1 | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | main.rs:439:9:439:26 | immutable_variable | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | main.rs:437:9:437:9 | x | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | main.rs:440:15:440:16 | n2 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:448:15:448:15 | f | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | main.rs:447:9:447:9 | x | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | main.rs:452:9:452:9 | x | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | main.rs:461:17:461:17 | x | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | main.rs:471:19:471:19 | f | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | main.rs:470:13:470:13 | x | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | main.rs:479:12:479:12 | v | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | main.rs:480:19:480:22 | text | -| main.rs:485:13:485:13 | a | main.rs:485:13:485:13 | a | main.rs:486:5:486:5 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:487:15:487:15 | a | -| main.rs:488:6:488:11 | &mut a | main.rs:485:13:485:13 | a | main.rs:489:15:489:15 | a | -| main.rs:493:13:493:13 | i | main.rs:493:13:493:13 | i | main.rs:495:14:495:14 | i | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | main.rs:496:6:496:10 | ref_i | -| main.rs:495:9:495:14 | &mut i | main.rs:493:13:493:13 | i | main.rs:497:15:497:15 | i | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:501:6:501:6 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:508:6:508:6 | x | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | main.rs:511:6:511:6 | y | -| main.rs:516:13:516:13 | x | main.rs:516:13:516:13 | x | main.rs:518:27:518:27 | x | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | main.rs:519:6:519:6 | y | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:522:15:522:15 | x | -| main.rs:524:13:524:13 | z | main.rs:524:13:524:13 | z | main.rs:528:14:528:14 | z | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:529:9:529:9 | w | -| main.rs:528:9:528:14 | &mut z | main.rs:524:13:524:13 | z | main.rs:534:15:534:15 | z | -| main.rs:538:13:538:13 | x | main.rs:538:13:538:13 | x | main.rs:540:14:540:14 | x | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | main.rs:541:6:541:6 | y | -| main.rs:540:9:540:14 | &mut x | main.rs:538:13:538:13 | x | main.rs:542:15:542:15 | x | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | main.rs:553:15:553:15 | x | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | main.rs:552:5:552:7 | cap | -| main.rs:549:15:551:5 | x | main.rs:546:9:546:9 | x | main.rs:550:19:550:19 | x | -| main.rs:557:13:557:13 | x | main.rs:557:13:557:13 | x | main.rs:564:15:564:15 | x | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | main.rs:563:5:563:12 | closure1 | -| main.rs:560:20:562:5 | x | main.rs:557:13:557:13 | x | main.rs:561:19:561:19 | x | -| main.rs:569:13:569:20 | closure2 | main.rs:569:13:569:20 | closure2 | main.rs:572:5:572:12 | closure2 | -| main.rs:572:5:572:14 | y | main.rs:566:13:566:13 | y | main.rs:573:15:573:15 | y | -| main.rs:575:13:575:13 | z | main.rs:575:13:575:13 | z | main.rs:582:15:582:15 | z | -| main.rs:578:13:578:20 | closure3 | main.rs:578:13:578:20 | closure3 | main.rs:581:5:581:12 | closure3 | -| main.rs:578:24:580:5 | z | main.rs:575:13:575:13 | z | main.rs:579:9:579:9 | z | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | main.rs:591:5:591:9 | block | -| main.rs:591:5:591:15 | i | main.rs:586:13:586:13 | i | main.rs:592:15:592:15 | i | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | main.rs:600:16:600:16 | b | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:597:15:597:15 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:610:15:610:15 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:603:19:603:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:607:19:607:19 | x | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | main.rs:616:16:616:17 | b1 | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | main.rs:624:16:624:17 | b2 | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | -| main.rs:637:20:637:23 | self | main.rs:637:20:637:23 | self | main.rs:638:16:638:19 | self | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | self | main.rs:642:9:642:12 | self | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:650:9:650:9 | f | -| main.rs:646:21:649:9 | self | main.rs:645:23:645:26 | self | main.rs:648:13:648:16 | self | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | main.rs:648:25:648:25 | n | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:657:15:657:15 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | main.rs:661:15:661:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:666:15:666:15 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | main.rs:670:15:670:15 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:675:20:675:20 | x | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | main.rs:679:20:679:20 | z | -| main.rs:687:17:687:20 | self | main.rs:687:17:687:20 | self | main.rs:688:10:688:13 | self | -| main.rs:693:13:693:13 | a | main.rs:693:13:693:13 | a | main.rs:694:5:694:5 | a | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | main.rs:697:15:697:15 | a | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | main.rs:717:15:717:28 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | main.rs:724:15:724:26 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | main.rs:723:30:723:41 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | main.rs:730:15:730:15 | x | -| main.rs:735:13:735:15 | cap | main.rs:735:13:735:15 | cap | main.rs:741:5:741:7 | cap | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | main.rs:737:20:737:20 | b | -| main.rs:741:5:741:13 | x | main.rs:734:13:734:13 | x | main.rs:742:15:742:15 | x | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | main.rs:378:26:378:26 | y | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | main.rs:390:15:390:16 | a8 | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | main.rs:391:15:391:16 | b3 | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | main.rs:392:15:392:16 | c1 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:397:15:397:16 | a9 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:406:15:406:17 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:407:15:407:16 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:408:15:408:16 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | main.rs:421:15:421:16 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:420:15:420:16 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:419:15:419:17 | a10 | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | main.rs:428:23:428:25 | a10 | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | main.rs:429:23:429:24 | b4 | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | main.rs:442:9:442:23 | example_closure | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | main.rs:440:9:440:9 | x | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | main.rs:443:15:443:16 | n1 | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | main.rs:450:9:450:26 | immutable_variable | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | main.rs:448:9:448:9 | x | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | main.rs:451:15:451:16 | n2 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:459:15:459:15 | f | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | main.rs:458:9:458:9 | x | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | main.rs:463:9:463:9 | x | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | main.rs:472:17:472:17 | x | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | main.rs:482:19:482:19 | f | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | main.rs:481:13:481:13 | x | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | main.rs:490:12:490:12 | v | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | main.rs:491:19:491:22 | text | +| main.rs:496:13:496:13 | a | main.rs:496:13:496:13 | a | main.rs:497:5:497:5 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:498:15:498:15 | a | +| main.rs:499:6:499:11 | &mut a | main.rs:496:13:496:13 | a | main.rs:500:15:500:15 | a | +| main.rs:504:13:504:13 | i | main.rs:504:13:504:13 | i | main.rs:506:14:506:14 | i | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | main.rs:507:6:507:10 | ref_i | +| main.rs:506:9:506:14 | &mut i | main.rs:504:13:504:13 | i | main.rs:508:15:508:15 | i | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:512:6:512:6 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:519:6:519:6 | x | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | main.rs:522:6:522:6 | y | +| main.rs:527:13:527:13 | x | main.rs:527:13:527:13 | x | main.rs:529:27:529:27 | x | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | main.rs:530:6:530:6 | y | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:533:15:533:15 | x | +| main.rs:535:13:535:13 | z | main.rs:535:13:535:13 | z | main.rs:539:14:539:14 | z | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:540:9:540:9 | w | +| main.rs:539:9:539:14 | &mut z | main.rs:535:13:535:13 | z | main.rs:545:15:545:15 | z | +| main.rs:549:13:549:13 | x | main.rs:549:13:549:13 | x | main.rs:551:14:551:14 | x | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | main.rs:552:6:552:6 | y | +| main.rs:551:9:551:14 | &mut x | main.rs:549:13:549:13 | x | main.rs:553:15:553:15 | x | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | main.rs:564:15:564:15 | x | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | main.rs:563:5:563:7 | cap | +| main.rs:560:15:562:5 | x | main.rs:557:9:557:9 | x | main.rs:561:19:561:19 | x | +| main.rs:568:13:568:13 | x | main.rs:568:13:568:13 | x | main.rs:575:15:575:15 | x | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | main.rs:574:5:574:12 | closure1 | +| main.rs:571:20:573:5 | x | main.rs:568:13:568:13 | x | main.rs:572:19:572:19 | x | +| main.rs:580:13:580:20 | closure2 | main.rs:580:13:580:20 | closure2 | main.rs:583:5:583:12 | closure2 | +| main.rs:583:5:583:14 | y | main.rs:577:13:577:13 | y | main.rs:584:15:584:15 | y | +| main.rs:586:13:586:13 | z | main.rs:586:13:586:13 | z | main.rs:593:15:593:15 | z | +| main.rs:589:13:589:20 | closure3 | main.rs:589:13:589:20 | closure3 | main.rs:592:5:592:12 | closure3 | +| main.rs:589:24:591:5 | z | main.rs:586:13:586:13 | z | main.rs:590:9:590:9 | z | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | main.rs:602:5:602:9 | block | +| main.rs:602:5:602:15 | i | main.rs:597:13:597:13 | i | main.rs:603:15:603:15 | i | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | main.rs:611:16:611:16 | b | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:608:15:608:15 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:621:15:621:15 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:614:19:614:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:618:19:618:19 | x | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | main.rs:627:16:627:17 | b1 | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | main.rs:635:16:635:17 | b2 | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | +| main.rs:648:20:648:23 | self | main.rs:648:20:648:23 | self | main.rs:649:16:649:19 | self | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | self | main.rs:653:9:653:12 | self | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:661:9:661:9 | f | +| main.rs:657:21:660:9 | self | main.rs:656:23:656:26 | self | main.rs:659:13:659:16 | self | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | main.rs:659:25:659:25 | n | +| main.rs:667:13:667:13 | a | main.rs:667:13:667:13 | a | main.rs:668:15:668:15 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:669:5:669:5 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | main.rs:672:15:672:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:677:15:677:15 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | main.rs:681:15:681:15 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:686:20:686:20 | x | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | main.rs:690:20:690:20 | z | +| main.rs:698:17:698:20 | self | main.rs:698:17:698:20 | self | main.rs:699:10:699:13 | self | +| main.rs:704:13:704:13 | a | main.rs:704:13:704:13 | a | main.rs:705:5:705:5 | a | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | main.rs:708:15:708:15 | a | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | main.rs:728:15:728:28 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | main.rs:735:15:735:26 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | main.rs:734:30:734:41 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | main.rs:741:15:741:15 | x | +| main.rs:746:13:746:15 | cap | main.rs:746:13:746:15 | cap | main.rs:752:5:752:7 | cap | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | main.rs:748:20:748:20 | b | +| main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | main.rs:753:15:753:15 | x | +| main.rs:759:13:759:13 | x | main.rs:759:13:759:13 | x | main.rs:761:19:761:19 | x | +| main.rs:760:13:760:13 | y | main.rs:760:13:760:13 | y | main.rs:768:15:768:15 | y | +| main.rs:769:13:769:16 | N0ne | main.rs:769:13:769:16 | N0ne | main.rs:770:17:770:20 | N0ne | +| main.rs:776:13:776:22 | test_alias | main.rs:776:13:776:22 | test_alias | main.rs:779:13:779:22 | test_alias | +| main.rs:778:13:778:16 | test | main.rs:778:13:778:16 | test | main.rs:780:9:780:12 | test | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | main.rs:788:15:788:15 | x | +| main.rs:789:18:789:18 | x | main.rs:789:18:789:18 | x | main.rs:790:20:790:20 | x | adjacentReads | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | main.rs:28:15:28:16 | x2 | main.rs:29:10:29:11 | x2 | | main.rs:41:9:41:10 | x3 | main.rs:41:9:41:10 | x3 | main.rs:42:15:42:16 | x3 | main.rs:44:9:44:10 | x3 | @@ -580,33 +611,34 @@ adjacentReads | main.rs:334:9:334:9 | x | main.rs:334:9:334:9 | x | main.rs:335:11:335:11 | x | main.rs:343:15:343:15 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:350:7:350:7 | x | main.rs:355:7:355:7 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:355:7:355:7 | x | main.rs:359:19:359:19 | x | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | main.rs:404:9:404:11 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | main.rs:405:9:405:10 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | main.rs:406:9:406:10 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:409:15:409:16 | b4 | main.rs:423:15:423:16 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:408:15:408:17 | a10 | main.rs:422:15:422:17 | a10 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:448:15:448:15 | f | main.rs:455:15:455:15 | f | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:487:15:487:15 | a | main.rs:488:11:488:11 | a | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:501:6:501:6 | x | main.rs:502:10:502:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:502:10:502:10 | x | main.rs:503:10:503:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:503:10:503:10 | x | main.rs:504:12:504:12 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:508:6:508:6 | x | main.rs:509:10:509:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:509:10:509:10 | x | main.rs:510:10:510:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:510:10:510:10 | x | main.rs:512:9:512:9 | x | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:522:15:522:15 | x | main.rs:526:19:526:19 | x | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:529:9:529:9 | w | main.rs:531:7:531:7 | w | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:597:15:597:15 | x | main.rs:598:15:598:15 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:603:19:603:19 | x | main.rs:604:19:604:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:607:19:607:19 | x | main.rs:608:19:608:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | main.rs:626:19:626:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | main.rs:628:19:628:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | main.rs:626:19:626:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | main.rs:628:19:628:19 | x | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:650:9:650:9 | f | main.rs:651:9:651:9 | f | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | main.rs:659:15:659:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:666:15:666:15 | a | main.rs:667:5:667:5 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:667:5:667:5 | a | main.rs:668:15:668:15 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:675:20:675:20 | x | main.rs:676:15:676:15 | x | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:406:15:406:17 | a10 | main.rs:415:9:415:11 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:407:15:407:16 | b4 | main.rs:416:9:416:10 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:408:15:408:16 | c2 | main.rs:417:9:417:10 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:420:15:420:16 | b4 | main.rs:434:15:434:16 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:419:15:419:17 | a10 | main.rs:433:15:433:17 | a10 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:459:15:459:15 | f | main.rs:466:15:466:15 | f | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:498:15:498:15 | a | main.rs:499:11:499:11 | a | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:512:6:512:6 | x | main.rs:513:10:513:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:513:10:513:10 | x | main.rs:514:10:514:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:514:10:514:10 | x | main.rs:515:12:515:12 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:519:6:519:6 | x | main.rs:520:10:520:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:520:10:520:10 | x | main.rs:521:10:521:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:521:10:521:10 | x | main.rs:523:9:523:9 | x | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:533:15:533:15 | x | main.rs:537:19:537:19 | x | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:540:9:540:9 | w | main.rs:542:7:542:7 | w | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:608:15:608:15 | x | main.rs:609:15:609:15 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:614:19:614:19 | x | main.rs:615:19:615:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:618:19:618:19 | x | main.rs:619:19:619:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | main.rs:637:19:637:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | main.rs:639:19:639:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | main.rs:637:19:637:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | main.rs:639:19:639:19 | x | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:661:9:661:9 | f | main.rs:662:9:662:9 | f | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:669:5:669:5 | a | main.rs:670:15:670:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:677:15:677:15 | a | main.rs:678:5:678:5 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:678:5:678:5 | a | main.rs:679:15:679:15 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:686:20:686:20 | x | main.rs:687:15:687:15 | x | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | main.rs:788:15:788:15 | x | main.rs:793:15:793:15 | x | phi | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:210:22:210:23 | a3 | | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:210:42:210:43 | a3 | @@ -630,24 +662,24 @@ phi | main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:106:274:108 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:54:274:56 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:79:274:81 | a13 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:384:33:384:34 | a9 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:384:53:384:54 | a9 | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:602:9:602:9 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:606:9:606:9 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:734:13:734:13 | x | main.rs:735:19:740:5 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:734:13:734:13 | x | main.rs:738:13:738:13 | x | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:395:33:395:34 | a9 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:395:53:395:54 | a9 | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:613:9:613:9 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:617:9:617:9 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:745:13:745:13 | x | main.rs:746:19:751:5 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:745:13:745:13 | x | main.rs:749:13:749:13 | x | phiReadNode | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:614:9:614:9 | x | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:625:9:625:9 | x | phiReadNodeFirstRead | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | main.rs:116:11:116:12 | s1 | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:614:9:614:9 | x | main.rs:626:19:626:19 | x | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:614:9:614:9 | x | main.rs:628:19:628:19 | x | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:625:9:625:9 | x | main.rs:637:19:637:19 | x | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:625:9:625:9 | x | main.rs:639:19:639:19 | x | phiReadInput | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:116:11:116:12 | SSA read(s1) | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:618:19:618:19 | SSA read(x) | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:620:19:620:19 | SSA read(x) | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:629:19:629:19 | SSA read(x) | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:631:19:631:19 | SSA read(x) | ultimateDef | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:22:210:23 | a3 | | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:42:210:43 | a3 | @@ -674,12 +706,12 @@ ultimateDef | main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:106:274:108 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:54:274:56 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:79:274:81 | a13 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:33:384:34 | a9 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:53:384:54 | a9 | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:602:9:602:9 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:606:9:606:9 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:735:19:740:5 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:738:13:738:13 | x | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:33:395:34 | a9 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:53:395:54 | a9 | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:613:9:613:9 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:617:9:617:9 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:746:19:751:5 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:749:13:749:13 | x | assigns | main.rs:20:9:20:10 | x1 | main.rs:20:14:20:16 | "a" | | main.rs:25:13:25:14 | x2 | main.rs:25:18:25:18 | 4 | @@ -715,51 +747,57 @@ assigns | main.rs:337:20:337:20 | x | main.rs:338:18:338:18 | x | | main.rs:348:9:348:9 | x | main.rs:348:13:348:18 | Ok(...) | | main.rs:364:9:364:9 | x | main.rs:364:13:364:19 | Some(...) | -| main.rs:427:9:427:23 | example_closure | main.rs:428:9:429:9 | \|...\| x | -| main.rs:430:9:430:10 | n1 | main.rs:431:9:431:26 | example_closure(...) | -| main.rs:435:9:435:26 | immutable_variable | main.rs:436:5:437:9 | \|...\| x | -| main.rs:438:9:438:10 | n2 | main.rs:439:9:439:29 | immutable_variable(...) | -| main.rs:445:9:445:9 | f | main.rs:446:9:447:9 | \|...\| x | -| main.rs:468:13:468:13 | f | main.rs:469:13:470:13 | \|...\| x | -| main.rs:476:9:476:9 | v | main.rs:476:13:476:41 | &... | -| main.rs:485:13:485:13 | a | main.rs:485:17:485:17 | 0 | -| main.rs:493:13:493:13 | i | main.rs:493:17:493:17 | 1 | -| main.rs:494:9:494:13 | ref_i | main.rs:495:9:495:14 | &mut i | -| main.rs:516:13:516:13 | x | main.rs:516:17:516:17 | 2 | -| main.rs:517:9:517:9 | y | main.rs:518:9:518:28 | mutate_param(...) | -| main.rs:524:13:524:13 | z | main.rs:524:17:524:17 | 4 | -| main.rs:525:9:525:9 | w | main.rs:526:9:526:19 | &mut ... | -| main.rs:538:13:538:13 | x | main.rs:538:17:538:17 | 1 | -| main.rs:539:9:539:9 | y | main.rs:540:9:540:14 | &mut x | -| main.rs:546:9:546:9 | x | main.rs:546:13:546:15 | 100 | -| main.rs:549:9:549:11 | cap | main.rs:549:15:551:5 | \|...\| ... | -| main.rs:557:13:557:13 | x | main.rs:557:17:557:17 | 1 | -| main.rs:560:9:560:16 | closure1 | main.rs:560:20:562:5 | \|...\| ... | -| main.rs:566:13:566:13 | y | main.rs:566:17:566:17 | 2 | -| main.rs:569:13:569:20 | closure2 | main.rs:569:24:571:5 | \|...\| ... | -| main.rs:570:9:570:9 | y | main.rs:570:13:570:13 | 3 | -| main.rs:575:13:575:13 | z | main.rs:575:17:575:17 | 2 | -| main.rs:578:13:578:20 | closure3 | main.rs:578:24:580:5 | \|...\| ... | -| main.rs:586:13:586:13 | i | main.rs:586:22:586:22 | 0 | -| main.rs:587:9:587:13 | block | main.rs:587:17:589:5 | { ... } | -| main.rs:588:9:588:9 | i | main.rs:588:13:588:13 | 1 | -| main.rs:596:13:596:13 | x | main.rs:596:17:596:17 | 1 | -| main.rs:602:9:602:9 | x | main.rs:602:13:602:13 | 2 | -| main.rs:606:9:606:9 | x | main.rs:606:13:606:13 | 3 | -| main.rs:614:9:614:9 | x | main.rs:614:13:614:13 | 1 | -| main.rs:646:17:646:17 | f | main.rs:646:21:649:9 | \|...\| ... | -| main.rs:656:13:656:13 | a | main.rs:656:17:656:35 | MyStruct {...} | -| main.rs:660:5:660:5 | a | main.rs:660:9:660:27 | MyStruct {...} | -| main.rs:665:13:665:13 | a | main.rs:665:17:665:25 | [...] | -| main.rs:669:5:669:5 | a | main.rs:669:9:669:17 | [...] | -| main.rs:674:9:674:9 | x | main.rs:674:13:674:14 | 16 | -| main.rs:678:9:678:9 | z | main.rs:678:13:678:14 | 17 | -| main.rs:693:13:693:13 | a | main.rs:693:17:693:35 | MyStruct {...} | -| main.rs:715:9:715:22 | var_from_macro | main.rs:716:9:716:25 | MacroExpr | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:23:716:24 | 37 | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:24:718:25 | 33 | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | 0 | -| main.rs:729:5:729:5 | x | main.rs:729:9:729:9 | 1 | -| main.rs:734:13:734:13 | x | main.rs:734:17:734:19 | 100 | -| main.rs:735:13:735:15 | cap | main.rs:735:19:740:5 | \|...\| ... | -| main.rs:738:13:738:13 | x | main.rs:738:17:738:19 | 200 | +| main.rs:373:9:373:9 | x | main.rs:373:13:373:20 | Some(...) | +| main.rs:438:9:438:23 | example_closure | main.rs:439:9:440:9 | \|...\| x | +| main.rs:441:9:441:10 | n1 | main.rs:442:9:442:26 | example_closure(...) | +| main.rs:446:9:446:26 | immutable_variable | main.rs:447:5:448:9 | \|...\| x | +| main.rs:449:9:449:10 | n2 | main.rs:450:9:450:29 | immutable_variable(...) | +| main.rs:456:9:456:9 | f | main.rs:457:9:458:9 | \|...\| x | +| main.rs:479:13:479:13 | f | main.rs:480:13:481:13 | \|...\| x | +| main.rs:487:9:487:9 | v | main.rs:487:13:487:41 | &... | +| main.rs:496:13:496:13 | a | main.rs:496:17:496:17 | 0 | +| main.rs:504:13:504:13 | i | main.rs:504:17:504:17 | 1 | +| main.rs:505:9:505:13 | ref_i | main.rs:506:9:506:14 | &mut i | +| main.rs:527:13:527:13 | x | main.rs:527:17:527:17 | 2 | +| main.rs:528:9:528:9 | y | main.rs:529:9:529:28 | mutate_param(...) | +| main.rs:535:13:535:13 | z | main.rs:535:17:535:17 | 4 | +| main.rs:536:9:536:9 | w | main.rs:537:9:537:19 | &mut ... | +| main.rs:549:13:549:13 | x | main.rs:549:17:549:17 | 1 | +| main.rs:550:9:550:9 | y | main.rs:551:9:551:14 | &mut x | +| main.rs:557:9:557:9 | x | main.rs:557:13:557:15 | 100 | +| main.rs:560:9:560:11 | cap | main.rs:560:15:562:5 | \|...\| ... | +| main.rs:568:13:568:13 | x | main.rs:568:17:568:17 | 1 | +| main.rs:571:9:571:16 | closure1 | main.rs:571:20:573:5 | \|...\| ... | +| main.rs:577:13:577:13 | y | main.rs:577:17:577:17 | 2 | +| main.rs:580:13:580:20 | closure2 | main.rs:580:24:582:5 | \|...\| ... | +| main.rs:581:9:581:9 | y | main.rs:581:13:581:13 | 3 | +| main.rs:586:13:586:13 | z | main.rs:586:17:586:17 | 2 | +| main.rs:589:13:589:20 | closure3 | main.rs:589:24:591:5 | \|...\| ... | +| main.rs:597:13:597:13 | i | main.rs:597:22:597:22 | 0 | +| main.rs:598:9:598:13 | block | main.rs:598:17:600:5 | { ... } | +| main.rs:599:9:599:9 | i | main.rs:599:13:599:13 | 1 | +| main.rs:607:13:607:13 | x | main.rs:607:17:607:17 | 1 | +| main.rs:613:9:613:9 | x | main.rs:613:13:613:13 | 2 | +| main.rs:617:9:617:9 | x | main.rs:617:13:617:13 | 3 | +| main.rs:625:9:625:9 | x | main.rs:625:13:625:13 | 1 | +| main.rs:657:17:657:17 | f | main.rs:657:21:660:9 | \|...\| ... | +| main.rs:667:13:667:13 | a | main.rs:667:17:667:35 | MyStruct {...} | +| main.rs:671:5:671:5 | a | main.rs:671:9:671:27 | MyStruct {...} | +| main.rs:676:13:676:13 | a | main.rs:676:17:676:25 | [...] | +| main.rs:680:5:680:5 | a | main.rs:680:9:680:17 | [...] | +| main.rs:685:9:685:9 | x | main.rs:685:13:685:14 | 16 | +| main.rs:689:9:689:9 | z | main.rs:689:13:689:14 | 17 | +| main.rs:704:13:704:13 | a | main.rs:704:17:704:35 | MyStruct {...} | +| main.rs:726:9:726:22 | var_from_macro | main.rs:727:9:727:25 | MacroExpr | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:23:727:24 | 37 | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:24:729:25 | 33 | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | 0 | +| main.rs:740:5:740:5 | x | main.rs:740:9:740:9 | 1 | +| main.rs:745:13:745:13 | x | main.rs:745:17:745:19 | 100 | +| main.rs:746:13:746:15 | cap | main.rs:746:19:751:5 | \|...\| ... | +| main.rs:749:13:749:13 | x | main.rs:749:17:749:19 | 200 | +| main.rs:759:13:759:13 | x | main.rs:759:17:759:24 | Some(...) | +| main.rs:760:13:760:13 | y | main.rs:761:13:767:9 | match x { ... } | +| main.rs:776:13:776:22 | test_alias | main.rs:777:13:777:16 | test | +| main.rs:778:13:778:16 | test | main.rs:779:13:779:24 | test_alias(...) | +| main.rs:787:13:787:13 | x | main.rs:787:17:787:23 | Some(...) | diff --git a/rust/ql/test/library-tests/variables/Ssa.ql b/rust/ql/test/library-tests/variables/Ssa.ql index d93a1f13b649..8ca9bd15e666 100644 --- a/rust/ql/test/library-tests/variables/Ssa.ql +++ b/rust/ql/test/library-tests/variables/Ssa.ql @@ -10,17 +10,17 @@ query predicate definition(Ssa::Definition def, Variable v) { toBeTested(v.getEnclosingCfgScope()) and def.getSourceVariable() = v } -query predicate read(Ssa::Definition def, Variable v, CfgNode read) { +query predicate read(Ssa::Definition def, Variable v, Expr read) { toBeTested(v.getEnclosingCfgScope()) and def.getSourceVariable() = v and read = def.getARead() } -query predicate firstRead(Ssa::Definition def, Variable v, CfgNode read) { +query predicate firstRead(Ssa::Definition def, Variable v, Expr read) { toBeTested(v.getEnclosingCfgScope()) and def.getSourceVariable() = v and read = def.getAFirstRead() } -query predicate adjacentReads(Ssa::Definition def, Variable v, CfgNode read1, CfgNode read2) { +query predicate adjacentReads(Ssa::Definition def, Variable v, Expr read1, Expr read2) { toBeTested(v.getEnclosingCfgScope()) and def.getSourceVariable() = v and def.hasAdjacentReads(read1, read2) @@ -54,4 +54,4 @@ query predicate ultimateDef(Ssa::Definition def, Definition ult) { ult != def } -query predicate assigns(Ssa::WriteDefinition def, CfgNode value) { def.assigns(value) } +query predicate assigns(Ssa::WriteDefinition def, Expr value) { def.assigns(value) } diff --git a/rust/ql/test/library-tests/variables/main.rs b/rust/ql/test/library-tests/variables/main.rs index 3ed78f601d64..fe13f89b1775 100644 --- a/rust/ql/test/library-tests/variables/main.rs +++ b/rust/ql/test/library-tests/variables/main.rs @@ -369,6 +369,17 @@ fn match_pattern15() { }; } +fn match_pattern16() { + let x = Some(32); + match x { // $ read_access=x + Some(y) // y1 + if let Some(y) = // y2 + Some(y) // $ read_access=y1 + => print_i64(y), // $ read_access=y2 + _ => {}, + } +} + fn param_pattern1( a8: &str, // a8 ( @@ -742,6 +753,51 @@ fn capture_phi() { print_i64(x); // $ read_access=x } +mod patterns { + #[rustfmt::skip] + pub fn test() -> Option { + let x = Some(42); // x + let y : Option = // y1 + match x { // $ read_access=x + Some(y) => { // y2 + None + } + None => + None + }; + match y { // $ read_access=y1 + N0ne => // n0ne + N0ne // $ read_access=n0ne + } + } + + #[rustfmt::skip] + fn test2() -> Option { + let test_alias = // test_alias + test; + let test = // test + test_alias(); // $ read_access=test_alias + test // $ read_access=test + } + + const z: i32 = 0; + + #[rustfmt::skip] + fn test3() { + let x = Some(0); // x1 + match x { // $ read_access=x1 + Some(x) // x2 + => x, // $ read_access=x2 + _ => 0 + }; + match x { // $ read_access=x1 + Some(z) => + z, + _ => 0 + }; + } +} + fn main() { immutable_variable(); mutable_variable(); @@ -767,6 +823,7 @@ fn main() { match_pattern13(); match_pattern14(); match_pattern15(); + match_pattern16(); param_pattern1("a", ("b", "c")); param_pattern2(Either::Left(45)); destruct_assignment(); diff --git a/rust/ql/test/library-tests/variables/variables.expected b/rust/ql/test/library-tests/variables/variables.expected index 22c54b9740c9..ea360357d970 100644 --- a/rust/ql/test/library-tests/variables/variables.expected +++ b/rust/ql/test/library-tests/variables/variables.expected @@ -70,75 +70,86 @@ variable | main.rs:354:20:354:20 | x | | main.rs:364:9:364:9 | x | | main.rs:366:18:366:18 | x | -| main.rs:373:5:373:6 | a8 | -| main.rs:375:9:375:10 | b3 | -| main.rs:376:9:376:10 | c1 | -| main.rs:384:20:384:55 | a9 | -| main.rs:391:13:391:15 | a10 | -| main.rs:392:13:392:14 | b4 | -| main.rs:393:13:393:14 | c2 | -| main.rs:414:13:414:15 | a10 | -| main.rs:415:13:415:14 | b4 | -| main.rs:427:9:427:23 | example_closure | -| main.rs:428:10:428:10 | x | -| main.rs:430:9:430:10 | n1 | -| main.rs:435:9:435:26 | immutable_variable | -| main.rs:436:6:436:6 | x | -| main.rs:438:9:438:10 | n2 | -| main.rs:445:9:445:9 | f | -| main.rs:446:10:446:10 | x | -| main.rs:450:10:450:10 | x | -| main.rs:459:14:459:14 | x | -| main.rs:468:13:468:13 | f | -| main.rs:469:14:469:14 | x | -| main.rs:476:9:476:9 | v | -| main.rs:478:9:478:12 | text | -| main.rs:485:13:485:13 | a | -| main.rs:493:13:493:13 | i | -| main.rs:494:9:494:13 | ref_i | -| main.rs:500:17:500:17 | x | -| main.rs:507:22:507:22 | x | -| main.rs:507:38:507:38 | y | -| main.rs:516:13:516:13 | x | -| main.rs:517:9:517:9 | y | -| main.rs:524:13:524:13 | z | -| main.rs:525:9:525:9 | w | -| main.rs:538:13:538:13 | x | -| main.rs:539:9:539:9 | y | -| main.rs:546:9:546:9 | x | -| main.rs:549:9:549:11 | cap | -| main.rs:557:13:557:13 | x | -| main.rs:560:9:560:16 | closure1 | -| main.rs:566:13:566:13 | y | -| main.rs:569:13:569:20 | closure2 | -| main.rs:575:13:575:13 | z | -| main.rs:578:13:578:20 | closure3 | -| main.rs:586:13:586:13 | i | -| main.rs:587:9:587:13 | block | -| main.rs:595:8:595:8 | b | -| main.rs:596:13:596:13 | x | -| main.rs:613:13:613:14 | b1 | -| main.rs:613:23:613:24 | b2 | -| main.rs:614:9:614:9 | x | -| main.rs:637:20:637:23 | self | -| main.rs:641:11:641:14 | self | -| main.rs:645:23:645:26 | self | -| main.rs:646:17:646:17 | f | -| main.rs:646:22:646:22 | n | -| main.rs:656:13:656:13 | a | -| main.rs:665:13:665:13 | a | -| main.rs:674:9:674:9 | x | -| main.rs:678:9:678:9 | z | -| main.rs:687:17:687:20 | self | -| main.rs:693:13:693:13 | a | -| main.rs:715:9:715:22 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | -| main.rs:728:9:728:9 | x | -| main.rs:734:13:734:13 | x | -| main.rs:735:13:735:15 | cap | -| main.rs:735:20:735:20 | b | +| main.rs:373:9:373:9 | x | +| main.rs:375:14:375:14 | y | +| main.rs:376:25:376:25 | y | +| main.rs:384:5:384:6 | a8 | +| main.rs:386:9:386:10 | b3 | +| main.rs:387:9:387:10 | c1 | +| main.rs:395:20:395:55 | a9 | +| main.rs:402:13:402:15 | a10 | +| main.rs:403:13:403:14 | b4 | +| main.rs:404:13:404:14 | c2 | +| main.rs:425:13:425:15 | a10 | +| main.rs:426:13:426:14 | b4 | +| main.rs:438:9:438:23 | example_closure | +| main.rs:439:10:439:10 | x | +| main.rs:441:9:441:10 | n1 | +| main.rs:446:9:446:26 | immutable_variable | +| main.rs:447:6:447:6 | x | +| main.rs:449:9:449:10 | n2 | +| main.rs:456:9:456:9 | f | +| main.rs:457:10:457:10 | x | +| main.rs:461:10:461:10 | x | +| main.rs:470:14:470:14 | x | +| main.rs:479:13:479:13 | f | +| main.rs:480:14:480:14 | x | +| main.rs:487:9:487:9 | v | +| main.rs:489:9:489:12 | text | +| main.rs:496:13:496:13 | a | +| main.rs:504:13:504:13 | i | +| main.rs:505:9:505:13 | ref_i | +| main.rs:511:17:511:17 | x | +| main.rs:518:22:518:22 | x | +| main.rs:518:38:518:38 | y | +| main.rs:527:13:527:13 | x | +| main.rs:528:9:528:9 | y | +| main.rs:535:13:535:13 | z | +| main.rs:536:9:536:9 | w | +| main.rs:549:13:549:13 | x | +| main.rs:550:9:550:9 | y | +| main.rs:557:9:557:9 | x | +| main.rs:560:9:560:11 | cap | +| main.rs:568:13:568:13 | x | +| main.rs:571:9:571:16 | closure1 | +| main.rs:577:13:577:13 | y | +| main.rs:580:13:580:20 | closure2 | +| main.rs:586:13:586:13 | z | +| main.rs:589:13:589:20 | closure3 | +| main.rs:597:13:597:13 | i | +| main.rs:598:9:598:13 | block | +| main.rs:606:8:606:8 | b | +| main.rs:607:13:607:13 | x | +| main.rs:624:13:624:14 | b1 | +| main.rs:624:23:624:24 | b2 | +| main.rs:625:9:625:9 | x | +| main.rs:648:20:648:23 | self | +| main.rs:652:11:652:14 | self | +| main.rs:656:23:656:26 | self | +| main.rs:657:17:657:17 | f | +| main.rs:657:22:657:22 | n | +| main.rs:667:13:667:13 | a | +| main.rs:676:13:676:13 | a | +| main.rs:685:9:685:9 | x | +| main.rs:689:9:689:9 | z | +| main.rs:698:17:698:20 | self | +| main.rs:704:13:704:13 | a | +| main.rs:726:9:726:22 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | +| main.rs:739:9:739:9 | x | +| main.rs:745:13:745:13 | x | +| main.rs:746:13:746:15 | cap | +| main.rs:746:20:746:20 | b | +| main.rs:759:13:759:13 | x | +| main.rs:760:13:760:13 | y | +| main.rs:762:18:762:18 | y | +| main.rs:769:13:769:16 | N0ne | +| main.rs:776:13:776:22 | test_alias | +| main.rs:778:13:778:16 | test | +| main.rs:787:13:787:13 | x | +| main.rs:789:18:789:18 | x | variableAccess | main.rs:7:20:7:20 | s | main.rs:5:14:5:14 | s | | main.rs:12:20:12:20 | i | main.rs:10:14:10:14 | i | @@ -233,146 +244,157 @@ variableAccess | main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x | | main.rs:365:11:365:11 | x | main.rs:364:9:364:9 | x | | main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | -| main.rs:379:15:379:16 | a8 | main.rs:373:5:373:6 | a8 | -| main.rs:380:15:380:16 | b3 | main.rs:375:9:375:10 | b3 | -| main.rs:381:15:381:16 | c1 | main.rs:376:9:376:10 | c1 | -| main.rs:386:15:386:16 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:395:15:395:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:396:15:396:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:397:15:397:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:404:9:404:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:405:9:405:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:406:9:406:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:408:15:408:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:409:15:409:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:410:15:410:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:417:23:417:25 | a10 | main.rs:414:13:414:15 | a10 | -| main.rs:418:23:418:24 | b4 | main.rs:415:13:415:14 | b4 | -| main.rs:422:15:422:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:423:15:423:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:429:9:429:9 | x | main.rs:428:10:428:10 | x | -| main.rs:431:9:431:23 | example_closure | main.rs:427:9:427:23 | example_closure | -| main.rs:432:15:432:16 | n1 | main.rs:430:9:430:10 | n1 | -| main.rs:437:9:437:9 | x | main.rs:436:6:436:6 | x | -| main.rs:439:9:439:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | -| main.rs:440:15:440:16 | n2 | main.rs:438:9:438:10 | n2 | -| main.rs:447:9:447:9 | x | main.rs:446:10:446:10 | x | -| main.rs:448:15:448:15 | f | main.rs:445:9:445:9 | f | -| main.rs:452:9:452:9 | x | main.rs:450:10:450:10 | x | -| main.rs:455:15:455:15 | f | main.rs:445:9:445:9 | f | -| main.rs:461:17:461:17 | x | main.rs:459:14:459:14 | x | -| main.rs:470:13:470:13 | x | main.rs:469:14:469:14 | x | -| main.rs:471:19:471:19 | f | main.rs:468:13:468:13 | f | -| main.rs:479:12:479:12 | v | main.rs:476:9:476:9 | v | -| main.rs:480:19:480:22 | text | main.rs:478:9:478:12 | text | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | -| main.rs:487:15:487:15 | a | main.rs:485:13:485:13 | a | -| main.rs:488:11:488:11 | a | main.rs:485:13:485:13 | a | -| main.rs:489:15:489:15 | a | main.rs:485:13:485:13 | a | -| main.rs:495:14:495:14 | i | main.rs:493:13:493:13 | i | -| main.rs:496:6:496:10 | ref_i | main.rs:494:9:494:13 | ref_i | -| main.rs:497:15:497:15 | i | main.rs:493:13:493:13 | i | -| main.rs:501:6:501:6 | x | main.rs:500:17:500:17 | x | -| main.rs:502:10:502:10 | x | main.rs:500:17:500:17 | x | -| main.rs:503:10:503:10 | x | main.rs:500:17:500:17 | x | -| main.rs:504:12:504:12 | x | main.rs:500:17:500:17 | x | -| main.rs:508:6:508:6 | x | main.rs:507:22:507:22 | x | -| main.rs:509:10:509:10 | x | main.rs:507:22:507:22 | x | -| main.rs:510:10:510:10 | x | main.rs:507:22:507:22 | x | -| main.rs:511:6:511:6 | y | main.rs:507:38:507:38 | y | -| main.rs:512:9:512:9 | x | main.rs:507:22:507:22 | x | -| main.rs:518:27:518:27 | x | main.rs:516:13:516:13 | x | -| main.rs:519:6:519:6 | y | main.rs:517:9:517:9 | y | -| main.rs:522:15:522:15 | x | main.rs:516:13:516:13 | x | -| main.rs:526:19:526:19 | x | main.rs:516:13:516:13 | x | -| main.rs:528:14:528:14 | z | main.rs:524:13:524:13 | z | -| main.rs:529:9:529:9 | w | main.rs:525:9:525:9 | w | -| main.rs:531:7:531:7 | w | main.rs:525:9:525:9 | w | -| main.rs:534:15:534:15 | z | main.rs:524:13:524:13 | z | -| main.rs:540:14:540:14 | x | main.rs:538:13:538:13 | x | -| main.rs:541:6:541:6 | y | main.rs:539:9:539:9 | y | -| main.rs:542:15:542:15 | x | main.rs:538:13:538:13 | x | -| main.rs:550:19:550:19 | x | main.rs:546:9:546:9 | x | -| main.rs:552:5:552:7 | cap | main.rs:549:9:549:11 | cap | -| main.rs:553:15:553:15 | x | main.rs:546:9:546:9 | x | -| main.rs:561:19:561:19 | x | main.rs:557:13:557:13 | x | -| main.rs:563:5:563:12 | closure1 | main.rs:560:9:560:16 | closure1 | -| main.rs:564:15:564:15 | x | main.rs:557:13:557:13 | x | -| main.rs:570:9:570:9 | y | main.rs:566:13:566:13 | y | -| main.rs:572:5:572:12 | closure2 | main.rs:569:13:569:20 | closure2 | -| main.rs:573:15:573:15 | y | main.rs:566:13:566:13 | y | -| main.rs:579:9:579:9 | z | main.rs:575:13:575:13 | z | -| main.rs:581:5:581:12 | closure3 | main.rs:578:13:578:20 | closure3 | -| main.rs:582:15:582:15 | z | main.rs:575:13:575:13 | z | -| main.rs:588:9:588:9 | i | main.rs:586:13:586:13 | i | -| main.rs:591:5:591:9 | block | main.rs:587:9:587:13 | block | -| main.rs:592:15:592:15 | i | main.rs:586:13:586:13 | i | -| main.rs:597:15:597:15 | x | main.rs:596:13:596:13 | x | -| main.rs:598:15:598:15 | x | main.rs:596:13:596:13 | x | -| main.rs:600:16:600:16 | b | main.rs:595:8:595:8 | b | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | -| main.rs:603:19:603:19 | x | main.rs:596:13:596:13 | x | -| main.rs:604:19:604:19 | x | main.rs:596:13:596:13 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | -| main.rs:607:19:607:19 | x | main.rs:596:13:596:13 | x | -| main.rs:608:19:608:19 | x | main.rs:596:13:596:13 | x | -| main.rs:610:15:610:15 | x | main.rs:596:13:596:13 | x | -| main.rs:616:16:616:17 | b1 | main.rs:613:13:613:14 | b1 | -| main.rs:618:19:618:19 | x | main.rs:614:9:614:9 | x | -| main.rs:620:19:620:19 | x | main.rs:614:9:614:9 | x | -| main.rs:624:16:624:17 | b2 | main.rs:613:23:613:24 | b2 | -| main.rs:626:19:626:19 | x | main.rs:614:9:614:9 | x | -| main.rs:628:19:628:19 | x | main.rs:614:9:614:9 | x | -| main.rs:638:16:638:19 | self | main.rs:637:20:637:23 | self | -| main.rs:642:9:642:12 | self | main.rs:641:11:641:14 | self | -| main.rs:648:13:648:16 | self | main.rs:645:23:645:26 | self | -| main.rs:648:25:648:25 | n | main.rs:646:22:646:22 | n | -| main.rs:650:9:650:9 | f | main.rs:646:17:646:17 | f | -| main.rs:651:9:651:9 | f | main.rs:646:17:646:17 | f | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | -| main.rs:658:5:658:5 | a | main.rs:656:13:656:13 | a | -| main.rs:659:15:659:15 | a | main.rs:656:13:656:13 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | -| main.rs:661:15:661:15 | a | main.rs:656:13:656:13 | a | -| main.rs:666:15:666:15 | a | main.rs:665:13:665:13 | a | -| main.rs:667:5:667:5 | a | main.rs:665:13:665:13 | a | -| main.rs:668:15:668:15 | a | main.rs:665:13:665:13 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | -| main.rs:670:15:670:15 | a | main.rs:665:13:665:13 | a | -| main.rs:675:20:675:20 | x | main.rs:674:9:674:9 | x | -| main.rs:676:15:676:15 | x | main.rs:674:9:674:9 | x | -| main.rs:679:20:679:20 | z | main.rs:678:9:678:9 | z | -| main.rs:688:10:688:13 | self | main.rs:687:17:687:20 | self | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | -| main.rs:697:15:697:15 | a | main.rs:693:13:693:13 | a | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:717:15:717:28 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | -| main.rs:723:30:723:41 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | -| main.rs:724:15:724:26 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | -| main.rs:730:15:730:15 | x | main.rs:728:9:728:9 | x | -| main.rs:737:20:737:20 | b | main.rs:735:20:735:20 | b | -| main.rs:738:13:738:13 | x | main.rs:734:13:734:13 | x | -| main.rs:741:5:741:7 | cap | main.rs:735:13:735:15 | cap | -| main.rs:742:15:742:15 | x | main.rs:734:13:734:13 | x | +| main.rs:374:11:374:11 | x | main.rs:373:9:373:9 | x | +| main.rs:377:22:377:22 | y | main.rs:375:14:375:14 | y | +| main.rs:378:26:378:26 | y | main.rs:376:25:376:25 | y | +| main.rs:390:15:390:16 | a8 | main.rs:384:5:384:6 | a8 | +| main.rs:391:15:391:16 | b3 | main.rs:386:9:386:10 | b3 | +| main.rs:392:15:392:16 | c1 | main.rs:387:9:387:10 | c1 | +| main.rs:397:15:397:16 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:406:15:406:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:407:15:407:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:408:15:408:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:415:9:415:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:416:9:416:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:417:9:417:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:419:15:419:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:420:15:420:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:421:15:421:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:428:23:428:25 | a10 | main.rs:425:13:425:15 | a10 | +| main.rs:429:23:429:24 | b4 | main.rs:426:13:426:14 | b4 | +| main.rs:433:15:433:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:434:15:434:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:440:9:440:9 | x | main.rs:439:10:439:10 | x | +| main.rs:442:9:442:23 | example_closure | main.rs:438:9:438:23 | example_closure | +| main.rs:443:15:443:16 | n1 | main.rs:441:9:441:10 | n1 | +| main.rs:448:9:448:9 | x | main.rs:447:6:447:6 | x | +| main.rs:450:9:450:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | +| main.rs:451:15:451:16 | n2 | main.rs:449:9:449:10 | n2 | +| main.rs:458:9:458:9 | x | main.rs:457:10:457:10 | x | +| main.rs:459:15:459:15 | f | main.rs:456:9:456:9 | f | +| main.rs:463:9:463:9 | x | main.rs:461:10:461:10 | x | +| main.rs:466:15:466:15 | f | main.rs:456:9:456:9 | f | +| main.rs:472:17:472:17 | x | main.rs:470:14:470:14 | x | +| main.rs:481:13:481:13 | x | main.rs:480:14:480:14 | x | +| main.rs:482:19:482:19 | f | main.rs:479:13:479:13 | f | +| main.rs:490:12:490:12 | v | main.rs:487:9:487:9 | v | +| main.rs:491:19:491:22 | text | main.rs:489:9:489:12 | text | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | +| main.rs:498:15:498:15 | a | main.rs:496:13:496:13 | a | +| main.rs:499:11:499:11 | a | main.rs:496:13:496:13 | a | +| main.rs:500:15:500:15 | a | main.rs:496:13:496:13 | a | +| main.rs:506:14:506:14 | i | main.rs:504:13:504:13 | i | +| main.rs:507:6:507:10 | ref_i | main.rs:505:9:505:13 | ref_i | +| main.rs:508:15:508:15 | i | main.rs:504:13:504:13 | i | +| main.rs:512:6:512:6 | x | main.rs:511:17:511:17 | x | +| main.rs:513:10:513:10 | x | main.rs:511:17:511:17 | x | +| main.rs:514:10:514:10 | x | main.rs:511:17:511:17 | x | +| main.rs:515:12:515:12 | x | main.rs:511:17:511:17 | x | +| main.rs:519:6:519:6 | x | main.rs:518:22:518:22 | x | +| main.rs:520:10:520:10 | x | main.rs:518:22:518:22 | x | +| main.rs:521:10:521:10 | x | main.rs:518:22:518:22 | x | +| main.rs:522:6:522:6 | y | main.rs:518:38:518:38 | y | +| main.rs:523:9:523:9 | x | main.rs:518:22:518:22 | x | +| main.rs:529:27:529:27 | x | main.rs:527:13:527:13 | x | +| main.rs:530:6:530:6 | y | main.rs:528:9:528:9 | y | +| main.rs:533:15:533:15 | x | main.rs:527:13:527:13 | x | +| main.rs:537:19:537:19 | x | main.rs:527:13:527:13 | x | +| main.rs:539:14:539:14 | z | main.rs:535:13:535:13 | z | +| main.rs:540:9:540:9 | w | main.rs:536:9:536:9 | w | +| main.rs:542:7:542:7 | w | main.rs:536:9:536:9 | w | +| main.rs:545:15:545:15 | z | main.rs:535:13:535:13 | z | +| main.rs:551:14:551:14 | x | main.rs:549:13:549:13 | x | +| main.rs:552:6:552:6 | y | main.rs:550:9:550:9 | y | +| main.rs:553:15:553:15 | x | main.rs:549:13:549:13 | x | +| main.rs:561:19:561:19 | x | main.rs:557:9:557:9 | x | +| main.rs:563:5:563:7 | cap | main.rs:560:9:560:11 | cap | +| main.rs:564:15:564:15 | x | main.rs:557:9:557:9 | x | +| main.rs:572:19:572:19 | x | main.rs:568:13:568:13 | x | +| main.rs:574:5:574:12 | closure1 | main.rs:571:9:571:16 | closure1 | +| main.rs:575:15:575:15 | x | main.rs:568:13:568:13 | x | +| main.rs:581:9:581:9 | y | main.rs:577:13:577:13 | y | +| main.rs:583:5:583:12 | closure2 | main.rs:580:13:580:20 | closure2 | +| main.rs:584:15:584:15 | y | main.rs:577:13:577:13 | y | +| main.rs:590:9:590:9 | z | main.rs:586:13:586:13 | z | +| main.rs:592:5:592:12 | closure3 | main.rs:589:13:589:20 | closure3 | +| main.rs:593:15:593:15 | z | main.rs:586:13:586:13 | z | +| main.rs:599:9:599:9 | i | main.rs:597:13:597:13 | i | +| main.rs:602:5:602:9 | block | main.rs:598:9:598:13 | block | +| main.rs:603:15:603:15 | i | main.rs:597:13:597:13 | i | +| main.rs:608:15:608:15 | x | main.rs:607:13:607:13 | x | +| main.rs:609:15:609:15 | x | main.rs:607:13:607:13 | x | +| main.rs:611:16:611:16 | b | main.rs:606:8:606:8 | b | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | +| main.rs:614:19:614:19 | x | main.rs:607:13:607:13 | x | +| main.rs:615:19:615:19 | x | main.rs:607:13:607:13 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | +| main.rs:618:19:618:19 | x | main.rs:607:13:607:13 | x | +| main.rs:619:19:619:19 | x | main.rs:607:13:607:13 | x | +| main.rs:621:15:621:15 | x | main.rs:607:13:607:13 | x | +| main.rs:627:16:627:17 | b1 | main.rs:624:13:624:14 | b1 | +| main.rs:629:19:629:19 | x | main.rs:625:9:625:9 | x | +| main.rs:631:19:631:19 | x | main.rs:625:9:625:9 | x | +| main.rs:635:16:635:17 | b2 | main.rs:624:23:624:24 | b2 | +| main.rs:637:19:637:19 | x | main.rs:625:9:625:9 | x | +| main.rs:639:19:639:19 | x | main.rs:625:9:625:9 | x | +| main.rs:649:16:649:19 | self | main.rs:648:20:648:23 | self | +| main.rs:653:9:653:12 | self | main.rs:652:11:652:14 | self | +| main.rs:659:13:659:16 | self | main.rs:656:23:656:26 | self | +| main.rs:659:25:659:25 | n | main.rs:657:22:657:22 | n | +| main.rs:661:9:661:9 | f | main.rs:657:17:657:17 | f | +| main.rs:662:9:662:9 | f | main.rs:657:17:657:17 | f | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | +| main.rs:669:5:669:5 | a | main.rs:667:13:667:13 | a | +| main.rs:670:15:670:15 | a | main.rs:667:13:667:13 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | +| main.rs:672:15:672:15 | a | main.rs:667:13:667:13 | a | +| main.rs:677:15:677:15 | a | main.rs:676:13:676:13 | a | +| main.rs:678:5:678:5 | a | main.rs:676:13:676:13 | a | +| main.rs:679:15:679:15 | a | main.rs:676:13:676:13 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | +| main.rs:681:15:681:15 | a | main.rs:676:13:676:13 | a | +| main.rs:686:20:686:20 | x | main.rs:685:9:685:9 | x | +| main.rs:687:15:687:15 | x | main.rs:685:9:685:9 | x | +| main.rs:690:20:690:20 | z | main.rs:689:9:689:9 | z | +| main.rs:699:10:699:13 | self | main.rs:698:17:698:20 | self | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | +| main.rs:708:15:708:15 | a | main.rs:704:13:704:13 | a | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:728:15:728:28 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | +| main.rs:734:30:734:41 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | +| main.rs:735:15:735:26 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | +| main.rs:741:15:741:15 | x | main.rs:739:9:739:9 | x | +| main.rs:748:20:748:20 | b | main.rs:746:20:746:20 | b | +| main.rs:749:13:749:13 | x | main.rs:745:13:745:13 | x | +| main.rs:752:5:752:7 | cap | main.rs:746:13:746:15 | cap | +| main.rs:753:15:753:15 | x | main.rs:745:13:745:13 | x | +| main.rs:761:19:761:19 | x | main.rs:759:13:759:13 | x | +| main.rs:768:15:768:15 | y | main.rs:760:13:760:13 | y | +| main.rs:770:17:770:20 | N0ne | main.rs:769:13:769:16 | N0ne | +| main.rs:779:13:779:22 | test_alias | main.rs:776:13:776:22 | test_alias | +| main.rs:780:9:780:12 | test | main.rs:778:13:778:16 | test | +| main.rs:788:15:788:15 | x | main.rs:787:13:787:13 | x | +| main.rs:790:20:790:20 | x | main.rs:789:18:789:18 | x | +| main.rs:793:15:793:15 | x | main.rs:787:13:787:13 | x | variableWriteAccess | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:29:5:29:6 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:36:5:36:5 | x | main.rs:34:13:34:13 | x | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:570:9:570:9 | y | main.rs:566:13:566:13 | y | -| main.rs:588:9:588:9 | i | main.rs:586:13:586:13 | i | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | -| main.rs:738:13:738:13 | x | main.rs:734:13:734:13 | x | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:581:9:581:9 | y | main.rs:577:13:577:13 | y | +| main.rs:599:9:599:9 | i | main.rs:597:13:597:13 | i | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | +| main.rs:749:13:749:13 | x | main.rs:745:13:745:13 | x | variableReadAccess | main.rs:7:20:7:20 | s | main.rs:5:14:5:14 | s | | main.rs:12:20:12:20 | i | main.rs:10:14:10:14 | i | @@ -462,111 +484,122 @@ variableReadAccess | main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x | | main.rs:365:11:365:11 | x | main.rs:364:9:364:9 | x | | main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | -| main.rs:379:15:379:16 | a8 | main.rs:373:5:373:6 | a8 | -| main.rs:380:15:380:16 | b3 | main.rs:375:9:375:10 | b3 | -| main.rs:381:15:381:16 | c1 | main.rs:376:9:376:10 | c1 | -| main.rs:386:15:386:16 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:395:15:395:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:396:15:396:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:397:15:397:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:404:9:404:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:405:9:405:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:406:9:406:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:408:15:408:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:409:15:409:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:410:15:410:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:417:23:417:25 | a10 | main.rs:414:13:414:15 | a10 | -| main.rs:418:23:418:24 | b4 | main.rs:415:13:415:14 | b4 | -| main.rs:422:15:422:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:423:15:423:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:429:9:429:9 | x | main.rs:428:10:428:10 | x | -| main.rs:431:9:431:23 | example_closure | main.rs:427:9:427:23 | example_closure | -| main.rs:432:15:432:16 | n1 | main.rs:430:9:430:10 | n1 | -| main.rs:437:9:437:9 | x | main.rs:436:6:436:6 | x | -| main.rs:439:9:439:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | -| main.rs:440:15:440:16 | n2 | main.rs:438:9:438:10 | n2 | -| main.rs:447:9:447:9 | x | main.rs:446:10:446:10 | x | -| main.rs:448:15:448:15 | f | main.rs:445:9:445:9 | f | -| main.rs:452:9:452:9 | x | main.rs:450:10:450:10 | x | -| main.rs:455:15:455:15 | f | main.rs:445:9:445:9 | f | -| main.rs:461:17:461:17 | x | main.rs:459:14:459:14 | x | -| main.rs:470:13:470:13 | x | main.rs:469:14:469:14 | x | -| main.rs:471:19:471:19 | f | main.rs:468:13:468:13 | f | -| main.rs:479:12:479:12 | v | main.rs:476:9:476:9 | v | -| main.rs:480:19:480:22 | text | main.rs:478:9:478:12 | text | -| main.rs:487:15:487:15 | a | main.rs:485:13:485:13 | a | -| main.rs:489:15:489:15 | a | main.rs:485:13:485:13 | a | -| main.rs:496:6:496:10 | ref_i | main.rs:494:9:494:13 | ref_i | -| main.rs:497:15:497:15 | i | main.rs:493:13:493:13 | i | -| main.rs:501:6:501:6 | x | main.rs:500:17:500:17 | x | -| main.rs:502:10:502:10 | x | main.rs:500:17:500:17 | x | -| main.rs:503:10:503:10 | x | main.rs:500:17:500:17 | x | -| main.rs:504:12:504:12 | x | main.rs:500:17:500:17 | x | -| main.rs:508:6:508:6 | x | main.rs:507:22:507:22 | x | -| main.rs:509:10:509:10 | x | main.rs:507:22:507:22 | x | -| main.rs:510:10:510:10 | x | main.rs:507:22:507:22 | x | -| main.rs:511:6:511:6 | y | main.rs:507:38:507:38 | y | -| main.rs:512:9:512:9 | x | main.rs:507:22:507:22 | x | -| main.rs:519:6:519:6 | y | main.rs:517:9:517:9 | y | -| main.rs:522:15:522:15 | x | main.rs:516:13:516:13 | x | -| main.rs:529:9:529:9 | w | main.rs:525:9:525:9 | w | -| main.rs:531:7:531:7 | w | main.rs:525:9:525:9 | w | -| main.rs:534:15:534:15 | z | main.rs:524:13:524:13 | z | -| main.rs:541:6:541:6 | y | main.rs:539:9:539:9 | y | -| main.rs:542:15:542:15 | x | main.rs:538:13:538:13 | x | -| main.rs:550:19:550:19 | x | main.rs:546:9:546:9 | x | -| main.rs:552:5:552:7 | cap | main.rs:549:9:549:11 | cap | -| main.rs:553:15:553:15 | x | main.rs:546:9:546:9 | x | -| main.rs:561:19:561:19 | x | main.rs:557:13:557:13 | x | -| main.rs:563:5:563:12 | closure1 | main.rs:560:9:560:16 | closure1 | -| main.rs:564:15:564:15 | x | main.rs:557:13:557:13 | x | -| main.rs:572:5:572:12 | closure2 | main.rs:569:13:569:20 | closure2 | -| main.rs:573:15:573:15 | y | main.rs:566:13:566:13 | y | -| main.rs:579:9:579:9 | z | main.rs:575:13:575:13 | z | -| main.rs:581:5:581:12 | closure3 | main.rs:578:13:578:20 | closure3 | -| main.rs:582:15:582:15 | z | main.rs:575:13:575:13 | z | -| main.rs:591:5:591:9 | block | main.rs:587:9:587:13 | block | -| main.rs:592:15:592:15 | i | main.rs:586:13:586:13 | i | -| main.rs:597:15:597:15 | x | main.rs:596:13:596:13 | x | -| main.rs:598:15:598:15 | x | main.rs:596:13:596:13 | x | -| main.rs:600:16:600:16 | b | main.rs:595:8:595:8 | b | -| main.rs:603:19:603:19 | x | main.rs:596:13:596:13 | x | -| main.rs:604:19:604:19 | x | main.rs:596:13:596:13 | x | -| main.rs:607:19:607:19 | x | main.rs:596:13:596:13 | x | -| main.rs:608:19:608:19 | x | main.rs:596:13:596:13 | x | -| main.rs:610:15:610:15 | x | main.rs:596:13:596:13 | x | -| main.rs:616:16:616:17 | b1 | main.rs:613:13:613:14 | b1 | -| main.rs:618:19:618:19 | x | main.rs:614:9:614:9 | x | -| main.rs:620:19:620:19 | x | main.rs:614:9:614:9 | x | -| main.rs:624:16:624:17 | b2 | main.rs:613:23:613:24 | b2 | -| main.rs:626:19:626:19 | x | main.rs:614:9:614:9 | x | -| main.rs:628:19:628:19 | x | main.rs:614:9:614:9 | x | -| main.rs:638:16:638:19 | self | main.rs:637:20:637:23 | self | -| main.rs:642:9:642:12 | self | main.rs:641:11:641:14 | self | -| main.rs:648:13:648:16 | self | main.rs:645:23:645:26 | self | -| main.rs:648:25:648:25 | n | main.rs:646:22:646:22 | n | -| main.rs:650:9:650:9 | f | main.rs:646:17:646:17 | f | -| main.rs:651:9:651:9 | f | main.rs:646:17:646:17 | f | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | -| main.rs:658:5:658:5 | a | main.rs:656:13:656:13 | a | -| main.rs:659:15:659:15 | a | main.rs:656:13:656:13 | a | -| main.rs:661:15:661:15 | a | main.rs:656:13:656:13 | a | -| main.rs:666:15:666:15 | a | main.rs:665:13:665:13 | a | -| main.rs:667:5:667:5 | a | main.rs:665:13:665:13 | a | -| main.rs:668:15:668:15 | a | main.rs:665:13:665:13 | a | -| main.rs:670:15:670:15 | a | main.rs:665:13:665:13 | a | -| main.rs:676:15:676:15 | x | main.rs:674:9:674:9 | x | -| main.rs:688:10:688:13 | self | main.rs:687:17:687:20 | self | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | -| main.rs:697:15:697:15 | a | main.rs:693:13:693:13 | a | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:717:15:717:28 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | -| main.rs:723:30:723:41 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | -| main.rs:724:15:724:26 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | -| main.rs:730:15:730:15 | x | main.rs:728:9:728:9 | x | -| main.rs:737:20:737:20 | b | main.rs:735:20:735:20 | b | -| main.rs:741:5:741:7 | cap | main.rs:735:13:735:15 | cap | -| main.rs:742:15:742:15 | x | main.rs:734:13:734:13 | x | +| main.rs:374:11:374:11 | x | main.rs:373:9:373:9 | x | +| main.rs:377:22:377:22 | y | main.rs:375:14:375:14 | y | +| main.rs:378:26:378:26 | y | main.rs:376:25:376:25 | y | +| main.rs:390:15:390:16 | a8 | main.rs:384:5:384:6 | a8 | +| main.rs:391:15:391:16 | b3 | main.rs:386:9:386:10 | b3 | +| main.rs:392:15:392:16 | c1 | main.rs:387:9:387:10 | c1 | +| main.rs:397:15:397:16 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:406:15:406:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:407:15:407:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:408:15:408:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:415:9:415:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:416:9:416:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:417:9:417:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:419:15:419:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:420:15:420:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:421:15:421:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:428:23:428:25 | a10 | main.rs:425:13:425:15 | a10 | +| main.rs:429:23:429:24 | b4 | main.rs:426:13:426:14 | b4 | +| main.rs:433:15:433:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:434:15:434:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:440:9:440:9 | x | main.rs:439:10:439:10 | x | +| main.rs:442:9:442:23 | example_closure | main.rs:438:9:438:23 | example_closure | +| main.rs:443:15:443:16 | n1 | main.rs:441:9:441:10 | n1 | +| main.rs:448:9:448:9 | x | main.rs:447:6:447:6 | x | +| main.rs:450:9:450:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | +| main.rs:451:15:451:16 | n2 | main.rs:449:9:449:10 | n2 | +| main.rs:458:9:458:9 | x | main.rs:457:10:457:10 | x | +| main.rs:459:15:459:15 | f | main.rs:456:9:456:9 | f | +| main.rs:463:9:463:9 | x | main.rs:461:10:461:10 | x | +| main.rs:466:15:466:15 | f | main.rs:456:9:456:9 | f | +| main.rs:472:17:472:17 | x | main.rs:470:14:470:14 | x | +| main.rs:481:13:481:13 | x | main.rs:480:14:480:14 | x | +| main.rs:482:19:482:19 | f | main.rs:479:13:479:13 | f | +| main.rs:490:12:490:12 | v | main.rs:487:9:487:9 | v | +| main.rs:491:19:491:22 | text | main.rs:489:9:489:12 | text | +| main.rs:498:15:498:15 | a | main.rs:496:13:496:13 | a | +| main.rs:500:15:500:15 | a | main.rs:496:13:496:13 | a | +| main.rs:507:6:507:10 | ref_i | main.rs:505:9:505:13 | ref_i | +| main.rs:508:15:508:15 | i | main.rs:504:13:504:13 | i | +| main.rs:512:6:512:6 | x | main.rs:511:17:511:17 | x | +| main.rs:513:10:513:10 | x | main.rs:511:17:511:17 | x | +| main.rs:514:10:514:10 | x | main.rs:511:17:511:17 | x | +| main.rs:515:12:515:12 | x | main.rs:511:17:511:17 | x | +| main.rs:519:6:519:6 | x | main.rs:518:22:518:22 | x | +| main.rs:520:10:520:10 | x | main.rs:518:22:518:22 | x | +| main.rs:521:10:521:10 | x | main.rs:518:22:518:22 | x | +| main.rs:522:6:522:6 | y | main.rs:518:38:518:38 | y | +| main.rs:523:9:523:9 | x | main.rs:518:22:518:22 | x | +| main.rs:530:6:530:6 | y | main.rs:528:9:528:9 | y | +| main.rs:533:15:533:15 | x | main.rs:527:13:527:13 | x | +| main.rs:540:9:540:9 | w | main.rs:536:9:536:9 | w | +| main.rs:542:7:542:7 | w | main.rs:536:9:536:9 | w | +| main.rs:545:15:545:15 | z | main.rs:535:13:535:13 | z | +| main.rs:552:6:552:6 | y | main.rs:550:9:550:9 | y | +| main.rs:553:15:553:15 | x | main.rs:549:13:549:13 | x | +| main.rs:561:19:561:19 | x | main.rs:557:9:557:9 | x | +| main.rs:563:5:563:7 | cap | main.rs:560:9:560:11 | cap | +| main.rs:564:15:564:15 | x | main.rs:557:9:557:9 | x | +| main.rs:572:19:572:19 | x | main.rs:568:13:568:13 | x | +| main.rs:574:5:574:12 | closure1 | main.rs:571:9:571:16 | closure1 | +| main.rs:575:15:575:15 | x | main.rs:568:13:568:13 | x | +| main.rs:583:5:583:12 | closure2 | main.rs:580:13:580:20 | closure2 | +| main.rs:584:15:584:15 | y | main.rs:577:13:577:13 | y | +| main.rs:590:9:590:9 | z | main.rs:586:13:586:13 | z | +| main.rs:592:5:592:12 | closure3 | main.rs:589:13:589:20 | closure3 | +| main.rs:593:15:593:15 | z | main.rs:586:13:586:13 | z | +| main.rs:602:5:602:9 | block | main.rs:598:9:598:13 | block | +| main.rs:603:15:603:15 | i | main.rs:597:13:597:13 | i | +| main.rs:608:15:608:15 | x | main.rs:607:13:607:13 | x | +| main.rs:609:15:609:15 | x | main.rs:607:13:607:13 | x | +| main.rs:611:16:611:16 | b | main.rs:606:8:606:8 | b | +| main.rs:614:19:614:19 | x | main.rs:607:13:607:13 | x | +| main.rs:615:19:615:19 | x | main.rs:607:13:607:13 | x | +| main.rs:618:19:618:19 | x | main.rs:607:13:607:13 | x | +| main.rs:619:19:619:19 | x | main.rs:607:13:607:13 | x | +| main.rs:621:15:621:15 | x | main.rs:607:13:607:13 | x | +| main.rs:627:16:627:17 | b1 | main.rs:624:13:624:14 | b1 | +| main.rs:629:19:629:19 | x | main.rs:625:9:625:9 | x | +| main.rs:631:19:631:19 | x | main.rs:625:9:625:9 | x | +| main.rs:635:16:635:17 | b2 | main.rs:624:23:624:24 | b2 | +| main.rs:637:19:637:19 | x | main.rs:625:9:625:9 | x | +| main.rs:639:19:639:19 | x | main.rs:625:9:625:9 | x | +| main.rs:649:16:649:19 | self | main.rs:648:20:648:23 | self | +| main.rs:653:9:653:12 | self | main.rs:652:11:652:14 | self | +| main.rs:659:13:659:16 | self | main.rs:656:23:656:26 | self | +| main.rs:659:25:659:25 | n | main.rs:657:22:657:22 | n | +| main.rs:661:9:661:9 | f | main.rs:657:17:657:17 | f | +| main.rs:662:9:662:9 | f | main.rs:657:17:657:17 | f | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | +| main.rs:669:5:669:5 | a | main.rs:667:13:667:13 | a | +| main.rs:670:15:670:15 | a | main.rs:667:13:667:13 | a | +| main.rs:672:15:672:15 | a | main.rs:667:13:667:13 | a | +| main.rs:677:15:677:15 | a | main.rs:676:13:676:13 | a | +| main.rs:678:5:678:5 | a | main.rs:676:13:676:13 | a | +| main.rs:679:15:679:15 | a | main.rs:676:13:676:13 | a | +| main.rs:681:15:681:15 | a | main.rs:676:13:676:13 | a | +| main.rs:687:15:687:15 | x | main.rs:685:9:685:9 | x | +| main.rs:699:10:699:13 | self | main.rs:698:17:698:20 | self | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | +| main.rs:708:15:708:15 | a | main.rs:704:13:704:13 | a | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:728:15:728:28 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | +| main.rs:734:30:734:41 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | +| main.rs:735:15:735:26 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | +| main.rs:741:15:741:15 | x | main.rs:739:9:739:9 | x | +| main.rs:748:20:748:20 | b | main.rs:746:20:746:20 | b | +| main.rs:752:5:752:7 | cap | main.rs:746:13:746:15 | cap | +| main.rs:753:15:753:15 | x | main.rs:745:13:745:13 | x | +| main.rs:761:19:761:19 | x | main.rs:759:13:759:13 | x | +| main.rs:768:15:768:15 | y | main.rs:760:13:760:13 | y | +| main.rs:770:17:770:20 | N0ne | main.rs:769:13:769:16 | N0ne | +| main.rs:779:13:779:22 | test_alias | main.rs:776:13:776:22 | test_alias | +| main.rs:780:9:780:12 | test | main.rs:778:13:778:16 | test | +| main.rs:788:15:788:15 | x | main.rs:787:13:787:13 | x | +| main.rs:790:20:790:20 | x | main.rs:789:18:789:18 | x | +| main.rs:793:15:793:15 | x | main.rs:787:13:787:13 | x | variableInitializer | main.rs:20:9:20:10 | x1 | main.rs:20:14:20:16 | "a" | | main.rs:25:13:25:14 | x2 | main.rs:25:18:25:18 | 4 | @@ -599,62 +632,68 @@ variableInitializer | main.rs:337:20:337:20 | x | main.rs:338:18:338:18 | x | | main.rs:348:9:348:9 | x | main.rs:348:13:348:18 | Ok(...) | | main.rs:364:9:364:9 | x | main.rs:364:13:364:19 | Some(...) | -| main.rs:427:9:427:23 | example_closure | main.rs:428:9:429:9 | \|...\| x | -| main.rs:430:9:430:10 | n1 | main.rs:431:9:431:26 | example_closure(...) | -| main.rs:435:9:435:26 | immutable_variable | main.rs:436:5:437:9 | \|...\| x | -| main.rs:438:9:438:10 | n2 | main.rs:439:9:439:29 | immutable_variable(...) | -| main.rs:445:9:445:9 | f | main.rs:446:9:447:9 | \|...\| x | -| main.rs:468:13:468:13 | f | main.rs:469:13:470:13 | \|...\| x | -| main.rs:476:9:476:9 | v | main.rs:476:13:476:41 | &... | -| main.rs:485:13:485:13 | a | main.rs:485:17:485:17 | 0 | -| main.rs:493:13:493:13 | i | main.rs:493:17:493:17 | 1 | -| main.rs:494:9:494:13 | ref_i | main.rs:495:9:495:14 | &mut i | -| main.rs:516:13:516:13 | x | main.rs:516:17:516:17 | 2 | -| main.rs:517:9:517:9 | y | main.rs:518:9:518:28 | mutate_param(...) | -| main.rs:524:13:524:13 | z | main.rs:524:17:524:17 | 4 | -| main.rs:525:9:525:9 | w | main.rs:526:9:526:19 | &mut ... | -| main.rs:538:13:538:13 | x | main.rs:538:17:538:17 | 1 | -| main.rs:539:9:539:9 | y | main.rs:540:9:540:14 | &mut x | -| main.rs:546:9:546:9 | x | main.rs:546:13:546:15 | 100 | -| main.rs:549:9:549:11 | cap | main.rs:549:15:551:5 | \|...\| ... | -| main.rs:557:13:557:13 | x | main.rs:557:17:557:17 | 1 | -| main.rs:560:9:560:16 | closure1 | main.rs:560:20:562:5 | \|...\| ... | -| main.rs:566:13:566:13 | y | main.rs:566:17:566:17 | 2 | -| main.rs:569:13:569:20 | closure2 | main.rs:569:24:571:5 | \|...\| ... | -| main.rs:575:13:575:13 | z | main.rs:575:17:575:17 | 2 | -| main.rs:578:13:578:20 | closure3 | main.rs:578:24:580:5 | \|...\| ... | -| main.rs:586:13:586:13 | i | main.rs:586:22:586:22 | 0 | -| main.rs:587:9:587:13 | block | main.rs:587:17:589:5 | { ... } | -| main.rs:596:13:596:13 | x | main.rs:596:17:596:17 | 1 | -| main.rs:614:9:614:9 | x | main.rs:614:13:614:13 | 1 | -| main.rs:646:17:646:17 | f | main.rs:646:21:649:9 | \|...\| ... | -| main.rs:656:13:656:13 | a | main.rs:656:17:656:35 | MyStruct {...} | -| main.rs:665:13:665:13 | a | main.rs:665:17:665:25 | [...] | -| main.rs:674:9:674:9 | x | main.rs:674:13:674:14 | 16 | -| main.rs:678:9:678:9 | z | main.rs:678:13:678:14 | 17 | -| main.rs:693:13:693:13 | a | main.rs:693:17:693:35 | MyStruct {...} | -| main.rs:715:9:715:22 | var_from_macro | main.rs:716:9:716:25 | MacroExpr | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:23:716:24 | 37 | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:24:718:25 | 33 | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | 0 | -| main.rs:734:13:734:13 | x | main.rs:734:17:734:19 | 100 | -| main.rs:735:13:735:15 | cap | main.rs:735:19:740:5 | \|...\| ... | +| main.rs:373:9:373:9 | x | main.rs:373:13:373:20 | Some(...) | +| main.rs:438:9:438:23 | example_closure | main.rs:439:9:440:9 | \|...\| x | +| main.rs:441:9:441:10 | n1 | main.rs:442:9:442:26 | example_closure(...) | +| main.rs:446:9:446:26 | immutable_variable | main.rs:447:5:448:9 | \|...\| x | +| main.rs:449:9:449:10 | n2 | main.rs:450:9:450:29 | immutable_variable(...) | +| main.rs:456:9:456:9 | f | main.rs:457:9:458:9 | \|...\| x | +| main.rs:479:13:479:13 | f | main.rs:480:13:481:13 | \|...\| x | +| main.rs:487:9:487:9 | v | main.rs:487:13:487:41 | &... | +| main.rs:496:13:496:13 | a | main.rs:496:17:496:17 | 0 | +| main.rs:504:13:504:13 | i | main.rs:504:17:504:17 | 1 | +| main.rs:505:9:505:13 | ref_i | main.rs:506:9:506:14 | &mut i | +| main.rs:527:13:527:13 | x | main.rs:527:17:527:17 | 2 | +| main.rs:528:9:528:9 | y | main.rs:529:9:529:28 | mutate_param(...) | +| main.rs:535:13:535:13 | z | main.rs:535:17:535:17 | 4 | +| main.rs:536:9:536:9 | w | main.rs:537:9:537:19 | &mut ... | +| main.rs:549:13:549:13 | x | main.rs:549:17:549:17 | 1 | +| main.rs:550:9:550:9 | y | main.rs:551:9:551:14 | &mut x | +| main.rs:557:9:557:9 | x | main.rs:557:13:557:15 | 100 | +| main.rs:560:9:560:11 | cap | main.rs:560:15:562:5 | \|...\| ... | +| main.rs:568:13:568:13 | x | main.rs:568:17:568:17 | 1 | +| main.rs:571:9:571:16 | closure1 | main.rs:571:20:573:5 | \|...\| ... | +| main.rs:577:13:577:13 | y | main.rs:577:17:577:17 | 2 | +| main.rs:580:13:580:20 | closure2 | main.rs:580:24:582:5 | \|...\| ... | +| main.rs:586:13:586:13 | z | main.rs:586:17:586:17 | 2 | +| main.rs:589:13:589:20 | closure3 | main.rs:589:24:591:5 | \|...\| ... | +| main.rs:597:13:597:13 | i | main.rs:597:22:597:22 | 0 | +| main.rs:598:9:598:13 | block | main.rs:598:17:600:5 | { ... } | +| main.rs:607:13:607:13 | x | main.rs:607:17:607:17 | 1 | +| main.rs:625:9:625:9 | x | main.rs:625:13:625:13 | 1 | +| main.rs:657:17:657:17 | f | main.rs:657:21:660:9 | \|...\| ... | +| main.rs:667:13:667:13 | a | main.rs:667:17:667:35 | MyStruct {...} | +| main.rs:676:13:676:13 | a | main.rs:676:17:676:25 | [...] | +| main.rs:685:9:685:9 | x | main.rs:685:13:685:14 | 16 | +| main.rs:689:9:689:9 | z | main.rs:689:13:689:14 | 17 | +| main.rs:704:13:704:13 | a | main.rs:704:17:704:35 | MyStruct {...} | +| main.rs:726:9:726:22 | var_from_macro | main.rs:727:9:727:25 | MacroExpr | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:23:727:24 | 37 | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:24:729:25 | 33 | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | 0 | +| main.rs:745:13:745:13 | x | main.rs:745:17:745:19 | 100 | +| main.rs:746:13:746:15 | cap | main.rs:746:19:751:5 | \|...\| ... | +| main.rs:759:13:759:13 | x | main.rs:759:17:759:24 | Some(...) | +| main.rs:760:13:760:13 | y | main.rs:761:13:767:9 | match x { ... } | +| main.rs:776:13:776:22 | test_alias | main.rs:777:13:777:16 | test | +| main.rs:778:13:778:16 | test | main.rs:779:13:779:24 | test_alias(...) | +| main.rs:787:13:787:13 | x | main.rs:787:17:787:23 | Some(...) | capturedVariable -| main.rs:546:9:546:9 | x | -| main.rs:557:13:557:13 | x | -| main.rs:566:13:566:13 | y | -| main.rs:575:13:575:13 | z | -| main.rs:586:13:586:13 | i | -| main.rs:645:23:645:26 | self | -| main.rs:734:13:734:13 | x | +| main.rs:557:9:557:9 | x | +| main.rs:568:13:568:13 | x | +| main.rs:577:13:577:13 | y | +| main.rs:586:13:586:13 | z | +| main.rs:597:13:597:13 | i | +| main.rs:656:23:656:26 | self | +| main.rs:745:13:745:13 | x | capturedAccess -| main.rs:550:19:550:19 | x | | main.rs:561:19:561:19 | x | -| main.rs:570:9:570:9 | y | -| main.rs:579:9:579:9 | z | -| main.rs:588:9:588:9 | i | -| main.rs:648:13:648:16 | self | -| main.rs:738:13:738:13 | x | +| main.rs:572:19:572:19 | x | +| main.rs:581:9:581:9 | y | +| main.rs:590:9:590:9 | z | +| main.rs:599:9:599:9 | i | +| main.rs:659:13:659:16 | self | +| main.rs:749:13:749:13 | x | nestedFunctionAccess -| main.rs:458:19:458:19 | f | main.rs:459:9:462:9 | fn f | -| main.rs:465:23:465:23 | f | main.rs:459:9:462:9 | fn f | +| main.rs:469:19:469:19 | f | main.rs:470:9:473:9 | fn f | +| main.rs:476:23:476:23 | f | main.rs:470:9:473:9 | fn f | diff --git a/rust/ql/test/library-tests/variables/variables.ql b/rust/ql/test/library-tests/variables/variables.ql index dbde4f56e858..9997b29c7d0e 100644 --- a/rust/ql/test/library-tests/variables/variables.ql +++ b/rust/ql/test/library-tests/variables/variables.ql @@ -35,7 +35,7 @@ module VariableAccessTest implements TestSig { private predicate declAt(Variable v, string filepath, int line, boolean inMacro) { variable(v) and v.getLocation().hasLocationInfo(filepath, _, _, line, _) and - if v.getPat().isInMacroExpansion() then inMacro = true else inMacro = false + if v.getPat().isFromMacroExpansion() then inMacro = true else inMacro = false } private predicate commmentAt(string text, string filepath, int line) { diff --git a/rust/ql/test/query-tests/security/CWE-020/RegexInjectionSink.expected b/rust/ql/test/query-tests/security/CWE-020/RegexInjectionSink.expected index 4ea46a385870..9bbf1a6904ff 100644 --- a/rust/ql/test/query-tests/security/CWE-020/RegexInjectionSink.expected +++ b/rust/ql/test/query-tests/security/CWE-020/RegexInjectionSink.expected @@ -1,2 +1,3 @@ | main.rs:6:25:6:30 | ®ex | | main.rs:14:25:14:30 | ®ex | +| main.rs:21:25:21:30 | ®ex | diff --git a/rust/ql/test/query-tests/security/CWE-020/main.rs b/rust/ql/test/query-tests/security/CWE-020/main.rs index a03e5d4b4942..3a8e3d014611 100644 --- a/rust/ql/test/query-tests/security/CWE-020/main.rs +++ b/rust/ql/test/query-tests/security/CWE-020/main.rs @@ -7,7 +7,7 @@ fn simple_bad(hay: &str) -> Option { Some(re.is_match(hay)) } -fn simple_good(hay: &str) -> Option { +fn simple_good_escaped(hay: &str) -> Option { let username = std::env::var("USER").unwrap_or("".to_string()); let escaped = regex::escape(&username); let regex = format!("foo{}bar", escaped); @@ -15,6 +15,13 @@ fn simple_good(hay: &str) -> Option { Some(re.is_match(hay)) } +fn simple_good_numeric(hay: &str) -> Option { + let user_number = std::env::var("USER").unwrap_or("0".to_string()).parse::().unwrap_or(0); + let regex = format!("foo{}bar", user_number); + let re = Regex::new(®ex).unwrap(); + Some(re.is_match(hay)) +} + fn not_a_sink_literal() -> Option { let username = std::env::var("USER").unwrap_or("".to_string()); let re = Regex::new("literal string").unwrap(); @@ -30,7 +37,8 @@ fn not_a_sink_raw_literal() -> Option { fn main() { let hay = "a string"; simple_bad(hay); - simple_good(hay); + simple_good_escaped(hay); + simple_good_numeric(hay); not_a_sink_literal(); not_a_sink_raw_literal(); } diff --git a/rust/ql/test/query-tests/security/CWE-079/Cargo.lock b/rust/ql/test/query-tests/security/CWE-079/Cargo.lock new file mode 100644 index 000000000000..b8c877bc7555 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/Cargo.lock @@ -0,0 +1,1876 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "actix-codec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-sink", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "actix-http" +version = "3.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7926860314cbe2fb5d1f13731e387ab43bd32bca224e82e6e2db85de0a3dba49" +dependencies = [ + "actix-codec", + "actix-rt", + "actix-service", + "actix-utils", + "base64", + "bitflags", + "brotli", + "bytes", + "bytestring", + "derive_more", + "encoding_rs", + "flate2", + "foldhash", + "futures-core", + "h2 0.3.27", + "http 0.2.12", + "httparse", + "httpdate", + "itoa", + "language-tags", + "local-channel", + "mime", + "percent-encoding", + "pin-project-lite", + "rand", + "sha1", + "smallvec", + "tokio", + "tokio-util", + "tracing", + "zstd", +] + +[[package]] +name = "actix-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "actix-router" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" +dependencies = [ + "bytestring", + "cfg-if", + "http 0.2.12", + "regex", + "regex-lite", + "serde", + "tracing", +] + +[[package]] +name = "actix-rt" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92589714878ca59a7626ea19734f0e07a6a875197eec751bb5d3f99e64998c63" +dependencies = [ + "futures-core", + "tokio", +] + +[[package]] +name = "actix-server" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65064ea4a457eaf07f2fba30b4c695bf43b721790e9530d26cb6f9019ff7502" +dependencies = [ + "actix-rt", + "actix-service", + "actix-utils", + "futures-core", + "futures-util", + "mio", + "socket2 0.5.10", + "tokio", + "tracing", +] + +[[package]] +name = "actix-service" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e46f36bf0e5af44bdc4bdb36fbbd421aa98c79a9bce724e1edeb3894e10dc7f" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "actix-utils" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" +dependencies = [ + "local-waker", + "pin-project-lite", +] + +[[package]] +name = "actix-web" +version = "4.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2233f53f6cb18ae038ce1f0713ca0c72ca0c4b71fe9aaeb59924ce2c89c6dd85" +dependencies = [ + "actix-codec", + "actix-http", + "actix-macros", + "actix-router", + "actix-rt", + "actix-server", + "actix-service", + "actix-utils", + "actix-web-codegen", + "bytes", + "bytestring", + "cfg-if", + "cookie", + "derive_more", + "encoding_rs", + "foldhash", + "futures-core", + "futures-util", + "impl-more", + "itoa", + "language-tags", + "log", + "mime", + "once_cell", + "pin-project-lite", + "regex", + "regex-lite", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "socket2 0.6.1", + "time", + "tracing", + "url", +] + +[[package]] +name = "actix-web-codegen" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f591380e2e68490b5dfaf1dd1aa0ebe78d84ba7067078512b4ea6e4492d622b8" +dependencies = [ + "actix-router", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "axum" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" +dependencies = [ + "axum-core", + "bytes", + "form_urlencoded", + "futures-util", + "http 1.3.1", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "serde_core", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bytes" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" + +[[package]] +name = "bytestring" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "113b4343b5f6617e7ad401ced8de3cc8b012e73a594347c307b90db3e9271289" +dependencies = [ + "bytes", +] + +[[package]] +name = "cc" +version = "1.2.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97463e1064cb1b1c1384ad0a0b9c8abd0988e2a91f52606c80ef14aadb63e36" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cookie" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "find-msvc-tools" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" + +[[package]] +name = "flate2" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "h2" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + +[[package]] +name = "headers" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" +dependencies = [ + "base64", + "bytes", + "headers-core", + "http 1.3.1", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http 1.3.1", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2 0.4.12", + "http 1.3.1", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "hyper", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-more" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" + +[[package]] +name = "indexmap" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom", + "libc", +] + +[[package]] +name = "language-tags" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "local-channel" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" +dependencies = [ + "futures-core", + "futures-sink", + "local-waker", +] + +[[package]] +name = "local-waker" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-lite" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" +dependencies = [ + "itoa", + "serde", + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "syn" +version = "2.0.110" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "actix-web", + "axum", + "serde", + "tokio", + "warp", +] + +[[package]] +name = "time" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.6.1", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-util" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "warp" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d06d9202adc1f15d709c4f4a2069be5428aa912cc025d6f268ac441ab066b0" +dependencies = [ + "bytes", + "futures-util", + "headers", + "http 1.3.1", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "log", + "mime", + "mime_guess", + "percent-encoding", + "pin-project", + "scoped-tls", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-util", + "tower-service", + "tracing", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/rust/ql/test/query-tests/security/CWE-079/actix/Cargo.lock b/rust/ql/test/query-tests/security/CWE-079/actix/Cargo.lock new file mode 100644 index 000000000000..daf7370f6b57 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/actix/Cargo.lock @@ -0,0 +1,1571 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "actix-codec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-sink", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "actix-http" +version = "3.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7926860314cbe2fb5d1f13731e387ab43bd32bca224e82e6e2db85de0a3dba49" +dependencies = [ + "actix-codec", + "actix-rt", + "actix-service", + "actix-utils", + "base64", + "bitflags", + "brotli", + "bytes", + "bytestring", + "derive_more", + "encoding_rs", + "flate2", + "foldhash", + "futures-core", + "h2", + "http", + "httparse", + "httpdate", + "itoa", + "language-tags", + "local-channel", + "mime", + "percent-encoding", + "pin-project-lite", + "rand", + "sha1", + "smallvec", + "tokio", + "tokio-util", + "tracing", + "zstd", +] + +[[package]] +name = "actix-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "actix-router" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" +dependencies = [ + "bytestring", + "cfg-if", + "http", + "regex", + "regex-lite", + "serde", + "tracing", +] + +[[package]] +name = "actix-rt" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92589714878ca59a7626ea19734f0e07a6a875197eec751bb5d3f99e64998c63" +dependencies = [ + "futures-core", + "tokio", +] + +[[package]] +name = "actix-server" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65064ea4a457eaf07f2fba30b4c695bf43b721790e9530d26cb6f9019ff7502" +dependencies = [ + "actix-rt", + "actix-service", + "actix-utils", + "futures-core", + "futures-util", + "mio", + "socket2 0.5.10", + "tokio", + "tracing", +] + +[[package]] +name = "actix-service" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e46f36bf0e5af44bdc4bdb36fbbd421aa98c79a9bce724e1edeb3894e10dc7f" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "actix-utils" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" +dependencies = [ + "local-waker", + "pin-project-lite", +] + +[[package]] +name = "actix-web" +version = "4.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2233f53f6cb18ae038ce1f0713ca0c72ca0c4b71fe9aaeb59924ce2c89c6dd85" +dependencies = [ + "actix-codec", + "actix-http", + "actix-macros", + "actix-router", + "actix-rt", + "actix-server", + "actix-service", + "actix-utils", + "actix-web-codegen", + "bytes", + "bytestring", + "cfg-if", + "cookie", + "derive_more", + "encoding_rs", + "foldhash", + "futures-core", + "futures-util", + "impl-more", + "itoa", + "language-tags", + "log", + "mime", + "once_cell", + "pin-project-lite", + "regex", + "regex-lite", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "socket2 0.6.1", + "time", + "tracing", + "url", +] + +[[package]] +name = "actix-web-codegen" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f591380e2e68490b5dfaf1dd1aa0ebe78d84ba7067078512b4ea6e4492d622b8" +dependencies = [ + "actix-router", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bytes" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" + +[[package]] +name = "bytestring" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "113b4343b5f6617e7ad401ced8de3cc8b012e73a594347c307b90db3e9271289" +dependencies = [ + "bytes", +] + +[[package]] +name = "cc" +version = "1.2.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd405d82c84ff7f35739f175f67d8b9fb7687a0e84ccdc78bd3568839827cf07" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cookie" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "find-msvc-tools" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" + +[[package]] +name = "flate2" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "pin-utils", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "h2" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "html-escape" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1ad449764d627e22bfd7cd5e8868264fc9236e07c752972b4080cd351cb476" +dependencies = [ + "utf8-width", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-more" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" + +[[package]] +name = "indexmap" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom", + "libc", +] + +[[package]] +name = "language-tags" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "local-channel" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" +dependencies = [ + "futures-core", + "futures-sink", + "local-waker", +] + +[[package]] +name = "local-waker" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-lite" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "syn" +version = "2.0.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "actix-web", + "html-escape", +] + +[[package]] +name = "time" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.6.1", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-util" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8-width" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1292c0d970b54115d14f2492fe0170adf21d68a1de108eebc51c1df4f346a091" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43fa6694ed34d6e57407afbccdeecfa268c470a7d2a5b0cf49ce9fcc345afb90" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c640b22cd9817fae95be82f0d2f90b11f7605f6c319d16705c459b27ac2cbc26" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/rust/ql/test/query-tests/security/CWE-079/actix/XSS.expected b/rust/ql/test/query-tests/security/CWE-079/actix/XSS.expected new file mode 100644 index 000000000000..3eff00192fe1 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/actix/XSS.expected @@ -0,0 +1,32 @@ +#select +| main.rs:25:5:25:13 | ...::new | main.rs:8:1:8:18 | to | main.rs:25:5:25:13 | ...::new | Cross-site scripting vulnerability due to a $@. | main.rs:8:1:8:18 | to | user-provided value | +edges +| main.rs:8:1:8:18 | to | main.rs:9:29:9:51 | ...: ...::Path::<...> | provenance | Src:MaD:2 | +| main.rs:9:29:9:51 | ...: ...::Path::<...> | main.rs:10:22:10:38 | path.into_inner() | provenance | MaD:3 | +| main.rs:10:9:10:18 | user_input | main.rs:13:9:22:18 | MacroExpr | provenance | | +| main.rs:10:22:10:38 | path.into_inner() | main.rs:10:9:10:18 | user_input | provenance | | +| main.rs:12:9:12:12 | html | main.rs:25:15:25:18 | html | provenance | | +| main.rs:13:9:22:18 | ...::format(...) | main.rs:13:9:22:18 | { ... } | provenance | | +| main.rs:13:9:22:18 | ...::must_use(...) | main.rs:12:9:12:12 | html | provenance | | +| main.rs:13:9:22:18 | MacroExpr | main.rs:13:9:22:18 | ...::format(...) | provenance | MaD:4 | +| main.rs:13:9:22:18 | { ... } | main.rs:13:9:22:18 | ...::must_use(...) | provenance | MaD:5 | +| main.rs:25:15:25:18 | html | main.rs:25:5:25:13 | ...::new | provenance | MaD:1 Sink:MaD:1 | +models +| 1 | Sink: ::new; Argument[0]; html-injection | +| 2 | Source: ::to; Argument[0].Parameter[0..7]; remote | +| 3 | Summary: ::into_inner; Argument[self]; ReturnValue; taint | +| 4 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 5 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +nodes +| main.rs:8:1:8:18 | to | semmle.label | to | +| main.rs:9:29:9:51 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | +| main.rs:10:9:10:18 | user_input | semmle.label | user_input | +| main.rs:10:22:10:38 | path.into_inner() | semmle.label | path.into_inner() | +| main.rs:12:9:12:12 | html | semmle.label | html | +| main.rs:13:9:22:18 | ...::format(...) | semmle.label | ...::format(...) | +| main.rs:13:9:22:18 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| main.rs:13:9:22:18 | MacroExpr | semmle.label | MacroExpr | +| main.rs:13:9:22:18 | { ... } | semmle.label | { ... } | +| main.rs:25:5:25:13 | ...::new | semmle.label | ...::new | +| main.rs:25:15:25:18 | html | semmle.label | html | +subpaths diff --git a/rust/ql/test/query-tests/security/CWE-079/actix/XSS.qlref b/rust/ql/test/query-tests/security/CWE-079/actix/XSS.qlref new file mode 100644 index 000000000000..52e78e538116 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/actix/XSS.qlref @@ -0,0 +1,4 @@ +query: queries/security/CWE-079/XSS.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/rust/ql/test/query-tests/security/CWE-079/actix/main.rs b/rust/ql/test/query-tests/security/CWE-079/actix/main.rs new file mode 100644 index 000000000000..42cd760ca6cb --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/actix/main.rs @@ -0,0 +1,60 @@ +use actix_web::{ + get, + web::{self, Html}, + App, HttpServer, Responder, +}; + +// The "bad" example from the qldoc +#[get("/bad/{a}")] // $ Source=a +async fn vulnerable_handler(path: web::Path) -> impl Responder { + let user_input = path.into_inner(); + + let html = format!( + r#" + + + Welcome + +

    Hello, {}!

    + + + "#, + user_input + ); + + Html::new(html) // $ Alert[rust/xss]=a +} + +#[get("/good/{a}")] +// The "good" example from the qldoc +async fn safe_handler_with_encoding(path: web::Path) -> impl Responder { + let user_input = path.into_inner(); + let escaped_input = html_escape::encode_text(&user_input); + + let html = format!( + r#" + + + Welcome + +

    Hello, {}!

    + + + "#, + escaped_input + ); + + Html::new(html) // Safe: user input is HTML-encoded +} + +#[actix_web::main] +pub async fn main() -> std::io::Result<()> { + HttpServer::new(|| { + App::new() + .service(vulnerable_handler) + .service(safe_handler_with_encoding) + }) + .bind(("127.0.0.1", 3000))? + .run() + .await +} diff --git a/rust/ql/test/query-tests/security/CWE-079/actix/options.yml b/rust/ql/test/query-tests/security/CWE-079/actix/options.yml new file mode 100644 index 000000000000..f104c0008c4b --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/actix/options.yml @@ -0,0 +1,4 @@ +qltest_use_nightly: true +qltest_dependencies: + - actix-web = { version = "4.12.0" } + - html-escape = { version = "0.2.13" } \ No newline at end of file diff --git a/rust/ql/test/query-tests/security/CWE-079/axum/Cargo.lock b/rust/ql/test/query-tests/security/CWE-079/axum/Cargo.lock new file mode 100644 index 000000000000..a28fb29c506a --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/axum/Cargo.lock @@ -0,0 +1,646 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "axum" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" +dependencies = [ + "axum-core", + "bytes", + "form_urlencoded", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "serde_core", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "bytes" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "pin-utils", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "hyper", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" +dependencies = [ + "itoa", + "serde", + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +dependencies = [ + "libc", +] + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "syn" +version = "2.0.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "axum", + "serde", + "tokio", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" diff --git a/rust/ql/test/query-tests/security/CWE-079/axum/XSS.expected b/rust/ql/test/query-tests/security/CWE-079/axum/XSS.expected new file mode 100644 index 000000000000..58f42bec0c84 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/axum/XSS.expected @@ -0,0 +1,4 @@ +#select +edges +nodes +subpaths diff --git a/rust/ql/test/query-tests/security/CWE-079/axum/XSS.qlref b/rust/ql/test/query-tests/security/CWE-079/axum/XSS.qlref new file mode 100644 index 000000000000..52e78e538116 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/axum/XSS.qlref @@ -0,0 +1,4 @@ +query: queries/security/CWE-079/XSS.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/rust/ql/test/query-tests/security/CWE-079/axum/main.rs b/rust/ql/test/query-tests/security/CWE-079/axum/main.rs new file mode 100644 index 000000000000..9379302a318a --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/axum/main.rs @@ -0,0 +1,20 @@ +use axum::{extract::Query, response::Html, routing::get, Router}; + +#[derive(serde::Deserialize)] +struct GreetingParams { + name: String, +} + +async fn greet_handler(Query(params): Query) -> Html { + let html_content = format!("

    Hello, {}!

    ", params.name); + Html(html_content) // $ MISSING: Alert[rust/xss] +} + +#[tokio::main] +pub async fn main() { + let app = Router::<()>::new().route("/greet", get(greet_handler)); + let listener = tokio::net::TcpListener::bind("127.0.0.1:3000") + .await + .unwrap(); + axum::serve(listener, app).await.unwrap(); +} \ No newline at end of file diff --git a/rust/ql/test/query-tests/security/CWE-079/axum/options.yml b/rust/ql/test/query-tests/security/CWE-079/axum/options.yml new file mode 100644 index 000000000000..5a7345bb237a --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/axum/options.yml @@ -0,0 +1,5 @@ +qltest_use_nightly: true +qltest_dependencies: + - axum = { version = "0.8.7" } + - serde = { version = "1.0.228", features = ["derive"] } + - tokio = { version = "1", features = ["full"] } \ No newline at end of file diff --git a/rust/ql/test/query-tests/security/CWE-079/warp/Cargo.lock b/rust/ql/test/query-tests/security/CWE-079/warp/Cargo.lock new file mode 100644 index 000000000000..35c058bd45e3 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/warp/Cargo.lock @@ -0,0 +1,723 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bytes" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "headers" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" +dependencies = [ + "base64", + "bytes", + "headers-core", + "http", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "hyper", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "indexmap" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "syn" +version = "2.0.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "tokio", + "warp", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-util" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "warp" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d06d9202adc1f15d709c4f4a2069be5428aa912cc025d6f268ac441ab066b0" +dependencies = [ + "bytes", + "futures-util", + "headers", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "log", + "mime", + "mime_guess", + "percent-encoding", + "pin-project", + "scoped-tls", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-util", + "tower-service", + "tracing", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" diff --git a/rust/ql/test/query-tests/security/CWE-079/warp/XSS.expected b/rust/ql/test/query-tests/security/CWE-079/warp/XSS.expected new file mode 100644 index 000000000000..8a366d3b0d54 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/warp/XSS.expected @@ -0,0 +1,27 @@ +#select +| main.rs:10:13:10:29 | ...::html | main.rs:7:10:7:12 | map | main.rs:10:13:10:29 | ...::html | Cross-site scripting vulnerability due to a $@. | main.rs:7:10:7:12 | map | user-provided value | +edges +| main.rs:7:10:7:12 | map | main.rs:7:15:7:26 | ...: String | provenance | Src:MaD:2 | +| main.rs:7:15:7:26 | ...: String | main.rs:9:32:9:56 | MacroExpr | provenance | | +| main.rs:9:17:9:20 | body | main.rs:10:31:10:34 | body | provenance | | +| main.rs:9:32:9:56 | ...::format(...) | main.rs:9:32:9:56 | { ... } | provenance | | +| main.rs:9:32:9:56 | ...::must_use(...) | main.rs:9:17:9:20 | body | provenance | | +| main.rs:9:32:9:56 | MacroExpr | main.rs:9:32:9:56 | ...::format(...) | provenance | MaD:3 | +| main.rs:9:32:9:56 | { ... } | main.rs:9:32:9:56 | ...::must_use(...) | provenance | MaD:4 | +| main.rs:10:31:10:34 | body | main.rs:10:13:10:29 | ...::html | provenance | MaD:1 Sink:MaD:1 | +models +| 1 | Sink: warp::reply::html; Argument[0]; html-injection | +| 2 | Source: <_ as warp::filter::Filter>::map; Argument[0].Parameter[0..7]; remote | +| 3 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 4 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +nodes +| main.rs:7:10:7:12 | map | semmle.label | map | +| main.rs:7:15:7:26 | ...: String | semmle.label | ...: String | +| main.rs:9:17:9:20 | body | semmle.label | body | +| main.rs:9:32:9:56 | ...::format(...) | semmle.label | ...::format(...) | +| main.rs:9:32:9:56 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| main.rs:9:32:9:56 | MacroExpr | semmle.label | MacroExpr | +| main.rs:9:32:9:56 | { ... } | semmle.label | { ... } | +| main.rs:10:13:10:29 | ...::html | semmle.label | ...::html | +| main.rs:10:31:10:34 | body | semmle.label | body | +subpaths diff --git a/rust/ql/test/query-tests/security/CWE-079/warp/XSS.qlref b/rust/ql/test/query-tests/security/CWE-079/warp/XSS.qlref new file mode 100644 index 000000000000..52e78e538116 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/warp/XSS.qlref @@ -0,0 +1,4 @@ +query: queries/security/CWE-079/XSS.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/rust/ql/test/query-tests/security/CWE-079/warp/main.rs b/rust/ql/test/query-tests/security/CWE-079/warp/main.rs new file mode 100644 index 000000000000..fb300f4cdd42 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/warp/main.rs @@ -0,0 +1,15 @@ +use warp::Filter; + +#[tokio::main] +pub async fn main() { + let hello = warp::path("greet") + .and(warp::path::param()) + .map(|name: String| { // $ Source=name + // Vulnerable to XSS because it directly includes user input in the response + let body = format!("

    Hello, {name}!

    "); + warp::reply::html(body) // $ Alert[rust/xss]=name + }); + + // Start the web server on port 3000 + warp::serve(hello).run(([127, 0, 0, 1], 3000)).await; +} diff --git a/rust/ql/test/query-tests/security/CWE-079/warp/options.yml b/rust/ql/test/query-tests/security/CWE-079/warp/options.yml new file mode 100644 index 000000000000..cae7e414d5e6 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-079/warp/options.yml @@ -0,0 +1,4 @@ +qltest_use_nightly: true +qltest_dependencies: + - warp = { version = "0.4.2", features = ["server"]} + - tokio = { version = "1", features = ["rt-multi-thread", "macros"] } \ No newline at end of file diff --git a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected index e86f261a2495..34a867e09173 100644 --- a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected @@ -3,29 +3,10 @@ multipleCallTargets | mysql.rs:16:26:16:85 | ...::from(...) | | mysql.rs:18:13:18:66 | ...::from(...) | | mysql.rs:19:30:19:83 | ...::from(...) | -| mysql.rs:46:45:46:66 | remote_string.as_str() | -| mysql.rs:47:71:47:92 | remote_string.as_str() | -| mysql.rs:48:46:48:67 | remote_string.as_str() | -| mysql.rs:49:33:49:54 | remote_string.as_str() | -| mysql.rs:50:46:50:67 | remote_string.as_str() | -| mysql.rs:52:37:52:58 | remote_string.as_str() | -| mysql.rs:56:14:56:35 | remote_string.as_str() | -| mysql.rs:62:14:62:35 | remote_string.as_str() | -| mysql.rs:66:40:66:61 | remote_string.as_str() | -| mysql.rs:67:39:67:60 | remote_string.as_str() | -| mysql.rs:70:14:70:35 | remote_string.as_str() | | mysql.rs:100:24:100:39 | ...::from(...) | | mysql.rs:101:26:101:85 | ...::from(...) | | mysql.rs:103:13:103:66 | ...::from(...) | | mysql.rs:104:30:104:83 | ...::from(...) | -| mysql.rs:126:45:126:66 | remote_string.as_str() | -| mysql.rs:128:38:128:59 | remote_string.as_str() | -| mysql.rs:130:33:130:54 | remote_string.as_str() | -| mysql.rs:131:54:131:75 | remote_string.as_str() | -| mysql.rs:135:18:135:39 | remote_string.as_str() | -| mysql.rs:140:40:140:61 | remote_string.as_str() | -| mysql.rs:142:62:142:83 | remote_string.as_str() | -| mysql.rs:145:31:145:52 | remote_string.as_str() | | sqlx.rs:46:24:46:44 | ...::from(...) | | sqlx.rs:47:56:47:76 | ...::from(...) | | sqlx.rs:48:97:48:117 | ...::from(...) | @@ -33,8 +14,6 @@ multipleCallTargets | sqlx.rs:51:24:51:77 | ...::from(...) | | sqlx.rs:55:26:55:79 | ...::from(...) | | sqlx.rs:61:28:61:81 | ...::from(...) | -| sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | -| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | | sqlx.rs:99:24:99:44 | ...::from(...) | | sqlx.rs:100:97:100:117 | ...::from(...) | | sqlx.rs:101:24:101:77 | ...::from(...) | diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index ecd8cfa79376..d699ca4a389c 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -21,7 +21,6 @@ | mysql.rs:121:14:121:22 | query_map | mysql.rs:97:33:97:54 | ...::get | mysql.rs:121:14:121:22 | query_map | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:149:26:149:29 | prep | mysql.rs:97:33:97:54 | ...::get | mysql.rs:149:26:149:29 | prep | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:154:15:154:24 | query_drop | mysql.rs:97:33:97:54 | ...::get | mysql.rs:154:15:154:24 | query_drop | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | -| sqlx.rs:77:13:77:23 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:77:13:77:23 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | | sqlx.rs:78:13:78:23 | ...::query | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:78:13:78:23 | ...::query | This query depends on a $@. | sqlx.rs:47:22:47:35 | ...::args | user-provided value | | sqlx.rs:80:17:80:27 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:80:17:80:27 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | | sqlx.rs:81:17:81:27 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:81:17:81:27 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | @@ -37,7 +36,7 @@ edges | mysql.rs:12:13:12:29 | mut remote_string | mysql.rs:18:71:18:83 | remote_string | provenance | | | mysql.rs:12:33:12:54 | ...::get | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | mysql.rs:12:33:13:21 | ... .unwrap() | provenance | MaD:31 | -| mysql.rs:12:33:13:21 | ... .unwrap() | mysql.rs:12:33:14:19 | ... .text() [Ok] | provenance | MaD:35 | +| mysql.rs:12:33:13:21 | ... .unwrap() | mysql.rs:12:33:14:19 | ... .text() [Ok] | provenance | MaD:33 | | mysql.rs:12:33:14:19 | ... .text() [Ok] | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | provenance | MaD:32 | | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | mysql.rs:12:13:12:29 | mut remote_string | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:49 | unsafe_query | provenance | | @@ -114,7 +113,7 @@ edges | mysql.rs:97:13:97:29 | mut remote_string | mysql.rs:103:71:103:83 | remote_string | provenance | | | mysql.rs:97:33:97:54 | ...::get | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | mysql.rs:97:33:98:21 | ... .unwrap() | provenance | MaD:31 | -| mysql.rs:97:33:98:21 | ... .unwrap() | mysql.rs:97:33:99:19 | ... .text() [Ok] | provenance | MaD:35 | +| mysql.rs:97:33:98:21 | ... .unwrap() | mysql.rs:97:33:99:19 | ... .text() [Ok] | provenance | MaD:33 | | mysql.rs:97:33:99:19 | ... .text() [Ok] | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | provenance | MaD:32 | | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | mysql.rs:97:13:97:29 | mut remote_string | provenance | | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:49 | unsafe_query | provenance | | @@ -173,31 +172,18 @@ edges | sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:25 | | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:30 | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | sqlx.rs:47:9:47:18 | arg_string | provenance | | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:55:84:55:96 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:31 | -| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:35 | +| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:33 | | sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | sqlx.rs:48:9:48:21 | remote_string | provenance | | -| sqlx.rs:49:9:49:21 | remote_number | sqlx.rs:52:32:52:87 | MacroExpr | provenance | | -| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:32 | -| sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | sqlx.rs:49:9:49:21 | remote_number | provenance | | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:36 | safe_query_3 | provenance | | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:29 | -| sqlx.rs:52:32:52:87 | ...::format(...) | sqlx.rs:52:32:52:87 | { ... } | provenance | | -| sqlx.rs:52:32:52:87 | ...::must_use(...) | sqlx.rs:52:9:52:20 | safe_query_3 | provenance | | -| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:36 | -| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:37 | | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | | | sqlx.rs:53:27:53:36 | arg_string | sqlx.rs:53:26:53:36 | &arg_string [&ref] | provenance | | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | | | sqlx.rs:54:27:54:39 | remote_string | sqlx.rs:54:26:54:39 | &remote_string [&ref] | provenance | | | sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:42 | unsafe_query_3 | provenance | | @@ -212,11 +198,8 @@ edges | sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:29 | | sqlx.rs:59:17:59:72 | ...::format(...) | sqlx.rs:59:17:59:72 | { ... } | provenance | | | sqlx.rs:59:17:59:72 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | | -| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:36 | -| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:37 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:34 | +| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:35 | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:29 | @@ -228,7 +211,7 @@ edges | sqlx.rs:100:9:100:21 | remote_string | sqlx.rs:102:84:102:96 | remote_string | provenance | | | sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | sqlx.rs:100:25:100:78 | ... .unwrap() | provenance | MaD:31 | -| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:35 | +| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:33 | | sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | sqlx.rs:100:9:100:21 | remote_string | provenance | | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:44 | unsafe_query_1 | provenance | | @@ -270,7 +253,7 @@ edges | sqlx.rs:173:9:173:21 | remote_string | sqlx.rs:175:84:175:96 | remote_string | provenance | | | sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | sqlx.rs:173:25:173:78 | ... .unwrap() | provenance | MaD:31 | -| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:35 | +| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:33 | | sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | sqlx.rs:173:9:173:21 | remote_string | provenance | | | sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:42 | unsafe_query_1 | provenance | | @@ -317,11 +300,9 @@ models | 30 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | | 31 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 32 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 33 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 34 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 35 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 36 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 37 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 33 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 34 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 35 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | mysql.rs:12:13:12:29 | mut remote_string | semmle.label | mut remote_string | | mysql.rs:12:33:12:54 | ...::get | semmle.label | ...::get | @@ -444,14 +425,6 @@ nodes | sqlx.rs:48:25:48:78 | ... .unwrap() | semmle.label | ... .unwrap() | | sqlx.rs:48:25:48:85 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| sqlx.rs:49:9:49:21 | remote_number | semmle.label | remote_number | -| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | semmle.label | remote_string.parse() [Ok] | -| sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| sqlx.rs:52:9:52:20 | safe_query_3 | semmle.label | safe_query_3 | -| sqlx.rs:52:32:52:87 | ...::format(...) | semmle.label | ...::format(...) | -| sqlx.rs:52:32:52:87 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| sqlx.rs:52:32:52:87 | MacroExpr | semmle.label | MacroExpr | -| sqlx.rs:52:32:52:87 | { ... } | semmle.label | { ... } | | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | semmle.label | unsafe_query_1 [&ref] | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | semmle.label | &arg_string [&ref] | | sqlx.rs:53:27:53:36 | arg_string | semmle.label | arg_string | @@ -468,10 +441,6 @@ nodes | sqlx.rs:59:17:59:72 | ...::must_use(...) | semmle.label | ...::must_use(...) | | sqlx.rs:59:17:59:72 | MacroExpr | semmle.label | MacroExpr | | sqlx.rs:59:17:59:72 | { ... } | semmle.label | { ... } | -| sqlx.rs:77:13:77:23 | ...::query | semmle.label | ...::query | -| sqlx.rs:77:25:77:36 | safe_query_3 | semmle.label | safe_query_3 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | semmle.label | safe_query_3.as_str() | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | semmle.label | safe_query_3.as_str() [&ref] | | sqlx.rs:78:13:78:23 | ...::query | semmle.label | ...::query | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | | sqlx.rs:80:17:80:27 | ...::query | semmle.label | ...::query | diff --git a/rust/ql/test/query-tests/security/CWE-089/sqlx.rs b/rust/ql/test/query-tests/security/CWE-089/sqlx.rs index 151f9fa7c82e..915625f76348 100644 --- a/rust/ql/test/query-tests/security/CWE-089/sqlx.rs +++ b/rust/ql/test/query-tests/security/CWE-089/sqlx.rs @@ -74,7 +74,7 @@ async fn test_sqlx_mysql(url: &str, enable_remote: bool) -> Result<(), sqlx::Err // prepared queries let _ = sqlx::query(safe_query_1.as_str()).execute(&pool).await?; // $ sql-sink let _ = sqlx::query(safe_query_2.as_str()).execute(&pool).await?; // $ sql-sink - let _ = sqlx::query(safe_query_3.as_str()).execute(&pool).await?; // $ sql-sink $ SPURIOUS: Alert[rust/sql-injection]=remote1 + let _ = sqlx::query(safe_query_3.as_str()).execute(&pool).await?; // $ sql-sink let _ = sqlx::query(unsafe_query_1.as_str()).execute(&pool).await?; // $ sql-sink Alert[rust/sql-injection]=args1 if enable_remote { let _ = sqlx::query(unsafe_query_2.as_str()).execute(&pool).await?; // $ sql-sink Alert[rust/sql-injection]=remote1 diff --git a/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected b/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected index adc258a886aa..2e00f941c24e 100644 --- a/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected @@ -3,14 +3,14 @@ | main.rs:17:5:17:10 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:17:5:17:10 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | | main.rs:19:5:19:10 | ...::log | main.rs:10:22:10:34 | ...::var | main.rs:19:5:19:10 | ...::log | Log entry depends on a $@. | main.rs:10:22:10:34 | ...::var | user-provided value | | main.rs:30:5:30:9 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:30:5:30:9 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | -| main.rs:108:9:108:13 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:108:9:108:13 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:109:9:109:13 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:109:9:109:13 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:110:9:110:14 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:110:9:110:14 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:111:9:111:14 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:111:9:111:14 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:112:9:112:14 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:112:9:112:14 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:115:9:115:13 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:115:9:115:13 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:122:9:122:16 | ...::_print | main.rs:119:25:119:37 | ...::var | main.rs:122:9:122:16 | ...::_print | Log entry depends on a $@. | main.rs:119:25:119:37 | ...::var | user-provided value | -| main.rs:123:9:123:17 | ...::_eprint | main.rs:119:25:119:37 | ...::var | main.rs:123:9:123:17 | ...::_eprint | Log entry depends on a $@. | main.rs:119:25:119:37 | ...::var | user-provided value | +| main.rs:112:9:112:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:112:9:112:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:113:9:113:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:113:9:113:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:114:9:114:14 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:114:9:114:14 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:115:9:115:14 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:115:9:115:14 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:116:9:116:14 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:116:9:116:14 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:119:9:119:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:119:9:119:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:126:9:126:16 | ...::_print | main.rs:123:25:123:37 | ...::var | main.rs:126:9:126:16 | ...::_print | Log entry depends on a $@. | main.rs:123:25:123:37 | ...::var | user-provided value | +| main.rs:127:9:127:17 | ...::_eprint | main.rs:123:25:123:37 | ...::var | main.rs:127:9:127:17 | ...::_eprint | Log entry depends on a $@. | main.rs:123:25:123:37 | ...::var | user-provided value | edges | main.rs:10:9:10:18 | user_input | main.rs:16:11:16:44 | MacroExpr | provenance | | | main.rs:10:9:10:18 | user_input | main.rs:19:12:19:39 | MacroExpr | provenance | | @@ -28,29 +28,29 @@ edges | main.rs:17:12:17:46 | MacroExpr | main.rs:17:5:17:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:19:12:19:39 | MacroExpr | main.rs:19:5:19:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:30:11:30:66 | MacroExpr | main.rs:30:5:30:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:105:13:105:21 | user_data | main.rs:108:15:108:35 | MacroExpr | provenance | | -| main.rs:105:13:105:21 | user_data | main.rs:109:15:109:38 | MacroExpr | provenance | | -| main.rs:105:13:105:21 | user_data | main.rs:110:16:110:37 | MacroExpr | provenance | | -| main.rs:105:13:105:21 | user_data | main.rs:111:16:111:37 | MacroExpr | provenance | | -| main.rs:105:13:105:21 | user_data | main.rs:112:16:112:37 | MacroExpr | provenance | | -| main.rs:105:13:105:21 | user_data | main.rs:115:15:115:75 | MacroExpr | provenance | | -| main.rs:105:25:105:38 | ...::args | main.rs:105:25:105:40 | ...::args(...) [element] | provenance | Src:MaD:5 | -| main.rs:105:25:105:40 | ...::args(...) [element] | main.rs:105:25:105:47 | ... .nth(...) [Some] | provenance | MaD:7 | -| main.rs:105:25:105:47 | ... .nth(...) [Some] | main.rs:105:25:105:67 | ... .unwrap_or_default() | provenance | MaD:8 | -| main.rs:105:25:105:67 | ... .unwrap_or_default() | main.rs:105:13:105:21 | user_data | provenance | | -| main.rs:108:15:108:35 | MacroExpr | main.rs:108:9:108:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:109:15:109:38 | MacroExpr | main.rs:109:9:109:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:110:16:110:37 | MacroExpr | main.rs:110:9:110:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:111:16:111:37 | MacroExpr | main.rs:111:9:111:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:112:16:112:37 | MacroExpr | main.rs:112:9:112:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:115:15:115:75 | MacroExpr | main.rs:115:9:115:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:119:13:119:21 | user_data | main.rs:122:18:122:38 | MacroExpr | provenance | | -| main.rs:119:13:119:21 | user_data | main.rs:123:19:123:49 | MacroExpr | provenance | | -| main.rs:119:25:119:37 | ...::var | main.rs:119:25:119:45 | ...::var(...) [Ok] | provenance | Src:MaD:6 | -| main.rs:119:25:119:45 | ...::var(...) [Ok] | main.rs:119:25:119:65 | ... .unwrap_or_default() | provenance | MaD:11 | -| main.rs:119:25:119:65 | ... .unwrap_or_default() | main.rs:119:13:119:21 | user_data | provenance | | -| main.rs:122:18:122:38 | MacroExpr | main.rs:122:9:122:16 | ...::_print | provenance | MaD:3 Sink:MaD:3 | -| main.rs:123:19:123:49 | MacroExpr | main.rs:123:9:123:17 | ...::_eprint | provenance | MaD:2 Sink:MaD:2 | +| main.rs:109:13:109:21 | user_data | main.rs:112:15:112:35 | MacroExpr | provenance | | +| main.rs:109:13:109:21 | user_data | main.rs:113:15:113:38 | MacroExpr | provenance | | +| main.rs:109:13:109:21 | user_data | main.rs:114:16:114:37 | MacroExpr | provenance | | +| main.rs:109:13:109:21 | user_data | main.rs:115:16:115:37 | MacroExpr | provenance | | +| main.rs:109:13:109:21 | user_data | main.rs:116:16:116:37 | MacroExpr | provenance | | +| main.rs:109:13:109:21 | user_data | main.rs:119:15:119:75 | MacroExpr | provenance | | +| main.rs:109:25:109:38 | ...::args | main.rs:109:25:109:40 | ...::args(...) [element] | provenance | Src:MaD:5 | +| main.rs:109:25:109:40 | ...::args(...) [element] | main.rs:109:25:109:47 | ... .nth(...) [Some] | provenance | MaD:7 | +| main.rs:109:25:109:47 | ... .nth(...) [Some] | main.rs:109:25:109:67 | ... .unwrap_or_default() | provenance | MaD:8 | +| main.rs:109:25:109:67 | ... .unwrap_or_default() | main.rs:109:13:109:21 | user_data | provenance | | +| main.rs:112:15:112:35 | MacroExpr | main.rs:112:9:112:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:113:15:113:38 | MacroExpr | main.rs:113:9:113:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:114:16:114:37 | MacroExpr | main.rs:114:9:114:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:115:16:115:37 | MacroExpr | main.rs:115:9:115:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:116:16:116:37 | MacroExpr | main.rs:116:9:116:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:119:15:119:75 | MacroExpr | main.rs:119:9:119:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:123:13:123:21 | user_data | main.rs:126:18:126:38 | MacroExpr | provenance | | +| main.rs:123:13:123:21 | user_data | main.rs:127:19:127:49 | MacroExpr | provenance | | +| main.rs:123:25:123:37 | ...::var | main.rs:123:25:123:45 | ...::var(...) [Ok] | provenance | Src:MaD:6 | +| main.rs:123:25:123:45 | ...::var(...) [Ok] | main.rs:123:25:123:65 | ... .unwrap_or_default() | provenance | MaD:11 | +| main.rs:123:25:123:65 | ... .unwrap_or_default() | main.rs:123:13:123:21 | user_data | provenance | | +| main.rs:126:18:126:38 | MacroExpr | main.rs:126:9:126:16 | ...::_print | provenance | MaD:3 Sink:MaD:3 | +| main.rs:127:19:127:49 | MacroExpr | main.rs:127:9:127:17 | ...::_eprint | provenance | MaD:2 Sink:MaD:2 | models | 1 | Sink: log::__private_api::log; Argument[0]; log-injection | | 2 | Sink: std::io::stdio::_eprint; Argument[0]; log-injection | @@ -83,29 +83,29 @@ nodes | main.rs:19:12:19:39 | MacroExpr | semmle.label | MacroExpr | | main.rs:30:5:30:9 | ...::log | semmle.label | ...::log | | main.rs:30:11:30:66 | MacroExpr | semmle.label | MacroExpr | -| main.rs:105:13:105:21 | user_data | semmle.label | user_data | -| main.rs:105:25:105:38 | ...::args | semmle.label | ...::args | -| main.rs:105:25:105:40 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | -| main.rs:105:25:105:47 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | -| main.rs:105:25:105:67 | ... .unwrap_or_default() | semmle.label | ... .unwrap_or_default() | -| main.rs:108:9:108:13 | ...::log | semmle.label | ...::log | -| main.rs:108:15:108:35 | MacroExpr | semmle.label | MacroExpr | -| main.rs:109:9:109:13 | ...::log | semmle.label | ...::log | -| main.rs:109:15:109:38 | MacroExpr | semmle.label | MacroExpr | -| main.rs:110:9:110:14 | ...::log | semmle.label | ...::log | -| main.rs:110:16:110:37 | MacroExpr | semmle.label | MacroExpr | -| main.rs:111:9:111:14 | ...::log | semmle.label | ...::log | -| main.rs:111:16:111:37 | MacroExpr | semmle.label | MacroExpr | -| main.rs:112:9:112:14 | ...::log | semmle.label | ...::log | -| main.rs:112:16:112:37 | MacroExpr | semmle.label | MacroExpr | -| main.rs:115:9:115:13 | ...::log | semmle.label | ...::log | -| main.rs:115:15:115:75 | MacroExpr | semmle.label | MacroExpr | -| main.rs:119:13:119:21 | user_data | semmle.label | user_data | -| main.rs:119:25:119:37 | ...::var | semmle.label | ...::var | -| main.rs:119:25:119:45 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | -| main.rs:119:25:119:65 | ... .unwrap_or_default() | semmle.label | ... .unwrap_or_default() | -| main.rs:122:9:122:16 | ...::_print | semmle.label | ...::_print | -| main.rs:122:18:122:38 | MacroExpr | semmle.label | MacroExpr | -| main.rs:123:9:123:17 | ...::_eprint | semmle.label | ...::_eprint | -| main.rs:123:19:123:49 | MacroExpr | semmle.label | MacroExpr | +| main.rs:109:13:109:21 | user_data | semmle.label | user_data | +| main.rs:109:25:109:38 | ...::args | semmle.label | ...::args | +| main.rs:109:25:109:40 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | +| main.rs:109:25:109:47 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | +| main.rs:109:25:109:67 | ... .unwrap_or_default() | semmle.label | ... .unwrap_or_default() | +| main.rs:112:9:112:13 | ...::log | semmle.label | ...::log | +| main.rs:112:15:112:35 | MacroExpr | semmle.label | MacroExpr | +| main.rs:113:9:113:13 | ...::log | semmle.label | ...::log | +| main.rs:113:15:113:38 | MacroExpr | semmle.label | MacroExpr | +| main.rs:114:9:114:14 | ...::log | semmle.label | ...::log | +| main.rs:114:16:114:37 | MacroExpr | semmle.label | MacroExpr | +| main.rs:115:9:115:14 | ...::log | semmle.label | ...::log | +| main.rs:115:16:115:37 | MacroExpr | semmle.label | MacroExpr | +| main.rs:116:9:116:14 | ...::log | semmle.label | ...::log | +| main.rs:116:16:116:37 | MacroExpr | semmle.label | MacroExpr | +| main.rs:119:9:119:13 | ...::log | semmle.label | ...::log | +| main.rs:119:15:119:75 | MacroExpr | semmle.label | MacroExpr | +| main.rs:123:13:123:21 | user_data | semmle.label | user_data | +| main.rs:123:25:123:37 | ...::var | semmle.label | ...::var | +| main.rs:123:25:123:45 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | +| main.rs:123:25:123:65 | ... .unwrap_or_default() | semmle.label | ... .unwrap_or_default() | +| main.rs:126:9:126:16 | ...::_print | semmle.label | ...::_print | +| main.rs:126:18:126:38 | MacroExpr | semmle.label | MacroExpr | +| main.rs:127:9:127:17 | ...::_eprint | semmle.label | ...::_eprint | +| main.rs:127:19:127:49 | MacroExpr | semmle.label | MacroExpr | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-117/main.rs b/rust/ql/test/query-tests/security/CWE-117/main.rs index 10bb03eb02ca..f5001846d1bf 100644 --- a/rust/ql/test/query-tests/security/CWE-117/main.rs +++ b/rust/ql/test/query-tests/security/CWE-117/main.rs @@ -40,10 +40,14 @@ fn main() { let system_time = std::time::SystemTime::now(); info!("Current time: {:?}", system_time); - // GOOD: Numeric data derived from user input (not directly logged) + // GOOD: Numeric data derived from user input (indirectly) let user_id = username.len(); info!("User ID length: {}", user_id); + // GOOD: Numeric data derived from user input (directly) + let number = remote_data.parse::().unwrap_or(0); + info!("Number: {}", number); + // More complex test cases test_complex_scenarios(&username, &user_input); test_indirect_flows(&remote_data); diff --git a/rust/ql/test/query-tests/security/CWE-295/Cargo.lock b/rust/ql/test/query-tests/security/CWE-295/Cargo.lock new file mode 100644 index 000000000000..43943439edda --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-295/Cargo.lock @@ -0,0 +1,1596 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cc" +version = "1.2.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "find-msvc-tools" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1744436df46f0bde35af3eda22aeaba453aada65d8f1c171cd8a5f59030bd69f" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "openssl" +version = "0.10.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "reqwest" +version = "0.12.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.23.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "schannel" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.110" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +dependencies = [ + "fastrand", + "getrandom 0.3.4", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "native-tls", + "rand", + "reqwest", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-registry" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +dependencies = [ + "windows-link 0.1.3", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected new file mode 100644 index 000000000000..bbc67f6fd18a --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected @@ -0,0 +1,129 @@ +#select +| main.rs:4:4:4:30 | danger_accept_invalid_certs | main.rs:4:32:4:35 | true | main.rs:4:4:4:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:9:4:9:34 | danger_accept_invalid_hostnames | main.rs:9:36:9:39 | true | main.rs:9:4:9:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:16:4:16:30 | danger_accept_invalid_certs | main.rs:16:32:16:35 | true | main.rs:16:4:16:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:17:4:17:34 | danger_accept_invalid_hostnames | main.rs:17:36:17:39 | true | main.rs:17:4:17:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:37:4:37:30 | danger_accept_invalid_certs | main.rs:37:32:37:35 | true | main.rs:37:4:37:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:42:4:42:34 | danger_accept_invalid_hostnames | main.rs:42:36:42:39 | true | main.rs:42:4:42:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:47:4:47:30 | danger_accept_invalid_certs | main.rs:47:32:47:35 | true | main.rs:47:4:47:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:48:4:48:34 | danger_accept_invalid_hostnames | main.rs:48:36:48:39 | true | main.rs:48:4:48:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:55:4:55:30 | danger_accept_invalid_certs | main.rs:55:32:55:35 | true | main.rs:55:4:55:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:56:4:56:34 | danger_accept_invalid_hostnames | main.rs:56:36:56:39 | true | main.rs:56:4:56:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:83:4:83:30 | danger_accept_invalid_certs | main.rs:74:15:74:18 | true | main.rs:83:4:83:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:88:4:88:30 | danger_accept_invalid_certs | main.rs:75:22:75:25 | true | main.rs:88:4:88:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:93:4:93:30 | danger_accept_invalid_certs | main.rs:154:17:154:20 | true | main.rs:93:4:93:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:109:4:109:34 | danger_accept_invalid_hostnames | main.rs:107:17:107:31 | ...::exists | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:115:4:115:34 | danger_accept_invalid_hostnames | main.rs:113:43:113:50 | metadata | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:121:4:121:34 | danger_accept_invalid_hostnames | main.rs:119:11:119:27 | ...::metadata | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:146:4:146:34 | danger_accept_invalid_hostnames | main.rs:144:39:144:42 | true | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +edges +| main.rs:4:32:4:35 | true | main.rs:4:4:4:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | +| main.rs:9:36:9:39 | true | main.rs:9:4:9:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | +| main.rs:16:32:16:35 | true | main.rs:16:4:16:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | +| main.rs:17:36:17:39 | true | main.rs:17:4:17:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | +| main.rs:37:32:37:35 | true | main.rs:37:4:37:30 | danger_accept_invalid_certs | provenance | MaD:3 Sink:MaD:3 | +| main.rs:42:36:42:39 | true | main.rs:42:4:42:34 | danger_accept_invalid_hostnames | provenance | MaD:6 Sink:MaD:6 | +| main.rs:47:32:47:35 | true | main.rs:47:4:47:30 | danger_accept_invalid_certs | provenance | MaD:3 Sink:MaD:3 | +| main.rs:48:36:48:39 | true | main.rs:48:4:48:34 | danger_accept_invalid_hostnames | provenance | MaD:4 Sink:MaD:4 | +| main.rs:55:32:55:35 | true | main.rs:55:4:55:30 | danger_accept_invalid_certs | provenance | MaD:5 Sink:MaD:5 | +| main.rs:56:36:56:39 | true | main.rs:56:4:56:34 | danger_accept_invalid_hostnames | provenance | MaD:6 Sink:MaD:6 | +| main.rs:73:19:73:40 | ...: bool | main.rs:93:32:93:47 | sometimes_global | provenance | | +| main.rs:74:6:74:11 | always | main.rs:83:32:83:37 | always | provenance | | +| main.rs:74:15:74:18 | true | main.rs:74:6:74:11 | always | provenance | | +| main.rs:75:6:75:18 | mut sometimes | main.rs:88:32:88:40 | sometimes | provenance | | +| main.rs:75:22:75:25 | true | main.rs:75:6:75:18 | mut sometimes | provenance | | +| main.rs:83:32:83:37 | always | main.rs:83:4:83:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | +| main.rs:88:32:88:40 | sometimes | main.rs:88:4:88:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | +| main.rs:93:32:93:47 | sometimes_global | main.rs:93:4:93:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | +| main.rs:107:6:107:7 | b1 | main.rs:109:36:109:37 | b1 | provenance | | +| main.rs:107:17:107:31 | ...::exists | main.rs:107:17:107:42 | ...::exists(...) [Ok] | provenance | Src:MaD:8 | +| main.rs:107:17:107:42 | ...::exists(...) [Ok] | main.rs:107:17:107:51 | ... .unwrap() | provenance | MaD:10 | +| main.rs:107:17:107:51 | ... .unwrap() | main.rs:107:6:107:7 | b1 | provenance | | +| main.rs:109:36:109:37 | b1 | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | +| main.rs:113:6:113:7 | b2 | main.rs:115:36:115:37 | b2 | provenance | | +| main.rs:113:11:113:52 | ... .metadata() [Ok] | main.rs:113:11:113:61 | ... .unwrap() | provenance | MaD:10 | +| main.rs:113:11:113:61 | ... .unwrap() | main.rs:113:11:113:71 | ... .is_file() | provenance | MaD:12 | +| main.rs:113:11:113:71 | ... .is_file() | main.rs:113:6:113:7 | b2 | provenance | | +| main.rs:113:43:113:50 | metadata | main.rs:113:11:113:52 | ... .metadata() [Ok] | provenance | Src:MaD:7 | +| main.rs:115:36:115:37 | b2 | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | +| main.rs:119:6:119:7 | b3 | main.rs:121:36:121:37 | b3 | provenance | | +| main.rs:119:11:119:27 | ...::metadata | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | provenance | Src:MaD:9 | +| main.rs:119:11:119:38 | ...::metadata(...) [Ok] | main.rs:119:11:119:47 | ... .unwrap() | provenance | MaD:10 | +| main.rs:119:11:119:47 | ... .unwrap() | main.rs:119:11:119:56 | ... .is_dir() | provenance | MaD:11 | +| main.rs:119:11:119:56 | ... .is_dir() | main.rs:119:6:119:7 | b3 | provenance | | +| main.rs:121:36:121:37 | b3 | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | +| main.rs:144:6:144:7 | b6 | main.rs:146:36:146:37 | b6 | provenance | | +| main.rs:144:39:144:42 | true | main.rs:144:6:144:7 | b6 | provenance | | +| main.rs:146:36:146:37 | b6 | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | +| main.rs:154:17:154:20 | true | main.rs:73:19:73:40 | ...: bool | provenance | | +models +| 1 | Sink: ::danger_accept_invalid_certs; Argument[0]; disable-certificate | +| 2 | Sink: ::danger_accept_invalid_hostnames; Argument[0]; disable-certificate | +| 3 | Sink: ::danger_accept_invalid_certs; Argument[0]; disable-certificate | +| 4 | Sink: ::danger_accept_invalid_hostnames; Argument[0]; disable-certificate | +| 5 | Sink: ::danger_accept_invalid_certs; Argument[0]; disable-certificate | +| 6 | Sink: ::danger_accept_invalid_hostnames; Argument[0]; disable-certificate | +| 7 | Source: ::metadata; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 8 | Source: std::fs::exists; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 9 | Source: std::fs::metadata; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 10 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 11 | Summary: ::is_dir; Argument[self].Reference; ReturnValue; taint | +| 12 | Summary: ::is_file; Argument[self].Reference; ReturnValue; taint | +nodes +| main.rs:4:4:4:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | +| main.rs:4:32:4:35 | true | semmle.label | true | +| main.rs:9:4:9:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | +| main.rs:9:36:9:39 | true | semmle.label | true | +| main.rs:16:4:16:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | +| main.rs:16:32:16:35 | true | semmle.label | true | +| main.rs:17:4:17:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | +| main.rs:17:36:17:39 | true | semmle.label | true | +| main.rs:37:4:37:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | +| main.rs:37:32:37:35 | true | semmle.label | true | +| main.rs:42:4:42:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | +| main.rs:42:36:42:39 | true | semmle.label | true | +| main.rs:47:4:47:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | +| main.rs:47:32:47:35 | true | semmle.label | true | +| main.rs:48:4:48:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | +| main.rs:48:36:48:39 | true | semmle.label | true | +| main.rs:55:4:55:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | +| main.rs:55:32:55:35 | true | semmle.label | true | +| main.rs:56:4:56:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | +| main.rs:56:36:56:39 | true | semmle.label | true | +| main.rs:73:19:73:40 | ...: bool | semmle.label | ...: bool | +| main.rs:74:6:74:11 | always | semmle.label | always | +| main.rs:74:15:74:18 | true | semmle.label | true | +| main.rs:75:6:75:18 | mut sometimes | semmle.label | mut sometimes | +| main.rs:75:22:75:25 | true | semmle.label | true | +| main.rs:83:4:83:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | +| main.rs:83:32:83:37 | always | semmle.label | always | +| main.rs:88:4:88:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | +| main.rs:88:32:88:40 | sometimes | semmle.label | sometimes | +| main.rs:93:4:93:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | +| main.rs:93:32:93:47 | sometimes_global | semmle.label | sometimes_global | +| main.rs:107:6:107:7 | b1 | semmle.label | b1 | +| main.rs:107:17:107:31 | ...::exists | semmle.label | ...::exists | +| main.rs:107:17:107:42 | ...::exists(...) [Ok] | semmle.label | ...::exists(...) [Ok] | +| main.rs:107:17:107:51 | ... .unwrap() | semmle.label | ... .unwrap() | +| main.rs:109:4:109:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | +| main.rs:109:36:109:37 | b1 | semmle.label | b1 | +| main.rs:113:6:113:7 | b2 | semmle.label | b2 | +| main.rs:113:11:113:52 | ... .metadata() [Ok] | semmle.label | ... .metadata() [Ok] | +| main.rs:113:11:113:61 | ... .unwrap() | semmle.label | ... .unwrap() | +| main.rs:113:11:113:71 | ... .is_file() | semmle.label | ... .is_file() | +| main.rs:113:43:113:50 | metadata | semmle.label | metadata | +| main.rs:115:4:115:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | +| main.rs:115:36:115:37 | b2 | semmle.label | b2 | +| main.rs:119:6:119:7 | b3 | semmle.label | b3 | +| main.rs:119:11:119:27 | ...::metadata | semmle.label | ...::metadata | +| main.rs:119:11:119:38 | ...::metadata(...) [Ok] | semmle.label | ...::metadata(...) [Ok] | +| main.rs:119:11:119:47 | ... .unwrap() | semmle.label | ... .unwrap() | +| main.rs:119:11:119:56 | ... .is_dir() | semmle.label | ... .is_dir() | +| main.rs:121:4:121:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | +| main.rs:121:36:121:37 | b3 | semmle.label | b3 | +| main.rs:144:6:144:7 | b6 | semmle.label | b6 | +| main.rs:144:39:144:42 | true | semmle.label | true | +| main.rs:146:4:146:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | +| main.rs:146:36:146:37 | b6 | semmle.label | b6 | +| main.rs:154:17:154:20 | true | semmle.label | true | +subpaths diff --git a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.qlref b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.qlref new file mode 100644 index 000000000000..cc99c2b151c9 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.qlref @@ -0,0 +1,4 @@ +query: queries/security/CWE-295/DisabledCertificateCheck.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/rust/ql/test/query-tests/security/CWE-295/main.rs b/rust/ql/test/query-tests/security/CWE-295/main.rs new file mode 100644 index 000000000000..6088e6fc1bee --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-295/main.rs @@ -0,0 +1,157 @@ +fn test_native_tls() { + // unsafe + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_certs(true) // $ Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_hostnames(true) // $ Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + let _client = native_tls::TlsConnector::builder() + .min_protocol_version(Some(native_tls::Protocol::Tlsv12)) + .use_sni(true) + .danger_accept_invalid_certs(true) // $ Alert[rust/disabled-certificate-check] + .danger_accept_invalid_hostnames(true) // $ Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + // safe + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_certs(false) // good + .danger_accept_invalid_hostnames(false) // good + .build() + .unwrap(); + + // default (safe) + let _client = native_tls::TlsConnector::builder() + .build() + .unwrap(); +} + +fn test_reqwest() { + // unsafe + let _client = reqwest::Client::builder() + .danger_accept_invalid_certs(true) // $ Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + let _client = reqwest::blocking::ClientBuilder::new() + .danger_accept_invalid_hostnames(true) // $ Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + let _client = reqwest::ClientBuilder::new() + .danger_accept_invalid_certs(true) // $ Alert[rust/disabled-certificate-check] + .danger_accept_invalid_hostnames(true) // $ Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + let _client = reqwest::blocking::Client::builder() + .tcp_keepalive(std::time::Duration::from_secs(30)) + .https_only(true) + .danger_accept_invalid_certs(true) // $ Alert[rust/disabled-certificate-check] + .danger_accept_invalid_hostnames(true) // $ Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + // safe + let _client = reqwest::blocking::Client::builder() + .danger_accept_invalid_certs(false) // good + .danger_accept_invalid_hostnames(false) // good + .build() + .unwrap(); + + // default (safe) + let _client = reqwest::blocking::Client::builder() + .build() + .unwrap(); +} + +fn test_data_flow(sometimes_global: bool) { + let always = true; // $ Source=always + let mut sometimes = true; // $ Source=sometimes + let never = false; + + if rand::random_range(0 .. 2) == 0 { + sometimes = false; + } + + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_certs(always) // $ Alert[rust/disabled-certificate-check]=always + .build() + .unwrap(); + + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_certs(sometimes) // $ Alert[rust/disabled-certificate-check]=sometimes + .build() + .unwrap(); + + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_certs(sometimes_global) // $ Alert[rust/disabled-certificate-check]=arg + .build() + .unwrap(); + + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_certs(never) // good + .build() + .unwrap(); +} + +fn test_threat_model_source() { + // hostname setting from `fs` functions returning `bool` directly + // (these are highly unnatural but serve to create simple tests) + + let b1: bool = std::fs::exists("main.rs").unwrap(); // $ Source=exists + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_hostnames(b1) // $ Alert[rust/disabled-certificate-check]=exists + .build() + .unwrap(); + + let b2 = std::path::Path::new("main.rs").metadata().unwrap().is_file(); // $ Source=is_file + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_hostnames(b2) // $ Alert[rust/disabled-certificate-check]=is_file + .build() + .unwrap(); + + let b3 = std::fs::metadata("main.rs").unwrap().is_dir(); // $ Source=is_dir + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_hostnames(b3) // $ Alert[rust/disabled-certificate-check]=is_dir + .build() + .unwrap(); + + // hostname setting from `stdin`, parsed to `bool` + // (these are a little closer to something real) + + let mut input_line = String::new(); + let input = std::io::stdin(); + input.read_line(&mut input_line).unwrap(); + + let b4: bool = input_line.parse::().unwrap_or(false); + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_hostnames(b4) // $ MISSING: Alert[rust/disabled-certificate-check]=stdin + .build() + .unwrap(); + + let b5 = std::str::FromStr::from_str(&input_line).unwrap_or(false); + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_hostnames(b5) // $ MISSING: Alert[rust/disabled-certificate-check]=stdin + .build() + .unwrap(); + + let b6 = if (input_line == "true") { true } else { false }; // $ Source=true + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_hostnames(b6) // $ Alert[rust/disabled-certificate-check]=true + .build() + .unwrap(); +} + +fn main() { + test_native_tls(); + test_reqwest(); + test_data_flow(true); // $ Source=arg + test_data_flow(false); + test_threat_model_source(); +} diff --git a/rust/ql/test/query-tests/security/CWE-295/options.yml b/rust/ql/test/query-tests/security/CWE-295/options.yml new file mode 100644 index 000000000000..711dfe71f8bf --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-295/options.yml @@ -0,0 +1,5 @@ +qltest_cargo_check: true +qltest_dependencies: + - reqwest = { version = "0.12.9", features = ["blocking"] } + - native-tls = { version = "0.2.14" } + - rand = { version = "0.9.2" } diff --git a/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected index c84f3becf1f0..078bce75133f 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected @@ -13,7 +13,6 @@ multipleCallTargets | test_storage.rs:73:25:73:67 | ...::from(...) | | test_storage.rs:75:25:75:65 | ...::from(...) | | test_storage.rs:76:25:76:65 | ...::from(...) | -| test_storage.rs:77:14:77:24 | s1.as_str() | | test_storage.rs:78:25:78:65 | ...::from(...) | | test_storage.rs:79:25:79:65 | ...::from(...) | | test_storage.rs:80:25:80:70 | ...::from(...) | diff --git a/rust/ql/test/query-tests/security/CWE-614/Cargo.lock b/rust/ql/test/query-tests/security/CWE-614/Cargo.lock index 1d2124de710d..50a5b405215c 100644 --- a/rust/ql/test/query-tests/security/CWE-614/Cargo.lock +++ b/rust/ql/test/query-tests/security/CWE-614/Cargo.lock @@ -3,588 +3,2960 @@ version = 4 [[package]] -name = "aead" +name = "actix-codec" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" dependencies = [ - "crypto-common", - "generic-array", + "bitflags", + "bytes", + "futures-core", + "futures-sink", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", + "tracing", ] [[package]] -name = "aes" -version = "0.8.4" +name = "actix-http" +version = "3.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +checksum = "7926860314cbe2fb5d1f13731e387ab43bd32bca224e82e6e2db85de0a3dba49" +dependencies = [ + "actix-codec", + "actix-rt", + "actix-service", + "actix-utils", + "base64 0.22.1", + "bitflags", + "brotli", + "bytes", + "bytestring", + "derive_more", + "encoding_rs", + "flate2", + "foldhash", + "futures-core", + "h2 0.3.27", + "http 0.2.12", + "httparse", + "httpdate", + "itoa", + "language-tags", + "local-channel", + "mime", + "percent-encoding", + "pin-project-lite", + "rand 0.9.2", + "sha1 0.10.6", + "smallvec", + "tokio", + "tokio-util", + "tracing", + "zstd", +] + +[[package]] +name = "actix-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" +dependencies = [ + "quote", + "syn 2.0.108", +] + +[[package]] +name = "actix-router" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" dependencies = [ + "bytestring", "cfg-if", - "cipher", - "cpufeatures", + "http 0.2.12", + "regex", + "regex-lite", + "serde", + "tracing", ] [[package]] -name = "aes-gcm" -version = "0.10.3" +name = "actix-rt" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +checksum = "92589714878ca59a7626ea19734f0e07a6a875197eec751bb5d3f99e64998c63" dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "ghash", - "subtle", + "futures-core", + "tokio", ] [[package]] -name = "aes-gcm-siv" -version = "0.11.1" +name = "actix-server" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae0784134ba9375416d469ec31e7c5f9fa94405049cf08c5ce5b4698be673e0d" +checksum = "a65064ea4a457eaf07f2fba30b4c695bf43b721790e9530d26cb6f9019ff7502" dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "polyval", - "subtle", - "zeroize", + "actix-rt", + "actix-service", + "actix-utils", + "futures-core", + "futures-util", + "mio", + "socket2 0.5.10", + "tokio", + "tracing", ] [[package]] -name = "anyhow" -version = "1.0.99" +name = "actix-service" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +checksum = "9e46f36bf0e5af44bdc4bdb36fbbd421aa98c79a9bce724e1edeb3894e10dc7f" +dependencies = [ + "futures-core", + "pin-project-lite", +] [[package]] -name = "base64" -version = "0.22.1" +name = "actix-utils" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" +dependencies = [ + "local-waker", + "pin-project-lite", +] [[package]] -name = "biscotti" -version = "0.4.3" +name = "actix-web" +version = "4.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddb6f28a3d15d18cace7a8010282a4d9cee1452dcd33f5861c173b4a31095b79" +checksum = "a597b77b5c6d6a1e1097fddde329a83665e25c5437c696a3a9a4aa514a614dea" dependencies = [ - "aes-gcm-siv", - "anyhow", - "base64", - "hkdf", - "hmac", - "jiff", - "percent-encoding", - "rand 0.9.2", + "actix-codec", + "actix-http", + "actix-macros", + "actix-router", + "actix-rt", + "actix-server", + "actix-service", + "actix-utils", + "actix-web-codegen", + "bytes", + "bytestring", + "cfg-if", + "cookie 0.16.2", + "derive_more", + "encoding_rs", + "foldhash", + "futures-core", + "futures-util", + "impl-more", + "itoa", + "language-tags", + "log", + "mime", + "once_cell", + "pin-project-lite", + "regex", + "regex-lite", "serde", - "sha2", - "subtle", + "serde_json", + "serde_urlencoded", + "smallvec", + "socket2 0.5.10", + "time 0.3.44", + "tracing", + "url", ] [[package]] -name = "block-buffer" -version = "0.10.4" +name = "actix-web-codegen" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "f591380e2e68490b5dfaf1dd1aa0ebe78d84ba7067078512b4ea6e4492d622b8" dependencies = [ - "generic-array", + "actix-router", + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] -name = "cfg-if" -version = "1.0.3" +name = "adler2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] -name = "cipher" -version = "0.4.4" +name = "aead" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" +dependencies = [ + "generic-array", +] + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ "crypto-common", - "inout", + "generic-array", ] [[package]] -name = "cookie" -version = "0.18.1" +name = "aes" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" dependencies = [ - "aes-gcm", - "base64", - "hmac", - "percent-encoding", - "rand 0.8.5", - "sha2", + "aes-soft", + "aesni", + "cipher 0.2.5", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher 0.4.4", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5278b5fabbb9bd46e24aa69b2fdea62c99088e0a950a9be40e3e0101298f88da" +dependencies = [ + "aead 0.3.2", + "aes 0.6.0", + "cipher 0.2.5", + "ctr 0.6.0", + "ghash 0.3.1", "subtle", - "time", - "version_check", ] [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "aes-gcm" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ - "libc", + "aead 0.5.2", + "aes 0.8.4", + "cipher 0.4.4", + "ctr 0.9.2", + "ghash 0.5.1", + "subtle", ] [[package]] -name = "crypto-common" -version = "0.1.6" +name = "aes-gcm-siv" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "ae0784134ba9375416d469ec31e7c5f9fa94405049cf08c5ce5b4698be673e0d" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "aead 0.5.2", + "aes 0.8.4", + "cipher 0.4.4", + "ctr 0.9.2", + "polyval 0.6.2", + "subtle", + "zeroize", ] [[package]] -name = "ctr" -version = "0.9.2" +name = "aes-soft" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" dependencies = [ - "cipher", + "cipher 0.2.5", + "opaque-debug", ] [[package]] -name = "deranged" -version = "0.5.3" +name = "aesni" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" +checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" dependencies = [ - "powerfmt", + "cipher 0.2.5", + "opaque-debug", ] [[package]] -name = "digest" -version = "0.10.7" +name = "aho-corasick" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ - "block-buffer", - "crypto-common", - "subtle", + "memchr", ] [[package]] -name = "generic-array" -version = "0.14.7" +name = "alloc-no-stdlib" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" dependencies = [ - "typenum", - "version_check", + "alloc-no-stdlib", ] [[package]] -name = "getrandom" -version = "0.2.16" +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ - "cfg-if", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", ] [[package]] -name = "getrandom" -version = "0.3.3" +name = "anyhow" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ - "cfg-if", - "libc", - "r-efi", - "wasi 0.14.5+wasi-0.2.4", + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", ] [[package]] -name = "ghash" -version = "0.5.1" +name = "async-channel" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ - "opaque-debug", - "polyval", + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", ] [[package]] -name = "hkdf" -version = "0.12.4" +name = "async-executor" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" dependencies = [ - "hmac", + "async-task", + "concurrent-queue", + "fastrand 2.3.0", + "futures-lite 2.6.1", + "pin-project-lite", + "slab", ] [[package]] -name = "hmac" -version = "0.12.1" +name = "async-global-executor" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ - "digest", + "async-channel 2.5.0", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite 2.6.1", + "once_cell", ] [[package]] -name = "inout" -version = "0.1.4" +name = "async-io" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" dependencies = [ - "generic-array", + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.6.1", + "parking", + "polling", + "rustix", + "slab", + "windows-sys 0.61.2", ] [[package]] -name = "jiff" -version = "0.2.15" +name = "async-lock" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" dependencies = [ - "jiff-static", - "jiff-tzdb-platform", - "log", - "portable-atomic", - "portable-atomic-util", - "serde", - "windows-sys", + "event-listener 5.4.1", + "event-listener-strategy", + "pin-project-lite", ] [[package]] -name = "jiff-static" -version = "0.2.15" +name = "async-std" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" dependencies = [ - "proc-macro2", - "quote", - "syn", + "async-channel 1.9.0", + "async-global-executor", + "async-io", + "async-lock", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite 2.6.1", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", ] [[package]] -name = "jiff-tzdb" -version = "0.1.4" +name = "async-task" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1283705eb0a21404d2bfd6eef2a7593d240bc42a0bdb39db0ad6fa2ec026524" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] -name = "jiff-tzdb-platform" -version = "0.1.3" +name = "atomic-waker" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "biscotti" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddb6f28a3d15d18cace7a8010282a4d9cee1452dcd33f5861c173b4a31095b79" dependencies = [ - "jiff-tzdb", + "aes-gcm-siv", + "anyhow", + "base64 0.22.1", + "hkdf 0.12.4", + "hmac 0.12.1", + "jiff", + "percent-encoding", + "rand 0.9.2", + "serde", + "sha2 0.10.9", + "subtle", ] [[package]] -name = "libc" -version = "0.2.175" +name = "bitflags" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] -name = "log" -version = "0.4.28" +name = "block-buffer" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] [[package]] -name = "num-conv" -version = "0.1.0" +name = "block-buffer" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] [[package]] -name = "opaque-debug" -version = "0.3.1" +name = "blocking" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel 2.5.0", + "async-task", + "futures-io", + "futures-lite 2.6.1", + "piper", +] [[package]] -name = "percent-encoding" -version = "2.3.1" +name = "brotli" +version = "8.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] [[package]] -name = "polyval" -version = "0.6.2" +name = "brotli-decompressor" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" dependencies = [ - "cfg-if", - "cpufeatures", - "opaque-debug", - "universal-hash", + "alloc-no-stdlib", + "alloc-stdlib", ] [[package]] -name = "portable-atomic" -version = "1.11.1" +name = "bumpalo" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "bytestring" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "113b4343b5f6617e7ad401ced8de3cc8b012e73a594347c307b90db3e9271289" +dependencies = [ + "bytes", +] + +[[package]] +name = "cc" +version = "1.2.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37521ac7aabe3d13122dc382493e20c9416f299d2ccd5b3a5340a2570cdeb0f3" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +dependencies = [ + "iana-time-zone", + "num-traits", + "windows-link", +] + +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "const_fn" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f8a2ca5ac02d09563609681103aada9e1777d54fc57a5acd7a41404f9c93b6e" + +[[package]] +name = "cookie" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a5d7b21829bc7b4bf4754a978a241ae54ea55a40f92bb20216e54096f4b951" +dependencies = [ + "aes-gcm 0.8.0", + "base64 0.13.1", + "hkdf 0.10.0", + "hmac 0.10.1", + "percent-encoding", + "rand 0.8.5", + "sha2 0.9.9", + "time 0.2.27", + "version_check", +] + +[[package]] +name = "cookie" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" +dependencies = [ + "percent-encoding", + "time 0.3.44", + "version_check", +] + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "aes-gcm 0.10.3", + "base64 0.22.1", + "hkdf 0.12.4", + "hmac 0.12.1", + "percent-encoding", + "rand 0.8.5", + "sha2 0.10.9", + "subtle", + "time 0.3.44", + "version_check", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "cpuid-bool" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4857fd85a0c34b3c3297875b747c1e02e06b6a0ea32dd892d8192b9ce0813ea6" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "ctr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" +dependencies = [ + "cipher 0.2.5", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher 0.4.4", +] + +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "discard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener 5.4.1", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "find-msvc-tools" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + +[[package]] +name = "flate2" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand 2.3.0", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-macro", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "ghash" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375" +dependencies = [ + "opaque-debug", + "polyval 0.4.5", +] + +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval 0.6.2", +] + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "h2" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + +[[package]] +name = "headers" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" +dependencies = [ + "base64 0.22.1", + "bytes", + "headers-core", + "http 1.3.1", + "httpdate", + "mime", + "sha1 0.10.6", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http 1.3.1", +] + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hkdf" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51ab2f639c231793c5f6114bdb9bbe50a7dbbfcd7c7c6bd8475dec2d991e964f" +dependencies = [ + "digest 0.9.0", + "hmac 0.10.1", +] + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac 0.12.1", +] + +[[package]] +name = "hmac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "http-types" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9b187a72d63adbfba487f48095306ac823049cb504ee195541e91c7775f5ad" +dependencies = [ + "anyhow", + "async-channel 1.9.0", + "async-std", + "base64 0.13.1", + "cookie 0.14.4", + "futures-lite 1.13.0", + "infer", + "pin-project-lite", + "rand 0.7.3", + "serde", + "serde_json", + "serde_qs", + "serde_urlencoded", + "url", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2 0.4.12", + "http 1.3.1", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "hyper", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-more" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" + +[[package]] +name = "indexmap" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "infer" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jiff" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +dependencies = [ + "jiff-static", + "jiff-tzdb-platform", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", + "windows-sys 0.59.0", +] + +[[package]] +name = "jiff-static" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1283705eb0a21404d2bfd6eef2a7593d240bc42a0bdb39db0ad6fa2ec026524" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" +dependencies = [ + "jiff-tzdb", +] + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "language-tags" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "local-channel" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" +dependencies = [ + "futures-core", + "futures-sink", + "local-waker", +] + +[[package]] +name = "local-waker" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +dependencies = [ + "value-bag", +] + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "log", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.61.2", +] + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand 2.3.0", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "poem" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f977080932c87287147dca052951c3e2696f8759863f6b4e4c0c9ffe7a4cc8b" +dependencies = [ + "base64 0.22.1", + "bytes", + "chrono", + "cookie 0.18.1", + "futures-util", + "headers", + "http 1.3.1", + "http-body-util", + "hyper", + "hyper-util", + "mime", + "nix", + "parking_lot", + "percent-encoding", + "pin-project-lite", + "poem-derive", + "priority-queue", + "rand 0.9.2", + "regex", + "rfc7239", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "sync_wrapper", + "thiserror 2.0.17", + "time 0.3.44", + "tokio", + "tokio-util", + "tracing", + "wildmatch", +] + +[[package]] +name = "poem-derive" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "056e2fea6de1cb240ffe23cfc4fc370b629f8be83b5f27e16b7acd5231a72de4" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "polyval" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" +dependencies = [ + "cpuid-bool", + "opaque-debug", + "universal-hash 0.4.0", +] + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash 0.5.1", +] + +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "priority-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5676d703dda103cbb035b653a9f11448c0a7216c7926bd35fcb5865475d0c970" +dependencies = [ + "autocfg", + "equivalent", + "indexmap", +] + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-lite" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "rfc7239" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a82f1d1e38e9a85bb58ffcfadf22ed6f2c94e8cd8581ec2b0f80a2a6858350f" +dependencies = [ + "uncased", +] + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_qs" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" +dependencies = [ + "percent-encoding", + "serde", + "thiserror 1.0.69", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha1_smol" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "standback" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" +dependencies = [ + "version_check", +] + +[[package]] +name = "stdweb" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +dependencies = [ + "discard", + "rustc_version", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1 0.6.1", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "actix-web", + "biscotti", + "cookie 0.18.1", + "http-types", + "poem", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl 2.0.17", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "time" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" +dependencies = [ + "const_fn", + "libc", + "standback", + "stdweb", + "time-macros 0.1.1", + "version_check", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros 0.2.24", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" +dependencies = [ + "proc-macro-hack", + "time-macros-impl", +] + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "time-macros-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "standback", + "syn 1.0.109", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.6.1", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "tokio-util" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "uncased" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "universal-hash" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] [[package]] -name = "portable-atomic-util" -version = "0.2.4" +name = "url" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ - "portable-atomic", + "form_urlencoded", + "idna", + "percent-encoding", + "serde", ] [[package]] -name = "powerfmt" -version = "0.2.0" +name = "utf8_iter" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] -name = "ppv-lite86" -version = "0.2.21" +name = "value-bag" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" [[package]] -name = "proc-macro2" -version = "1.0.95" +name = "version_check" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" -dependencies = [ - "unicode-ident", -] +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] -name = "quote" -version = "1.0.40" +name = "waker-fn" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" -dependencies = [ - "proc-macro2", -] +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" [[package]] -name = "r-efi" -version = "5.3.0" +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] -name = "rand" -version = "0.8.5" +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "rand" -version = "0.9.2" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.3", + "wit-bindgen", ] [[package]] -name = "rand_chacha" -version = "0.3.1" +name = "wasm-bindgen" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] -name = "rand_chacha" -version = "0.9.0" +name = "wasm-bindgen-futures" +version = "0.4.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" dependencies = [ - "ppv-lite86", - "rand_core 0.9.3", + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "wasm-bindgen-macro" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" dependencies = [ - "getrandom 0.2.16", + "quote", + "wasm-bindgen-macro-support", ] [[package]] -name = "rand_core" -version = "0.9.3" +name = "wasm-bindgen-macro-support" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" dependencies = [ - "getrandom 0.3.3", + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.108", + "wasm-bindgen-shared", ] [[package]] -name = "serde" -version = "1.0.219" +name = "wasm-bindgen-shared" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" dependencies = [ - "serde_derive", + "unicode-ident", ] [[package]] -name = "serde_derive" -version = "1.0.219" +name = "web-sys" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" dependencies = [ - "proc-macro2", - "quote", - "syn", + "js-sys", + "wasm-bindgen", ] [[package]] -name = "sha2" -version = "0.10.9" +name = "wildmatch" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "39b7d07a236abaef6607536ccfaf19b396dbe3f5110ddb73d39f4562902ed382" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [ - "cfg-if", - "cpufeatures", - "digest", + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", ] [[package]] -name = "subtle" -version = "2.6.1" +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] -name = "syn" -version = "2.0.103" +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "test" -version = "0.0.1" +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "biscotti", - "cookie", + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] -name = "time" -version = "0.3.43" +name = "windows-implement" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ - "deranged", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] -name = "time-core" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" - -[[package]] -name = "time-macros" -version = "0.2.24" +name = "windows-interface" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ - "num-conv", - "time-core", + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] -name = "typenum" -version = "1.18.0" +name = "windows-link" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] -name = "unicode-ident" -version = "1.0.18" +name = "windows-result" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] [[package]] -name = "universal-hash" +name = "windows-strings" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "crypto-common", - "subtle", + "windows-link", ] [[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" +name = "windows-sys" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] [[package]] -name = "wasi" -version = "0.14.5+wasi-0.2.4" +name = "windows-sys" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4494f6290a82f5fe584817a676a34b9d6763e8d9d18204009fb31dceca98fd4" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "wasip2", + "windows-targets 0.52.6", ] [[package]] -name = "wasip2" -version = "1.0.0+wasi-0.2.4" +name = "windows-sys" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa2761397e5bd52002cd7e73110c71af2109aca4e521a9f40473fe685b0a24" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "wit-bindgen", + "windows-targets 0.53.5", ] [[package]] name = "windows-sys" -version = "0.59.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-targets", + "windows-link", ] [[package]] @@ -593,14 +2965,31 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -609,76 +2998,244 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + [[package]] name = "wit-bindgen" -version = "0.45.1" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", + "synstructure", +] [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.108", + "synstructure", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected b/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected index 959648d37ed1..220ba8ee62cd 100644 --- a/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected +++ b/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected @@ -52,3 +52,28 @@ | main.rs:180:29:180:66 | ...::build(...) | secure | true | | main.rs:186:9:186:22 | [SSA] secure_cookie2 | secure | true | | main.rs:186:9:186:22 | secure_cookie2 | secure | true | +| main.rs:197:5:197:39 | ...::build(...) | secure | false | +| main.rs:198:5:198:39 | ...::build(...) | secure | false | +| main.rs:201:5:201:11 | [SSA] cookie1 | secure | false | +| main.rs:201:5:201:11 | cookie1 | secure | false | +| main.rs:205:5:205:39 | ...::build(...) | secure | true | +| main.rs:208:5:208:11 | [SSA] cookie2 | secure | true | +| main.rs:208:5:208:11 | cookie2 | secure | true | +| main.rs:218:5:218:11 | [SSA] cookie2 | secure | false | +| main.rs:218:5:218:11 | cookie2 | secure | false | +| main.rs:228:5:228:11 | [SSA] cookie1 | secure | false | +| main.rs:228:5:228:11 | cookie1 | secure | false | +| main.rs:233:5:233:11 | [SSA] cookie2 | secure | true | +| main.rs:233:5:233:11 | cookie2 | secure | true | +| main.rs:241:29:241:62 | ...::new(...) | secure | false | +| main.rs:244:30:244:63 | ...::new(...) | secure | false | +| main.rs:247:30:247:63 | ...::new(...) | secure | true | +| main.rs:259:5:259:43 | ...::build(...) | secure | false | +| main.rs:260:5:260:43 | ...::build(...) | secure | false | +| main.rs:263:5:263:11 | [SSA] cookie1 | secure | false | +| main.rs:263:5:263:11 | cookie1 | secure | false | +| main.rs:267:5:267:43 | ...::build(...) | secure | true | +| main.rs:270:5:270:11 | [SSA] cookie2 | secure | true | +| main.rs:270:5:270:11 | cookie2 | secure | true | +| main.rs:280:5:280:11 | [SSA] cookie2 | secure | false | +| main.rs:280:5:280:11 | cookie2 | secure | false | diff --git a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected index e514828c3a0c..e3a4998b532b 100644 --- a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected +++ b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected @@ -1,48 +1,26 @@ #select -| main.rs:8:66:8:70 | build | main.rs:8:19:8:31 | ...::build | main.rs:8:66:8:70 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:8:66:8:70 | build | main.rs:8:19:8:50 | ...::build(...) | main.rs:8:66:8:70 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:16:52:16:56 | build | main.rs:16:19:16:31 | ...::build | main.rs:16:52:16:56 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:20:56:20:60 | build | main.rs:20:5:20:17 | ...::build | main.rs:20:56:20:60 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:20:56:20:60 | build | main.rs:20:5:20:36 | ...::build(...) | main.rs:20:56:20:60 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:21:57:21:61 | build | main.rs:21:5:21:17 | ...::build | main.rs:21:57:21:61 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:21:57:21:61 | build | main.rs:21:5:21:36 | ...::build(...) | main.rs:21:57:21:61 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:25:54:25:58 | build | main.rs:25:5:25:17 | ...::build | main.rs:25:54:25:58 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:25:54:25:58 | build | main.rs:25:5:25:36 | ...::build(...) | main.rs:25:54:25:58 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:26:52:26:56 | build | main.rs:26:5:26:17 | ...::build | main.rs:26:52:26:56 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:26:52:26:56 | build | main.rs:26:5:26:36 | ...::build(...) | main.rs:26:52:26:56 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:27:53:27:57 | build | main.rs:27:5:27:17 | ...::build | main.rs:27:53:27:57 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:27:53:27:57 | build | main.rs:27:5:27:36 | ...::build(...) | main.rs:27:53:27:57 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:28:62:28:66 | build | main.rs:28:5:28:17 | ...::build | main.rs:28:62:28:66 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:28:62:28:66 | build | main.rs:28:5:28:36 | ...::build(...) | main.rs:28:62:28:66 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:29:62:29:66 | build | main.rs:29:5:29:17 | ...::build | main.rs:29:62:29:66 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:29:62:29:66 | build | main.rs:29:5:29:36 | ...::build(...) | main.rs:29:62:29:66 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:33:60:33:64 | build | main.rs:33:9:33:21 | ...::build | main.rs:33:60:33:64 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:33:60:33:64 | build | main.rs:33:9:33:40 | ...::build(...) | main.rs:33:60:33:64 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:35:60:35:64 | build | main.rs:35:9:35:21 | ...::build | main.rs:35:60:35:64 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:35:60:35:64 | build | main.rs:35:9:35:40 | ...::build(...) | main.rs:35:60:35:64 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:39:55:39:59 | build | main.rs:39:5:39:22 | ...::new | main.rs:39:55:39:59 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:39:55:39:59 | build | main.rs:39:5:39:39 | ...::new(...) | main.rs:39:55:39:59 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:40:66:40:70 | build | main.rs:40:5:40:17 | ...::build | main.rs:40:66:40:70 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:40:66:40:70 | build | main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:66:40:70 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:41:95:41:99 | build | main.rs:41:5:41:17 | ...::build | main.rs:41:95:41:99 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:41:95:41:99 | build | main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:95:41:99 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:42:74:42:78 | build | main.rs:42:5:42:17 | ...::build | main.rs:42:74:42:78 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:42:74:42:78 | build | main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:74:42:78 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:43:62:43:66 | build | main.rs:43:5:43:17 | ...::build | main.rs:43:62:43:66 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:43:62:43:66 | build | main.rs:43:5:43:46 | ... .path(...) | main.rs:43:62:43:66 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:44:68:44:72 | build | main.rs:44:5:44:17 | ...::build | main.rs:44:68:44:72 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:44:68:44:72 | build | main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:68:44:72 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:45:88:45:92 | build | main.rs:45:5:45:17 | ...::build | main.rs:45:88:45:92 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:45:88:45:92 | build | main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:88:45:92 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:46:64:46:68 | build | main.rs:46:5:46:17 | ...::build | main.rs:46:64:46:68 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:46:64:46:68 | build | main.rs:46:5:46:48 | ... .permanent() | main.rs:46:64:46:68 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:47:62:47:66 | build | main.rs:47:5:47:17 | ...::build | main.rs:47:62:47:66 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:47:62:47:66 | build | main.rs:47:5:47:46 | ... .removal() | main.rs:47:62:47:66 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:48:52:48:57 | finish | main.rs:48:5:48:17 | ...::build | main.rs:48:52:48:57 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:48:52:48:57 | finish | main.rs:48:5:48:36 | ...::build(...) | main.rs:48:52:48:57 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:49:41:49:45 | build | main.rs:49:5:49:17 | ...::build | main.rs:49:41:49:45 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:49:41:49:45 | build | main.rs:49:5:49:25 | ...::build(...) | main.rs:49:41:49:45 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:50:56:50:60 | build | main.rs:50:5:50:17 | ...::build | main.rs:50:56:50:60 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:50:56:50:60 | build | main.rs:50:5:50:40 | ...::build(...) | main.rs:50:56:50:60 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:53:65:53:69 | build | main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:65:53:69 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:59:9:59:11 | add | main.rs:58:17:58:27 | ...::new | main.rs:59:9:59:11 | add | Cookie attribute 'Secure' is not set to true. | @@ -52,7 +30,6 @@ | main.rs:69:16:69:18 | add | main.rs:68:17:68:29 | ...::named | main.rs:69:16:69:18 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:70:16:70:27 | add_original | main.rs:63:5:63:5 | [SSA] a | main.rs:70:16:70:27 | add_original | Cookie attribute 'Secure' is not set to true. | | main.rs:70:16:70:27 | add_original | main.rs:63:5:63:5 | a | main.rs:70:16:70:27 | add_original | Cookie attribute 'Secure' is not set to true. | -| main.rs:72:16:72:18 | add | main.rs:68:17:68:29 | ...::named | main.rs:72:16:72:18 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:72:16:72:18 | add | main.rs:71:5:71:5 | [SSA] b | main.rs:72:16:72:18 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:72:16:72:18 | add | main.rs:71:5:71:5 | b | main.rs:72:16:72:18 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:78:17:78:19 | add | main.rs:77:17:77:28 | ...::from | main.rs:78:17:78:19 | add | Cookie attribute 'Secure' is not set to true. | @@ -78,242 +55,298 @@ | main.rs:166:13:166:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:166:13:166:18 | insert | Cookie attribute 'Secure' is not set to true. | | main.rs:167:13:167:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:167:13:167:18 | insert | Cookie attribute 'Secure' is not set to true. | | main.rs:173:61:173:65 | build | main.rs:173:22:173:34 | ...::build | main.rs:173:61:173:65 | build | Cookie attribute 'Secure' is not set to true. | +| main.rs:197:55:197:60 | finish | main.rs:197:5:197:39 | ...::build(...) | main.rs:197:55:197:60 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:198:65:198:70 | finish | main.rs:198:5:198:39 | ...::build(...) | main.rs:198:65:198:70 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:202:9:202:11 | add | main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:202:9:202:11 | add | main.rs:201:5:201:11 | cookie1 | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:212:41:212:46 | finish | main.rs:212:5:212:22 | ...::build | main.rs:212:41:212:46 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:215:9:215:11 | add | main.rs:214:19:214:34 | ...::new | main.rs:215:9:215:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:219:9:219:11 | add | main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:9:219:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:219:9:219:11 | add | main.rs:218:5:218:11 | cookie2 | main.rs:219:9:219:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:229:9:229:11 | add | main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:9:229:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:229:9:229:11 | add | main.rs:228:5:228:11 | cookie1 | main.rs:229:9:229:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:242:9:242:41 | ...::new | main.rs:241:29:241:62 | ...::new(...) | main.rs:242:9:242:41 | ...::new | Cookie attribute 'Secure' is not set to true. | +| main.rs:245:9:245:41 | ...::new | main.rs:244:30:244:63 | ...::new(...) | main.rs:245:9:245:41 | ...::new | Cookie attribute 'Secure' is not set to true. | +| main.rs:259:59:259:64 | finish | main.rs:259:5:259:43 | ...::build(...) | main.rs:259:59:259:64 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:260:69:260:74 | finish | main.rs:260:5:260:43 | ...::build(...) | main.rs:260:69:260:74 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:264:9:264:11 | add | main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:264:9:264:11 | add | main.rs:263:5:263:11 | cookie1 | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:274:45:274:50 | finish | main.rs:274:5:274:26 | ...::build | main.rs:274:45:274:50 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:277:9:277:11 | add | main.rs:276:19:276:38 | ...::new | main.rs:277:9:277:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | edges -| main.rs:8:19:8:31 | ...::build | main.rs:8:19:8:50 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:41 | +| main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:35 | | main.rs:8:19:8:64 | ... .secure(...) | main.rs:8:66:8:70 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:16:19:16:31 | ...::build | main.rs:16:19:16:50 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:16:19:16:31 | ...::build | main.rs:16:19:16:50 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:16:19:16:50 | ...::build(...) | main.rs:16:52:16:56 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:20:5:20:17 | ...::build | main.rs:20:5:20:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:20:5:20:36 | ...::build(...) | main.rs:20:5:20:54 | ... .secure(...) | provenance | MaD:41 | +| main.rs:20:5:20:36 | ...::build(...) | main.rs:20:5:20:54 | ... .secure(...) | provenance | MaD:35 | | main.rs:20:5:20:54 | ... .secure(...) | main.rs:20:56:20:60 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:21:5:21:17 | ...::build | main.rs:21:5:21:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:21:5:21:36 | ...::build(...) | main.rs:21:5:21:55 | ... .secure(...) | provenance | MaD:41 | +| main.rs:21:5:21:36 | ...::build(...) | main.rs:21:5:21:55 | ... .secure(...) | provenance | MaD:35 | | main.rs:21:5:21:55 | ... .secure(...) | main.rs:21:57:21:61 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:25:5:25:17 | ...::build | main.rs:25:5:25:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:25:5:25:36 | ...::build(...) | main.rs:25:5:25:52 | ... .secure(...) | provenance | MaD:41 | +| main.rs:25:5:25:36 | ...::build(...) | main.rs:25:5:25:52 | ... .secure(...) | provenance | MaD:35 | | main.rs:25:5:25:52 | ... .secure(...) | main.rs:25:54:25:58 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:26:5:26:17 | ...::build | main.rs:26:5:26:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:26:5:26:36 | ...::build(...) | main.rs:26:5:26:50 | ... .secure(...) | provenance | MaD:41 | +| main.rs:26:5:26:36 | ...::build(...) | main.rs:26:5:26:50 | ... .secure(...) | provenance | MaD:35 | | main.rs:26:5:26:50 | ... .secure(...) | main.rs:26:52:26:56 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:27:5:27:17 | ...::build | main.rs:27:5:27:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:27:5:27:36 | ...::build(...) | main.rs:27:5:27:51 | ... .secure(...) | provenance | MaD:41 | +| main.rs:27:5:27:36 | ...::build(...) | main.rs:27:5:27:51 | ... .secure(...) | provenance | MaD:35 | | main.rs:27:5:27:51 | ... .secure(...) | main.rs:27:53:27:57 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:28:5:28:17 | ...::build | main.rs:28:5:28:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:28:5:28:36 | ...::build(...) | main.rs:28:5:28:60 | ... .secure(...) | provenance | MaD:41 | +| main.rs:28:5:28:36 | ...::build(...) | main.rs:28:5:28:60 | ... .secure(...) | provenance | MaD:35 | | main.rs:28:5:28:60 | ... .secure(...) | main.rs:28:62:28:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:29:5:29:17 | ...::build | main.rs:29:5:29:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:29:5:29:36 | ...::build(...) | main.rs:29:5:29:60 | ... .secure(...) | provenance | MaD:41 | +| main.rs:29:5:29:36 | ...::build(...) | main.rs:29:5:29:60 | ... .secure(...) | provenance | MaD:35 | | main.rs:29:5:29:60 | ... .secure(...) | main.rs:29:62:29:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:33:9:33:21 | ...::build | main.rs:33:9:33:40 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:33:9:33:40 | ...::build(...) | main.rs:33:9:33:58 | ... .secure(...) | provenance | MaD:41 | +| main.rs:33:9:33:40 | ...::build(...) | main.rs:33:9:33:58 | ... .secure(...) | provenance | MaD:35 | | main.rs:33:9:33:58 | ... .secure(...) | main.rs:33:60:33:64 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:35:9:35:21 | ...::build | main.rs:35:9:35:40 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:35:9:35:40 | ...::build(...) | main.rs:35:9:35:58 | ... .secure(...) | provenance | MaD:41 | +| main.rs:35:9:35:40 | ...::build(...) | main.rs:35:9:35:58 | ... .secure(...) | provenance | MaD:35 | | main.rs:35:9:35:58 | ... .secure(...) | main.rs:35:60:35:64 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:39:5:39:22 | ...::new | main.rs:39:5:39:39 | ...::new(...) | provenance | Src:MaD:16 MaD:16 | -| main.rs:39:5:39:39 | ...::new(...) | main.rs:39:5:39:53 | ... .secure(...) | provenance | MaD:41 | +| main.rs:39:5:39:39 | ...::new(...) | main.rs:39:5:39:53 | ... .secure(...) | provenance | MaD:35 | | main.rs:39:5:39:53 | ... .secure(...) | main.rs:39:55:39:59 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:40:5:40:17 | ...::build | main.rs:40:5:40:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:40:5:40:36 | ...::build(...) | main.rs:40:5:40:50 | ... .expires(...) | provenance | MaD:33 | -| main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:5:40:64 | ... .secure(...) | provenance | MaD:41 | +| main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:5:40:64 | ... .secure(...) | provenance | MaD:35 | | main.rs:40:5:40:64 | ... .secure(...) | main.rs:40:66:40:70 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:41:5:41:17 | ...::build | main.rs:41:5:41:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:41:5:41:36 | ...::build(...) | main.rs:41:5:41:79 | ... .max_age(...) | provenance | MaD:35 | -| main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:5:41:93 | ... .secure(...) | provenance | MaD:41 | +| main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:5:41:93 | ... .secure(...) | provenance | MaD:35 | | main.rs:41:5:41:93 | ... .secure(...) | main.rs:41:95:41:99 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:42:5:42:17 | ...::build | main.rs:42:5:42:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:42:5:42:36 | ...::build(...) | main.rs:42:5:42:58 | ... .domain(...) | provenance | MaD:32 | -| main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:5:42:72 | ... .secure(...) | provenance | MaD:41 | +| main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:5:42:72 | ... .secure(...) | provenance | MaD:35 | | main.rs:42:5:42:72 | ... .secure(...) | main.rs:42:74:42:78 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:43:5:43:17 | ...::build | main.rs:43:5:43:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:43:5:43:36 | ...::build(...) | main.rs:43:5:43:46 | ... .path(...) | provenance | MaD:37 | -| main.rs:43:5:43:46 | ... .path(...) | main.rs:43:5:43:60 | ... .secure(...) | provenance | MaD:41 | +| main.rs:43:5:43:46 | ... .path(...) | main.rs:43:5:43:60 | ... .secure(...) | provenance | MaD:35 | | main.rs:43:5:43:60 | ... .secure(...) | main.rs:43:62:43:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:44:5:44:17 | ...::build | main.rs:44:5:44:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:44:5:44:36 | ...::build(...) | main.rs:44:5:44:52 | ... .http_only(...) | provenance | MaD:34 | -| main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:5:44:66 | ... .secure(...) | provenance | MaD:41 | +| main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:5:44:66 | ... .secure(...) | provenance | MaD:35 | | main.rs:44:5:44:66 | ... .secure(...) | main.rs:44:68:44:72 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:45:5:45:17 | ...::build | main.rs:45:5:45:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:45:5:45:36 | ...::build(...) | main.rs:45:5:45:72 | ... .same_site(...) | provenance | MaD:40 | -| main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:5:45:86 | ... .secure(...) | provenance | MaD:41 | +| main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:5:45:86 | ... .secure(...) | provenance | MaD:35 | | main.rs:45:5:45:86 | ... .secure(...) | main.rs:45:88:45:92 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:46:5:46:17 | ...::build | main.rs:46:5:46:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:46:5:46:36 | ...::build(...) | main.rs:46:5:46:48 | ... .permanent() | provenance | MaD:38 | -| main.rs:46:5:46:48 | ... .permanent() | main.rs:46:5:46:62 | ... .secure(...) | provenance | MaD:41 | +| main.rs:46:5:46:48 | ... .permanent() | main.rs:46:5:46:62 | ... .secure(...) | provenance | MaD:35 | | main.rs:46:5:46:62 | ... .secure(...) | main.rs:46:64:46:68 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:47:5:47:17 | ...::build | main.rs:47:5:47:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:47:5:47:36 | ...::build(...) | main.rs:47:5:47:46 | ... .removal() | provenance | MaD:39 | -| main.rs:47:5:47:46 | ... .removal() | main.rs:47:5:47:60 | ... .secure(...) | provenance | MaD:41 | +| main.rs:47:5:47:46 | ... .removal() | main.rs:47:5:47:60 | ... .secure(...) | provenance | MaD:35 | | main.rs:47:5:47:60 | ... .secure(...) | main.rs:47:62:47:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:48:5:48:17 | ...::build | main.rs:48:5:48:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:48:5:48:36 | ...::build(...) | main.rs:48:5:48:50 | ... .secure(...) | provenance | MaD:41 | +| main.rs:48:5:48:36 | ...::build(...) | main.rs:48:5:48:50 | ... .secure(...) | provenance | MaD:35 | | main.rs:48:5:48:50 | ... .secure(...) | main.rs:48:52:48:57 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:49:5:49:17 | ...::build | main.rs:49:5:49:25 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:49:5:49:25 | ...::build(...) | main.rs:49:5:49:39 | ... .secure(...) | provenance | MaD:41 | +| main.rs:49:5:49:25 | ...::build(...) | main.rs:49:5:49:39 | ... .secure(...) | provenance | MaD:35 | | main.rs:49:5:49:39 | ... .secure(...) | main.rs:49:41:49:45 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:50:5:50:17 | ...::build | main.rs:50:5:50:40 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:50:5:50:40 | ...::build(...) | main.rs:50:5:50:54 | ... .secure(...) | provenance | MaD:41 | +| main.rs:50:5:50:40 | ...::build(...) | main.rs:50:5:50:54 | ... .secure(...) | provenance | MaD:35 | | main.rs:50:5:50:54 | ... .secure(...) | main.rs:50:56:50:60 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | MaD:41 | +| main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | MaD:35 | | main.rs:53:5:53:63 | ... .secure(...) | main.rs:53:65:53:69 | build | provenance | MaD:2 Sink:MaD:2 | | main.rs:58:9:58:13 | mut a | main.rs:59:13:59:13 | a | provenance | | -| main.rs:58:9:58:13 | mut a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:17 | +| main.rs:58:9:58:13 | mut a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:18 | | main.rs:58:9:58:13 | mut a | main.rs:60:22:60:22 | a | provenance | | -| main.rs:58:9:58:13 | mut a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:17 | -| main.rs:58:17:58:27 | ...::new | main.rs:58:17:58:44 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:58:9:58:13 | mut a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:18 | +| main.rs:58:17:58:27 | ...::new | main.rs:58:17:58:44 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | | main.rs:58:17:58:44 | ...::new(...) | main.rs:58:9:58:13 | mut a | provenance | | -| main.rs:59:13:59:13 | a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:17 | +| main.rs:59:13:59:13 | a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:18 | | main.rs:59:13:59:21 | a.clone() | main.rs:59:9:59:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:60:22:60:22 | a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:17 | +| main.rs:60:22:60:22 | a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:18 | | main.rs:60:22:60:30 | a.clone() | main.rs:60:9:60:20 | add_original | provenance | MaD:5 Sink:MaD:5 | | main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:13 | a | provenance | | -| main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:17 | +| main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:18 | | main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:29 | a | provenance | | -| main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:17 | +| main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:18 | | main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:30 | a | provenance | | -| main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:17 | +| main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:18 | | main.rs:63:5:63:5 | a | main.rs:64:13:64:13 | a | provenance | | -| main.rs:63:5:63:5 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:17 | +| main.rs:63:5:63:5 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:18 | | main.rs:63:5:63:5 | a | main.rs:70:29:70:29 | a | provenance | | -| main.rs:63:5:63:5 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:17 | +| main.rs:63:5:63:5 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:18 | | main.rs:63:5:63:5 | a | main.rs:79:30:79:30 | a | provenance | | -| main.rs:63:5:63:5 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:17 | -| main.rs:64:13:64:13 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:17 | +| main.rs:63:5:63:5 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:18 | +| main.rs:64:13:64:13 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:18 | | main.rs:64:13:64:21 | a.clone() | main.rs:64:9:64:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:68:9:68:13 | mut b | main.rs:69:20:69:20 | b | provenance | | -| main.rs:68:9:68:13 | mut b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:17 | -| main.rs:68:9:68:13 | mut b | main.rs:72:20:72:20 | b | provenance | | -| main.rs:68:9:68:13 | mut b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:17 | -| main.rs:68:17:68:29 | ...::named | main.rs:68:17:68:37 | ...::named(...) | provenance | Src:MaD:14 MaD:14 | +| main.rs:68:9:68:13 | mut b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:18 | +| main.rs:68:17:68:29 | ...::named | main.rs:68:17:68:37 | ...::named(...) | provenance | Src:MaD:16 MaD:16 | | main.rs:68:17:68:37 | ...::named(...) | main.rs:68:9:68:13 | mut b | provenance | | -| main.rs:69:20:69:20 | b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:17 | +| main.rs:69:20:69:20 | b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:18 | | main.rs:69:20:69:28 | b.clone() | main.rs:69:16:69:18 | add | provenance | MaD:8 Sink:MaD:8 | -| main.rs:70:29:70:29 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:17 | +| main.rs:70:29:70:29 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:18 | | main.rs:70:29:70:37 | a.clone() | main.rs:70:16:70:27 | add_original | provenance | MaD:9 Sink:MaD:9 | | main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:20 | b | provenance | | -| main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:17 | +| main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:18 | | main.rs:71:5:71:5 | b | main.rs:72:20:72:20 | b | provenance | | -| main.rs:71:5:71:5 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:17 | -| main.rs:72:20:72:20 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:17 | +| main.rs:71:5:71:5 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:18 | +| main.rs:72:20:72:20 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:18 | | main.rs:72:20:72:28 | b.clone() | main.rs:72:16:72:18 | add | provenance | MaD:8 Sink:MaD:8 | | main.rs:77:9:77:13 | mut c | main.rs:78:21:78:21 | c | provenance | | -| main.rs:77:9:77:13 | mut c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:17 | +| main.rs:77:9:77:13 | mut c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:18 | | main.rs:77:9:77:13 | mut c | main.rs:83:21:83:21 | c | provenance | | -| main.rs:77:9:77:13 | mut c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:17 | -| main.rs:77:17:77:28 | ...::from | main.rs:77:17:77:36 | ...::from(...) | provenance | Src:MaD:12 MaD:12 | +| main.rs:77:9:77:13 | mut c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:18 | +| main.rs:77:17:77:28 | ...::from | main.rs:77:17:77:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 | | main.rs:77:17:77:36 | ...::from(...) | main.rs:77:9:77:13 | mut c | provenance | | -| main.rs:78:21:78:21 | c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:17 | +| main.rs:78:21:78:21 | c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:18 | | main.rs:78:21:78:29 | c.clone() | main.rs:78:17:78:19 | add | provenance | MaD:6 Sink:MaD:6 | -| main.rs:79:30:79:30 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:17 | +| main.rs:79:30:79:30 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:18 | | main.rs:79:30:79:38 | a.clone() | main.rs:79:17:79:28 | add_original | provenance | MaD:7 Sink:MaD:7 | -| main.rs:83:21:83:21 | c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:17 | +| main.rs:83:21:83:21 | c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:18 | | main.rs:83:21:83:29 | c.clone() | main.rs:83:17:83:19 | add | provenance | MaD:6 Sink:MaD:6 | | main.rs:87:9:87:13 | mut d | main.rs:88:13:88:13 | d | provenance | | -| main.rs:87:9:87:13 | mut d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:17 | +| main.rs:87:9:87:13 | mut d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:18 | | main.rs:87:9:87:13 | mut d | main.rs:94:13:94:13 | d | provenance | | -| main.rs:87:9:87:13 | mut d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:17 | -| main.rs:87:17:87:28 | ...::from | main.rs:87:17:87:36 | ...::from(...) | provenance | Src:MaD:12 MaD:12 | +| main.rs:87:9:87:13 | mut d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:18 | +| main.rs:87:17:87:28 | ...::from | main.rs:87:17:87:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 | | main.rs:87:17:87:36 | ...::from(...) | main.rs:87:9:87:13 | mut d | provenance | | -| main.rs:88:13:88:13 | d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:17 | +| main.rs:88:13:88:13 | d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:18 | | main.rs:88:13:88:21 | d.clone() | main.rs:88:9:88:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:94:13:94:13 | d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:17 | +| main.rs:94:13:94:13 | d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:18 | | main.rs:94:13:94:21 | d.clone() | main.rs:94:9:94:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:114:5:114:17 | ...::build | main.rs:114:5:114:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | MaD:36 | +| main.rs:114:5:114:17 | ...::build | main.rs:114:5:114:36 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | MaD:33 | | main.rs:114:5:114:54 | ... .partitioned(...) | main.rs:114:56:114:60 | build | provenance | MaD:2 Sink:MaD:2 | | main.rs:122:9:122:9 | a | main.rs:123:20:123:20 | a | provenance | | -| main.rs:122:9:122:9 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:17 | -| main.rs:122:13:122:41 | ...::new | main.rs:122:13:122:58 | ...::new(...) | provenance | Src:MaD:11 MaD:11 | +| main.rs:122:9:122:9 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:18 | +| main.rs:122:13:122:41 | ...::new | main.rs:122:13:122:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:122:13:122:58 | ...::new(...) | main.rs:122:9:122:9 | a | provenance | | -| main.rs:123:20:123:20 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:17 | +| main.rs:123:20:123:20 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:18 | | main.rs:123:20:123:28 | a.clone() | main.rs:123:13:123:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:130:9:130:9 | c | main.rs:131:20:131:20 | c | provenance | | -| main.rs:130:9:130:9 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:17 | -| main.rs:130:9:130:9 | c | main.rs:134:13:134:35 | c.set_partitioned(...) | provenance | MaD:24 | -| main.rs:130:13:130:13 | b | main.rs:130:13:130:31 | b.set_secure(...) | provenance | MaD:27 | +| main.rs:130:9:130:9 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:18 | +| main.rs:130:9:130:9 | c | main.rs:134:13:134:35 | c.set_partitioned(...) | provenance | MaD:25 | +| main.rs:130:13:130:13 | b | main.rs:130:13:130:31 | b.set_secure(...) | provenance | MaD:28 | | main.rs:130:13:130:31 | b.set_secure(...) | main.rs:130:9:130:9 | c | provenance | | -| main.rs:131:20:131:20 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:17 | +| main.rs:131:20:131:20 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:18 | | main.rs:131:20:131:28 | c.clone() | main.rs:131:13:131:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:134:9:134:9 | d | main.rs:135:20:135:20 | d | provenance | | -| main.rs:134:9:134:9 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:17 | +| main.rs:134:9:134:9 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:18 | | main.rs:134:13:134:35 | c.set_partitioned(...) | main.rs:134:9:134:9 | d | provenance | | -| main.rs:135:20:135:20 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:17 | +| main.rs:135:20:135:20 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:18 | | main.rs:135:20:135:28 | d.clone() | main.rs:135:13:135:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:146:9:146:9 | g | main.rs:147:20:147:20 | g | provenance | | -| main.rs:146:9:146:9 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:17 | -| main.rs:146:13:146:13 | f | main.rs:146:13:146:31 | f.set_secure(...) | provenance | MaD:27 | +| main.rs:146:9:146:9 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:18 | +| main.rs:146:13:146:13 | f | main.rs:146:13:146:31 | f.set_secure(...) | provenance | MaD:28 | | main.rs:146:13:146:31 | f.set_secure(...) | main.rs:146:9:146:9 | g | provenance | | -| main.rs:147:20:147:20 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:17 | +| main.rs:147:20:147:20 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:18 | | main.rs:147:20:147:28 | g.clone() | main.rs:147:13:147:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:151:9:151:9 | h | main.rs:152:20:152:20 | h | provenance | | -| main.rs:151:13:151:42 | ...::from | main.rs:151:13:151:61 | ...::from(...) | provenance | Src:MaD:10 MaD:10 | +| main.rs:151:13:151:42 | ...::from | main.rs:151:13:151:61 | ...::from(...) | provenance | Src:MaD:12 MaD:12 | | main.rs:151:13:151:61 | ...::from(...) | main.rs:151:9:151:9 | h | provenance | | | main.rs:152:20:152:20 | h | main.rs:152:13:152:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:155:9:155:9 | i | main.rs:156:20:156:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:157:20:157:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:158:20:158:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:159:20:159:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:160:20:160:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:161:20:161:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:162:20:162:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:163:20:163:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:164:20:164:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:165:20:165:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:166:20:166:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:167:20:167:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:17 | -| main.rs:155:13:155:41 | ...::new | main.rs:155:13:155:58 | ...::new(...) | provenance | Src:MaD:11 MaD:11 | +| main.rs:155:9:155:9 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:18 | +| main.rs:155:13:155:41 | ...::new | main.rs:155:13:155:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:155:13:155:58 | ...::new(...) | main.rs:155:9:155:9 | i | provenance | | -| main.rs:156:20:156:20 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:17 | -| main.rs:156:20:156:28 | i.clone() | main.rs:156:20:156:46 | ... .set_name(...) | provenance | MaD:23 | +| main.rs:156:20:156:20 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:18 | +| main.rs:156:20:156:28 | i.clone() | main.rs:156:20:156:46 | ... .set_name(...) | provenance | MaD:24 | | main.rs:156:20:156:46 | ... .set_name(...) | main.rs:156:13:156:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:157:20:157:20 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:17 | -| main.rs:157:20:157:28 | i.clone() | main.rs:157:20:157:48 | ... .set_value(...) | provenance | MaD:28 | +| main.rs:157:20:157:20 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:18 | +| main.rs:157:20:157:28 | i.clone() | main.rs:157:20:157:48 | ... .set_value(...) | provenance | MaD:29 | | main.rs:157:20:157:48 | ... .set_value(...) | main.rs:157:13:157:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:158:20:158:20 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:17 | -| main.rs:158:20:158:28 | i.clone() | main.rs:158:20:158:48 | ... .set_http_only(...) | provenance | MaD:21 | +| main.rs:158:20:158:20 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:18 | +| main.rs:158:20:158:28 | i.clone() | main.rs:158:20:158:48 | ... .set_http_only(...) | provenance | MaD:22 | | main.rs:158:20:158:48 | ... .set_http_only(...) | main.rs:158:13:158:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:159:20:159:20 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:17 | -| main.rs:159:20:159:28 | i.clone() | main.rs:159:20:159:70 | ... .set_same_site(...) | provenance | MaD:26 | +| main.rs:159:20:159:20 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:18 | +| main.rs:159:20:159:28 | i.clone() | main.rs:159:20:159:70 | ... .set_same_site(...) | provenance | MaD:27 | | main.rs:159:20:159:70 | ... .set_same_site(...) | main.rs:159:13:159:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:160:20:160:20 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:17 | -| main.rs:160:20:160:28 | i.clone() | main.rs:160:20:160:46 | ... .set_max_age(...) | provenance | MaD:22 | +| main.rs:160:20:160:20 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:18 | +| main.rs:160:20:160:28 | i.clone() | main.rs:160:20:160:46 | ... .set_max_age(...) | provenance | MaD:23 | | main.rs:160:20:160:46 | ... .set_max_age(...) | main.rs:160:13:160:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:161:20:161:20 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:17 | -| main.rs:161:20:161:28 | i.clone() | main.rs:161:20:161:42 | ... .set_path(...) | provenance | MaD:25 | +| main.rs:161:20:161:20 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:18 | +| main.rs:161:20:161:28 | i.clone() | main.rs:161:20:161:42 | ... .set_path(...) | provenance | MaD:26 | | main.rs:161:20:161:42 | ... .set_path(...) | main.rs:161:13:161:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:162:20:162:20 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:17 | -| main.rs:162:20:162:28 | i.clone() | main.rs:162:20:162:41 | ... .unset_path() | provenance | MaD:31 | +| main.rs:162:20:162:20 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:18 | +| main.rs:162:20:162:28 | i.clone() | main.rs:162:20:162:41 | ... .unset_path() | provenance | MaD:32 | | main.rs:162:20:162:41 | ... .unset_path() | main.rs:162:13:162:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:163:20:163:20 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:17 | -| main.rs:163:20:163:28 | i.clone() | main.rs:163:20:163:54 | ... .set_domain(...) | provenance | MaD:19 | +| main.rs:163:20:163:20 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:18 | +| main.rs:163:20:163:28 | i.clone() | main.rs:163:20:163:54 | ... .set_domain(...) | provenance | MaD:20 | | main.rs:163:20:163:54 | ... .set_domain(...) | main.rs:163:13:163:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:164:20:164:20 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:17 | -| main.rs:164:20:164:28 | i.clone() | main.rs:164:20:164:43 | ... .unset_domain() | provenance | MaD:29 | +| main.rs:164:20:164:20 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:18 | +| main.rs:164:20:164:28 | i.clone() | main.rs:164:20:164:43 | ... .unset_domain() | provenance | MaD:30 | | main.rs:164:20:164:43 | ... .unset_domain() | main.rs:164:13:164:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:165:20:165:20 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:17 | -| main.rs:165:20:165:28 | i.clone() | main.rs:165:20:165:46 | ... .set_expires(...) | provenance | MaD:20 | +| main.rs:165:20:165:20 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:18 | +| main.rs:165:20:165:28 | i.clone() | main.rs:165:20:165:46 | ... .set_expires(...) | provenance | MaD:21 | | main.rs:165:20:165:46 | ... .set_expires(...) | main.rs:165:13:165:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:166:20:166:20 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:17 | -| main.rs:166:20:166:28 | i.clone() | main.rs:166:20:166:44 | ... .unset_expires() | provenance | MaD:30 | +| main.rs:166:20:166:20 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:18 | +| main.rs:166:20:166:28 | i.clone() | main.rs:166:20:166:44 | ... .unset_expires() | provenance | MaD:31 | | main.rs:166:20:166:44 | ... .unset_expires() | main.rs:166:13:166:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:167:20:167:20 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:17 | -| main.rs:167:20:167:28 | i.clone() | main.rs:167:20:167:45 | ... .make_permanent() | provenance | MaD:18 | +| main.rs:167:20:167:20 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:18 | +| main.rs:167:20:167:28 | i.clone() | main.rs:167:20:167:45 | ... .make_permanent() | provenance | MaD:19 | | main.rs:167:20:167:45 | ... .make_permanent() | main.rs:167:13:167:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:173:22:173:34 | ...::build | main.rs:173:22:173:59 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:173:22:173:34 | ...::build | main.rs:173:22:173:59 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:173:22:173:59 | ...::build(...) | main.rs:173:61:173:65 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:197:5:197:39 | ...::build(...) | main.rs:197:5:197:53 | ... .secure(...) | provenance | MaD:35 | +| main.rs:197:5:197:53 | ... .secure(...) | main.rs:197:55:197:60 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:198:5:198:39 | ...::build(...) | main.rs:198:5:198:53 | ... .secure(...) | provenance | MaD:35 | +| main.rs:198:5:198:53 | ... .secure(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | MaD:34 | +| main.rs:198:5:198:63 | ... .path(...) | main.rs:198:65:198:70 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | +| main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:18 | +| main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | +| main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:18 | +| main.rs:202:13:202:19 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:18 | +| main.rs:202:13:202:27 | cookie1.clone() | main.rs:202:9:202:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:212:5:212:22 | ...::build | main.rs:212:5:212:39 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:212:5:212:39 | ...::build(...) | main.rs:212:41:212:46 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:19 | cookie3 | provenance | | +| main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:18 | +| main.rs:214:19:214:34 | ...::new | main.rs:214:19:214:51 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | +| main.rs:214:19:214:51 | ...::new(...) | main.rs:214:9:214:15 | cookie3 | provenance | | +| main.rs:215:13:215:19 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:18 | +| main.rs:215:13:215:27 | cookie3.clone() | main.rs:215:9:215:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | +| main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:18 | +| main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | +| main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:18 | +| main.rs:219:13:219:19 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:18 | +| main.rs:219:13:219:27 | cookie2.clone() | main.rs:219:9:219:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | | +| main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:18 | +| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | | +| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | MaD:39 | +| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:39 | +| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:18 | +| main.rs:229:13:229:19 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:18 | +| main.rs:229:13:229:27 | cookie1.clone() | main.rs:229:9:229:11 | add | provenance | MaD:11 Sink:MaD:11 | +| main.rs:241:9:241:25 | cookie_config_bad | main.rs:242:43:242:59 | cookie_config_bad | provenance | | +| main.rs:241:29:241:62 | ...::new(...) | main.rs:241:29:241:76 | ... .secure(...) | provenance | MaD:38 | +| main.rs:241:29:241:76 | ... .secure(...) | main.rs:241:9:241:25 | cookie_config_bad | provenance | | +| main.rs:242:43:242:59 | cookie_config_bad | main.rs:242:9:242:41 | ...::new | provenance | MaD:10 Sink:MaD:10 | +| main.rs:244:9:244:26 | cookie_config_bad2 | main.rs:245:43:245:60 | cookie_config_bad2 | provenance | | +| main.rs:244:30:244:63 | ...::new(...) | main.rs:244:30:244:77 | ... .secure(...) | provenance | MaD:38 | +| main.rs:244:30:244:77 | ... .secure(...) | main.rs:244:30:244:90 | ... .name(...) | provenance | MaD:36 | +| main.rs:244:30:244:90 | ... .name(...) | main.rs:244:30:244:100 | ... .path(...) | provenance | MaD:37 | +| main.rs:244:30:244:100 | ... .path(...) | main.rs:244:9:244:26 | cookie_config_bad2 | provenance | | +| main.rs:245:43:245:60 | cookie_config_bad2 | main.rs:245:9:245:41 | ...::new | provenance | MaD:10 Sink:MaD:10 | +| main.rs:259:5:259:43 | ...::build(...) | main.rs:259:5:259:57 | ... .secure(...) | provenance | MaD:35 | +| main.rs:259:5:259:57 | ... .secure(...) | main.rs:259:59:259:64 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:260:5:260:43 | ...::build(...) | main.rs:260:5:260:57 | ... .secure(...) | provenance | MaD:35 | +| main.rs:260:5:260:57 | ... .secure(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | MaD:34 | +| main.rs:260:5:260:67 | ... .path(...) | main.rs:260:69:260:74 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | +| main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:18 | +| main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | +| main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:18 | +| main.rs:264:13:264:19 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:18 | +| main.rs:264:13:264:27 | cookie1.clone() | main.rs:264:9:264:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:274:5:274:26 | ...::build | main.rs:274:5:274:43 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:274:5:274:43 | ...::build(...) | main.rs:274:45:274:50 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:19 | cookie3 | provenance | | +| main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:18 | +| main.rs:276:19:276:38 | ...::new | main.rs:276:19:276:55 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | +| main.rs:276:19:276:55 | ...::new(...) | main.rs:276:9:276:15 | cookie3 | provenance | | +| main.rs:277:13:277:19 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:18 | +| main.rs:277:13:277:27 | cookie3.clone() | main.rs:277:9:277:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | +| main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:18 | +| main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | +| main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:18 | +| main.rs:281:13:281:19 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:18 | +| main.rs:281:13:281:27 | cookie2.clone() | main.rs:281:9:281:11 | add | provenance | MaD:4 Sink:MaD:4 | models | 1 | Sink: ::insert; Argument[0]; cookie-use | | 2 | Sink: ::build; Argument[self]; cookie-use | @@ -324,135 +357,103 @@ models | 7 | Sink: ::add_original; Argument[0]; cookie-use | | 8 | Sink: ::add; Argument[0]; cookie-use | | 9 | Sink: ::add_original; Argument[0]; cookie-use | -| 10 | Source: ::from; ReturnValue; cookie-create | -| 11 | Source: ::new; ReturnValue; cookie-create | -| 12 | Source: ::from; ReturnValue; cookie-create | -| 13 | Source: ::build; ReturnValue; cookie-create | -| 14 | Source: ::named; ReturnValue; cookie-create | -| 15 | Source: ::new; ReturnValue; cookie-create | -| 16 | Source: ::new; ReturnValue; cookie-create | -| 17 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | -| 18 | Summary: ::make_permanent; Argument[self]; ReturnValue; taint | -| 19 | Summary: ::set_domain; Argument[self]; ReturnValue; taint | -| 20 | Summary: ::set_expires; Argument[self]; ReturnValue; taint | -| 21 | Summary: ::set_http_only; Argument[self]; ReturnValue; taint | -| 22 | Summary: ::set_max_age; Argument[self]; ReturnValue; taint | -| 23 | Summary: ::set_name; Argument[self]; ReturnValue; taint | -| 24 | Summary: ::set_partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | -| 25 | Summary: ::set_path; Argument[self]; ReturnValue; taint | -| 26 | Summary: ::set_same_site; Argument[self]; ReturnValue; taint | -| 27 | Summary: ::set_secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | -| 28 | Summary: ::set_value; Argument[self]; ReturnValue; taint | -| 29 | Summary: ::unset_domain; Argument[self]; ReturnValue; taint | -| 30 | Summary: ::unset_expires; Argument[self]; ReturnValue; taint | -| 31 | Summary: ::unset_path; Argument[self]; ReturnValue; taint | -| 32 | Summary: ::domain; Argument[self]; ReturnValue; taint | -| 33 | Summary: ::expires; Argument[self]; ReturnValue; taint | -| 34 | Summary: ::http_only; Argument[self]; ReturnValue; taint | -| 35 | Summary: ::max_age; Argument[self]; ReturnValue; taint | -| 36 | Summary: ::partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | -| 37 | Summary: ::path; Argument[self]; ReturnValue; taint | -| 38 | Summary: ::permanent; Argument[self]; ReturnValue; taint | -| 39 | Summary: ::removal; Argument[self]; ReturnValue; taint | -| 40 | Summary: ::same_site; Argument[self]; ReturnValue; taint | -| 41 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 10 | Sink: ::new; Argument[0]; cookie-use | +| 11 | Sink: ::add; Argument[0]; cookie-use | +| 12 | Source: ::from; ReturnValue; cookie-create | +| 13 | Source: ::new; ReturnValue; cookie-create | +| 14 | Source: ::from; ReturnValue; cookie-create | +| 15 | Source: ::build; ReturnValue; cookie-create | +| 16 | Source: ::named; ReturnValue; cookie-create | +| 17 | Source: ::new; ReturnValue; cookie-create | +| 18 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | +| 19 | Summary: ::make_permanent; Argument[self]; ReturnValue; taint | +| 20 | Summary: ::set_domain; Argument[self]; ReturnValue; taint | +| 21 | Summary: ::set_expires; Argument[self]; ReturnValue; taint | +| 22 | Summary: ::set_http_only; Argument[self]; ReturnValue; taint | +| 23 | Summary: ::set_max_age; Argument[self]; ReturnValue; taint | +| 24 | Summary: ::set_name; Argument[self]; ReturnValue; taint | +| 25 | Summary: ::set_partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | +| 26 | Summary: ::set_path; Argument[self]; ReturnValue; taint | +| 27 | Summary: ::set_same_site; Argument[self]; ReturnValue; taint | +| 28 | Summary: ::set_secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 29 | Summary: ::set_value; Argument[self]; ReturnValue; taint | +| 30 | Summary: ::unset_domain; Argument[self]; ReturnValue; taint | +| 31 | Summary: ::unset_expires; Argument[self]; ReturnValue; taint | +| 32 | Summary: ::unset_path; Argument[self]; ReturnValue; taint | +| 33 | Summary: ::partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | +| 34 | Summary: ::path; Argument[self]; ReturnValue; taint | +| 35 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 36 | Summary: ::name; Argument[self]; ReturnValue; taint | +| 37 | Summary: ::path; Argument[self]; ReturnValue; taint | +| 38 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 39 | Summary: ::set_secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; Argument[self]; taint | nodes -| main.rs:8:19:8:31 | ...::build | semmle.label | ...::build | | main.rs:8:19:8:50 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:8:19:8:64 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:8:66:8:70 | build | semmle.label | build | | main.rs:16:19:16:31 | ...::build | semmle.label | ...::build | | main.rs:16:19:16:50 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:16:52:16:56 | build | semmle.label | build | -| main.rs:20:5:20:17 | ...::build | semmle.label | ...::build | | main.rs:20:5:20:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:20:5:20:54 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:20:56:20:60 | build | semmle.label | build | -| main.rs:21:5:21:17 | ...::build | semmle.label | ...::build | | main.rs:21:5:21:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:21:5:21:55 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:21:57:21:61 | build | semmle.label | build | -| main.rs:25:5:25:17 | ...::build | semmle.label | ...::build | | main.rs:25:5:25:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:25:5:25:52 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:25:54:25:58 | build | semmle.label | build | -| main.rs:26:5:26:17 | ...::build | semmle.label | ...::build | | main.rs:26:5:26:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:26:5:26:50 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:26:52:26:56 | build | semmle.label | build | -| main.rs:27:5:27:17 | ...::build | semmle.label | ...::build | | main.rs:27:5:27:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:27:5:27:51 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:27:53:27:57 | build | semmle.label | build | -| main.rs:28:5:28:17 | ...::build | semmle.label | ...::build | | main.rs:28:5:28:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:28:5:28:60 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:28:62:28:66 | build | semmle.label | build | -| main.rs:29:5:29:17 | ...::build | semmle.label | ...::build | | main.rs:29:5:29:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:29:5:29:60 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:29:62:29:66 | build | semmle.label | build | -| main.rs:33:9:33:21 | ...::build | semmle.label | ...::build | | main.rs:33:9:33:40 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:33:9:33:58 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:33:60:33:64 | build | semmle.label | build | -| main.rs:35:9:35:21 | ...::build | semmle.label | ...::build | | main.rs:35:9:35:40 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:35:9:35:58 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:35:60:35:64 | build | semmle.label | build | -| main.rs:39:5:39:22 | ...::new | semmle.label | ...::new | | main.rs:39:5:39:39 | ...::new(...) | semmle.label | ...::new(...) | | main.rs:39:5:39:53 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:39:55:39:59 | build | semmle.label | build | -| main.rs:40:5:40:17 | ...::build | semmle.label | ...::build | -| main.rs:40:5:40:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:40:5:40:50 | ... .expires(...) | semmle.label | ... .expires(...) | | main.rs:40:5:40:64 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:40:66:40:70 | build | semmle.label | build | -| main.rs:41:5:41:17 | ...::build | semmle.label | ...::build | -| main.rs:41:5:41:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:41:5:41:79 | ... .max_age(...) | semmle.label | ... .max_age(...) | | main.rs:41:5:41:93 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:41:95:41:99 | build | semmle.label | build | -| main.rs:42:5:42:17 | ...::build | semmle.label | ...::build | -| main.rs:42:5:42:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:42:5:42:58 | ... .domain(...) | semmle.label | ... .domain(...) | | main.rs:42:5:42:72 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:42:74:42:78 | build | semmle.label | build | -| main.rs:43:5:43:17 | ...::build | semmle.label | ...::build | -| main.rs:43:5:43:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:43:5:43:46 | ... .path(...) | semmle.label | ... .path(...) | | main.rs:43:5:43:60 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:43:62:43:66 | build | semmle.label | build | -| main.rs:44:5:44:17 | ...::build | semmle.label | ...::build | -| main.rs:44:5:44:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:44:5:44:52 | ... .http_only(...) | semmle.label | ... .http_only(...) | | main.rs:44:5:44:66 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:44:68:44:72 | build | semmle.label | build | -| main.rs:45:5:45:17 | ...::build | semmle.label | ...::build | -| main.rs:45:5:45:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:45:5:45:72 | ... .same_site(...) | semmle.label | ... .same_site(...) | | main.rs:45:5:45:86 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:45:88:45:92 | build | semmle.label | build | -| main.rs:46:5:46:17 | ...::build | semmle.label | ...::build | -| main.rs:46:5:46:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:46:5:46:48 | ... .permanent() | semmle.label | ... .permanent() | | main.rs:46:5:46:62 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:46:64:46:68 | build | semmle.label | build | -| main.rs:47:5:47:17 | ...::build | semmle.label | ...::build | -| main.rs:47:5:47:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:47:5:47:46 | ... .removal() | semmle.label | ... .removal() | | main.rs:47:5:47:60 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:47:62:47:66 | build | semmle.label | build | -| main.rs:48:5:48:17 | ...::build | semmle.label | ...::build | | main.rs:48:5:48:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:48:5:48:50 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:48:52:48:57 | finish | semmle.label | finish | -| main.rs:49:5:49:17 | ...::build | semmle.label | ...::build | | main.rs:49:5:49:25 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:49:5:49:39 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:49:41:49:45 | build | semmle.label | build | -| main.rs:50:5:50:17 | ...::build | semmle.label | ...::build | | main.rs:50:5:50:40 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:50:5:50:54 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:50:56:50:60 | build | semmle.label | build | @@ -594,4 +595,73 @@ nodes | main.rs:173:22:173:34 | ...::build | semmle.label | ...::build | | main.rs:173:22:173:59 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:173:61:173:65 | build | semmle.label | build | +| main.rs:197:5:197:39 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:197:5:197:53 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:197:55:197:60 | finish | semmle.label | finish | +| main.rs:198:5:198:39 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:198:5:198:53 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:198:5:198:63 | ... .path(...) | semmle.label | ... .path(...) | +| main.rs:198:65:198:70 | finish | semmle.label | finish | +| main.rs:201:5:201:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | +| main.rs:201:5:201:11 | cookie1 | semmle.label | cookie1 | +| main.rs:202:9:202:11 | add | semmle.label | add | +| main.rs:202:13:202:19 | cookie1 | semmle.label | cookie1 | +| main.rs:202:13:202:27 | cookie1.clone() | semmle.label | cookie1.clone() | +| main.rs:212:5:212:22 | ...::build | semmle.label | ...::build | +| main.rs:212:5:212:39 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:212:41:212:46 | finish | semmle.label | finish | +| main.rs:214:9:214:15 | cookie3 | semmle.label | cookie3 | +| main.rs:214:19:214:34 | ...::new | semmle.label | ...::new | +| main.rs:214:19:214:51 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:215:9:215:11 | add | semmle.label | add | +| main.rs:215:13:215:19 | cookie3 | semmle.label | cookie3 | +| main.rs:215:13:215:27 | cookie3.clone() | semmle.label | cookie3.clone() | +| main.rs:218:5:218:11 | [SSA] cookie2 | semmle.label | [SSA] cookie2 | +| main.rs:218:5:218:11 | cookie2 | semmle.label | cookie2 | +| main.rs:219:9:219:11 | add | semmle.label | add | +| main.rs:219:13:219:19 | cookie2 | semmle.label | cookie2 | +| main.rs:219:13:219:27 | cookie2.clone() | semmle.label | cookie2.clone() | +| main.rs:228:5:228:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | +| main.rs:228:5:228:11 | cookie1 | semmle.label | cookie1 | +| main.rs:229:9:229:11 | add | semmle.label | add | +| main.rs:229:13:229:19 | cookie1 | semmle.label | cookie1 | +| main.rs:229:13:229:27 | cookie1.clone() | semmle.label | cookie1.clone() | +| main.rs:241:9:241:25 | cookie_config_bad | semmle.label | cookie_config_bad | +| main.rs:241:29:241:62 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:241:29:241:76 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:242:9:242:41 | ...::new | semmle.label | ...::new | +| main.rs:242:43:242:59 | cookie_config_bad | semmle.label | cookie_config_bad | +| main.rs:244:9:244:26 | cookie_config_bad2 | semmle.label | cookie_config_bad2 | +| main.rs:244:30:244:63 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:244:30:244:77 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:244:30:244:90 | ... .name(...) | semmle.label | ... .name(...) | +| main.rs:244:30:244:100 | ... .path(...) | semmle.label | ... .path(...) | +| main.rs:245:9:245:41 | ...::new | semmle.label | ...::new | +| main.rs:245:43:245:60 | cookie_config_bad2 | semmle.label | cookie_config_bad2 | +| main.rs:259:5:259:43 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:259:5:259:57 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:259:59:259:64 | finish | semmle.label | finish | +| main.rs:260:5:260:43 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:260:5:260:57 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:260:5:260:67 | ... .path(...) | semmle.label | ... .path(...) | +| main.rs:260:69:260:74 | finish | semmle.label | finish | +| main.rs:263:5:263:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | +| main.rs:263:5:263:11 | cookie1 | semmle.label | cookie1 | +| main.rs:264:9:264:11 | add | semmle.label | add | +| main.rs:264:13:264:19 | cookie1 | semmle.label | cookie1 | +| main.rs:264:13:264:27 | cookie1.clone() | semmle.label | cookie1.clone() | +| main.rs:274:5:274:26 | ...::build | semmle.label | ...::build | +| main.rs:274:5:274:43 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:274:45:274:50 | finish | semmle.label | finish | +| main.rs:276:9:276:15 | cookie3 | semmle.label | cookie3 | +| main.rs:276:19:276:38 | ...::new | semmle.label | ...::new | +| main.rs:276:19:276:55 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:277:9:277:11 | add | semmle.label | add | +| main.rs:277:13:277:19 | cookie3 | semmle.label | cookie3 | +| main.rs:277:13:277:27 | cookie3.clone() | semmle.label | cookie3.clone() | +| main.rs:280:5:280:11 | [SSA] cookie2 | semmle.label | [SSA] cookie2 | +| main.rs:280:5:280:11 | cookie2 | semmle.label | cookie2 | +| main.rs:281:9:281:11 | add | semmle.label | add | +| main.rs:281:13:281:19 | cookie2 | semmle.label | cookie2 | +| main.rs:281:13:281:27 | cookie2.clone() | semmle.label | cookie2.clone() | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-614/main.rs b/rust/ql/test/query-tests/security/CWE-614/main.rs index afcbb28931f1..1f723877a3ee 100644 --- a/rust/ql/test/query-tests/security/CWE-614/main.rs +++ b/rust/ql/test/query-tests/security/CWE-614/main.rs @@ -188,9 +188,105 @@ fn test_qhelp_examples() { } } +fn test_actix_web() { + // actix-web re-exports the cookie crate + use actix_web::cookie::Cookie as ActixCookie; + let mut jar = actix_web::cookie::CookieJar::new(); + + // secure set to false + ActixCookie::build("name", "value").secure(false).finish(); // $ Alert[rust/insecure-cookie] + ActixCookie::build("name", "value").secure(false).path("/").finish(); // $ Alert[rust/insecure-cookie] + + let mut cookie1 = ActixCookie::new("name", "value"); + cookie1.set_secure(false); // $ Source + jar.add(cookie1.clone()); // $ Alert[rust/insecure-cookie] + + // secure set to true + ActixCookie::build("name", "value").secure(true).finish(); // good + + let mut cookie2 = ActixCookie::new("name", "value"); + cookie2.set_secure(true); // good + jar.add(cookie2.clone()); + + // secure left as default + ActixCookie::build("name", "value").finish(); // $ Alert[rust/insecure-cookie] + + let cookie3 = ActixCookie::new("name", "value"); // $ Source + jar.add(cookie3.clone()); // $ Alert[rust/insecure-cookie] + + // secure reset to None + cookie2.set_secure(None); // $ Source + jar.add(cookie2.clone()); // $ Alert[rust/insecure-cookie] +} + +fn test_poem() { + use poem::web::cookie::Cookie as PoemCookie; + let mut jar = poem::web::cookie::CookieJar::default(); + + // secure set to false + let mut cookie1 = PoemCookie::new_with_str("name", "value"); + cookie1.set_secure(false); // $ Source + jar.add(cookie1.clone()); // $ Alert[rust/insecure-cookie] + + // secure set to true + let mut cookie2 = PoemCookie::new_with_str("name", "value"); + cookie2.set_secure(true); // good + jar.add(cookie2.clone()); + + // secure left as default (which is `true` for Poem) + let cookie3 = PoemCookie::new_with_str("name", "value"); + jar.add(cookie3.clone()); // good + + // set secure via CookieConfig + let cookie_config_bad = poem::session::CookieConfig::new().secure(false); // $ Source + _ = poem::session::ServerSession::new(cookie_config_bad, ()); // $ Alert[rust/insecure-cookie] + + let cookie_config_bad2 = poem::session::CookieConfig::new().secure(false).name("name").path("/"); // $ Source + _ = poem::session::ServerSession::new(cookie_config_bad2, ()); // $ Alert[rust/insecure-cookie] + + let cookie_config_good = poem::session::CookieConfig::new().secure(true); + _ = poem::session::ServerSession::new(cookie_config_good, ()); // good + + let cookie_config_default = poem::session::CookieConfig::new(); + _ = poem::session::ServerSession::new(cookie_config_default, ()); // good +} + +fn test_http_types() { + use http_types::Cookie as HttpTypesCookie; + let mut jar = http_types::cookies::CookieJar::default(); + + // secure set to false + HttpTypesCookie::build("name", "value").secure(false).finish(); // $ Alert[rust/insecure-cookie] + HttpTypesCookie::build("name", "value").secure(false).path("/").finish(); // $ Alert[rust/insecure-cookie] + + let mut cookie1 = HttpTypesCookie::new("name", "value"); + cookie1.set_secure(false); // $ Source + jar.add(cookie1.clone()); // $ Alert[rust/insecure-cookie] + + // secure set to true + HttpTypesCookie::build("name", "value").secure(true).finish(); // good + + let mut cookie2 = HttpTypesCookie::new("name", "value"); + cookie2.set_secure(true); // good + jar.add(cookie2.clone()); + + // secure left as default + HttpTypesCookie::build("name", "value").finish(); // $ Alert[rust/insecure-cookie] + + let cookie3 = HttpTypesCookie::new("name", "value"); // $ Source + jar.add(cookie3.clone()); // $ Alert[rust/insecure-cookie] + + // secure reset to None + cookie2.set_secure(None); // $ Source + jar.add(cookie2.clone()); // $ Alert[rust/insecure-cookie] +} + fn main() { test_cookie(true); test_cookie(false); test_biscotti(); test_qhelp_examples(); + test_actix_web(); + test_poem(); + test_http_types(); } diff --git a/rust/ql/test/query-tests/security/CWE-614/options.yml b/rust/ql/test/query-tests/security/CWE-614/options.yml index 99b8e37e8439..72093c119bb6 100644 --- a/rust/ql/test/query-tests/security/CWE-614/options.yml +++ b/rust/ql/test/query-tests/security/CWE-614/options.yml @@ -2,3 +2,6 @@ qltest_cargo_check: true qltest_dependencies: - cookie = { version = "0.18.1", features = ["percent-encode", "signed", "private"] } - biscotti = { version = "0.4.3" } + - actix-web = { version = "4", features = ["cookies"] } + - poem = { version = "3", features = ["cookie", "session"] } + - http-types = { version = "2", features = ["cookies"] } diff --git a/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected index b1c7e787dee5..538ecf9c2e35 100644 --- a/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,2 @@ multipleCallTargets | test.rs:117:9:117:21 | ptr.is_null() | -| test.rs:117:9:117:21 | ptr.is_null() | diff --git a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected index 64875e0a8ac9..8fcbd27ac02e 100644 --- a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected +++ b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected @@ -252,7 +252,6 @@ edges | main.rs:230:46:230:46 | v | main.rs:231:42:231:42 | v | provenance | | | main.rs:231:42:231:42 | v | main.rs:231:13:231:40 | ...::with_capacity_in | provenance | MaD:4 Sink:MaD:4 | | main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:41 | -| main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:41 | | main.rs:280:9:280:17 | num_bytes | main.rs:282:54:282:62 | num_bytes | provenance | | | main.rs:280:21:280:47 | user_input.parse() [Ok] | main.rs:280:21:280:48 | TryExpr | provenance | | | main.rs:280:21:280:48 | TryExpr | main.rs:280:9:280:17 | num_bytes | provenance | | @@ -277,7 +276,6 @@ edges | main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:23 | | main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:38 | | main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:41 | -| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:41 | | main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:40 | | main.rs:317:13:317:91 | ... .unwrap() | main.rs:317:9:317:9 | v | provenance | | | main.rs:320:34:320:34 | v | main.rs:12:36:12:43 | ...: usize | provenance | | diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected b/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected index f58c58bc8968..c24c6a728bbf 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected @@ -24,27 +24,27 @@ | lifetime.rs:808:23:808:25 | ptr | lifetime.rs:798:9:798:12 | &val | lifetime.rs:808:23:808:25 | ptr | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:796:6:796:8 | val | val | | main.rs:64:23:64:24 | p2 | main.rs:44:26:44:28 | &b2 | main.rs:64:23:64:24 | p2 | Access of a pointer to $@ after its lifetime has ended. | main.rs:43:13:43:14 | b2 | b2 | edges -| deallocation.rs:148:6:148:7 | p1 | deallocation.rs:151:14:151:15 | p1 | provenance | | -| deallocation.rs:148:6:148:7 | p1 | deallocation.rs:158:14:158:15 | p1 | provenance | | -| deallocation.rs:148:30:148:38 | &raw const my_buffer | deallocation.rs:148:6:148:7 | p1 | provenance | | -| deallocation.rs:228:28:228:43 | ...: ... | deallocation.rs:230:18:230:20 | ptr | provenance | | -| deallocation.rs:240:27:240:42 | ...: ... | deallocation.rs:248:18:248:20 | ptr | provenance | | -| deallocation.rs:257:7:257:10 | ptr1 | deallocation.rs:260:4:260:7 | ptr1 | provenance | | -| deallocation.rs:257:7:257:10 | ptr1 | deallocation.rs:260:4:260:7 | ptr1 | provenance | | -| deallocation.rs:257:14:257:33 | &raw mut ... | deallocation.rs:257:7:257:10 | ptr1 | provenance | | -| deallocation.rs:258:7:258:10 | ptr2 | deallocation.rs:261:4:261:7 | ptr2 | provenance | | -| deallocation.rs:258:7:258:10 | ptr2 | deallocation.rs:261:4:261:7 | ptr2 | provenance | | -| deallocation.rs:258:14:258:33 | &raw mut ... | deallocation.rs:258:7:258:10 | ptr2 | provenance | | -| deallocation.rs:260:4:260:7 | ptr1 | deallocation.rs:263:27:263:30 | ptr1 | provenance | | -| deallocation.rs:261:4:261:7 | ptr2 | deallocation.rs:265:26:265:29 | ptr2 | provenance | | -| deallocation.rs:263:27:263:30 | ptr1 | deallocation.rs:228:28:228:43 | ...: ... | provenance | | -| deallocation.rs:265:26:265:29 | ptr2 | deallocation.rs:240:27:240:42 | ...: ... | provenance | | -| deallocation.rs:276:6:276:9 | ptr1 | deallocation.rs:279:13:279:16 | ptr1 | provenance | | -| deallocation.rs:276:6:276:9 | ptr1 | deallocation.rs:287:13:287:16 | ptr1 | provenance | | -| deallocation.rs:276:13:276:28 | &raw mut ... | deallocation.rs:276:6:276:9 | ptr1 | provenance | | -| deallocation.rs:295:6:295:9 | ptr2 | deallocation.rs:298:13:298:16 | ptr2 | provenance | | -| deallocation.rs:295:6:295:9 | ptr2 | deallocation.rs:308:13:308:16 | ptr2 | provenance | | -| deallocation.rs:295:13:295:28 | &raw mut ... | deallocation.rs:295:6:295:9 | ptr2 | provenance | | +| deallocation.rs:242:6:242:7 | p1 | deallocation.rs:245:14:245:15 | p1 | provenance | | +| deallocation.rs:242:6:242:7 | p1 | deallocation.rs:252:14:252:15 | p1 | provenance | | +| deallocation.rs:242:30:242:38 | &raw const my_buffer | deallocation.rs:242:6:242:7 | p1 | provenance | | +| deallocation.rs:322:28:322:43 | ...: ... | deallocation.rs:324:18:324:20 | ptr | provenance | | +| deallocation.rs:334:27:334:42 | ...: ... | deallocation.rs:342:18:342:20 | ptr | provenance | | +| deallocation.rs:351:7:351:10 | ptr1 | deallocation.rs:354:4:354:7 | ptr1 | provenance | | +| deallocation.rs:351:7:351:10 | ptr1 | deallocation.rs:354:4:354:7 | ptr1 | provenance | | +| deallocation.rs:351:14:351:33 | &raw mut ... | deallocation.rs:351:7:351:10 | ptr1 | provenance | | +| deallocation.rs:352:7:352:10 | ptr2 | deallocation.rs:355:4:355:7 | ptr2 | provenance | | +| deallocation.rs:352:7:352:10 | ptr2 | deallocation.rs:355:4:355:7 | ptr2 | provenance | | +| deallocation.rs:352:14:352:33 | &raw mut ... | deallocation.rs:352:7:352:10 | ptr2 | provenance | | +| deallocation.rs:354:4:354:7 | ptr1 | deallocation.rs:357:27:357:30 | ptr1 | provenance | | +| deallocation.rs:355:4:355:7 | ptr2 | deallocation.rs:359:26:359:29 | ptr2 | provenance | | +| deallocation.rs:357:27:357:30 | ptr1 | deallocation.rs:322:28:322:43 | ...: ... | provenance | | +| deallocation.rs:359:26:359:29 | ptr2 | deallocation.rs:334:27:334:42 | ...: ... | provenance | | +| deallocation.rs:370:6:370:9 | ptr1 | deallocation.rs:373:13:373:16 | ptr1 | provenance | | +| deallocation.rs:370:6:370:9 | ptr1 | deallocation.rs:381:13:381:16 | ptr1 | provenance | | +| deallocation.rs:370:13:370:28 | &raw mut ... | deallocation.rs:370:6:370:9 | ptr1 | provenance | | +| deallocation.rs:389:6:389:9 | ptr2 | deallocation.rs:392:13:392:16 | ptr2 | provenance | | +| deallocation.rs:389:6:389:9 | ptr2 | deallocation.rs:402:13:402:16 | ptr2 | provenance | | +| deallocation.rs:389:13:389:28 | &raw mut ... | deallocation.rs:389:6:389:9 | ptr2 | provenance | | | lifetime.rs:21:2:21:18 | return ... | lifetime.rs:54:11:54:30 | get_local_dangling(...) | provenance | | | lifetime.rs:21:9:21:18 | &my_local1 | lifetime.rs:21:2:21:18 | return ... | provenance | | | lifetime.rs:27:2:27:22 | return ... | lifetime.rs:55:11:55:34 | get_local_dangling_mut(...) | provenance | | @@ -186,28 +186,6 @@ edges | lifetime.rs:655:11:655:25 | &raw const str2 | lifetime.rs:655:4:655:7 | ref1 | provenance | | | lifetime.rs:655:11:655:25 | &raw const str2 [&ref] | lifetime.rs:655:4:655:7 | ref1 [&ref] | provenance | | | lifetime.rs:655:22:655:25 | str2 | lifetime.rs:655:11:655:25 | &raw const str2 [&ref] | provenance | | -| lifetime.rs:680:7:680:8 | r1 | lifetime.rs:692:13:692:14 | r1 | provenance | | -| lifetime.rs:682:4:682:12 | &... | lifetime.rs:680:7:680:8 | r1 | provenance | | -| lifetime.rs:684:7:684:14 | TuplePat [tuple.0] | lifetime.rs:684:8:684:9 | r2 | provenance | | -| lifetime.rs:684:7:684:14 | TuplePat [tuple.1] | lifetime.rs:684:12:684:13 | r3 | provenance | | -| lifetime.rs:684:8:684:9 | r2 | lifetime.rs:693:13:693:14 | r2 | provenance | | -| lifetime.rs:684:12:684:13 | r3 | lifetime.rs:694:13:694:14 | r3 | provenance | | -| lifetime.rs:686:4:687:16 | TupleExpr [tuple.0] | lifetime.rs:684:7:684:14 | TuplePat [tuple.0] | provenance | | -| lifetime.rs:686:4:687:16 | TupleExpr [tuple.1] | lifetime.rs:684:7:684:14 | TuplePat [tuple.1] | provenance | | -| lifetime.rs:686:5:686:13 | &... | lifetime.rs:686:4:687:16 | TupleExpr [tuple.0] | provenance | | -| lifetime.rs:687:5:687:15 | &... | lifetime.rs:686:4:687:16 | TupleExpr [tuple.1] | provenance | | -| lifetime.rs:717:35:723:2 | { ... } | lifetime.rs:730:11:730:25 | e1.test_match() | provenance | | -| lifetime.rs:718:7:718:8 | r1 | lifetime.rs:717:35:723:2 | { ... } | provenance | | -| lifetime.rs:719:26:719:34 | &... | lifetime.rs:718:7:718:8 | r1 | provenance | | -| lifetime.rs:730:6:730:7 | r1 | lifetime.rs:734:12:734:13 | r1 | provenance | | -| lifetime.rs:730:11:730:25 | e1.test_match() | lifetime.rs:730:6:730:7 | r1 | provenance | | -| lifetime.rs:766:2:766:11 | &val | lifetime.rs:766:2:766:11 | ptr | provenance | | -| lifetime.rs:766:2:766:11 | ptr | lifetime.rs:766:2:766:11 | ptr | provenance | | -| lifetime.rs:767:2:767:11 | &val | lifetime.rs:767:2:767:11 | ptr | provenance | | -| lifetime.rs:767:2:767:11 | ptr | lifetime.rs:767:2:767:11 | ptr | provenance | | -| lifetime.rs:769:6:769:8 | ptr | lifetime.rs:771:12:771:14 | ptr | provenance | | -| lifetime.rs:769:12:769:21 | &val | lifetime.rs:769:12:769:21 | ptr | provenance | | -| lifetime.rs:769:12:769:21 | ptr | lifetime.rs:769:6:769:8 | ptr | provenance | | | lifetime.rs:781:2:781:19 | return ... | lifetime.rs:785:11:785:41 | get_local_for_unsafe_function(...) | provenance | | | lifetime.rs:781:9:781:19 | &my_local10 | lifetime.rs:781:2:781:19 | return ... | provenance | | | lifetime.rs:785:6:785:7 | p1 | lifetime.rs:789:12:789:13 | p1 | provenance | | @@ -234,32 +212,32 @@ models | 4 | Summary: ::as_ptr; Argument[0].Reference.Reference; ReturnValue.Reference; value | | 5 | Summary: core::ptr::from_ref; Argument[0]; ReturnValue; value | nodes -| deallocation.rs:148:6:148:7 | p1 | semmle.label | p1 | -| deallocation.rs:148:30:148:38 | &raw const my_buffer | semmle.label | &raw const my_buffer | -| deallocation.rs:151:14:151:15 | p1 | semmle.label | p1 | -| deallocation.rs:158:14:158:15 | p1 | semmle.label | p1 | -| deallocation.rs:228:28:228:43 | ...: ... | semmle.label | ...: ... | -| deallocation.rs:230:18:230:20 | ptr | semmle.label | ptr | -| deallocation.rs:240:27:240:42 | ...: ... | semmle.label | ...: ... | -| deallocation.rs:248:18:248:20 | ptr | semmle.label | ptr | -| deallocation.rs:257:7:257:10 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:257:14:257:33 | &raw mut ... | semmle.label | &raw mut ... | -| deallocation.rs:258:7:258:10 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:258:14:258:33 | &raw mut ... | semmle.label | &raw mut ... | -| deallocation.rs:260:4:260:7 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:260:4:260:7 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:261:4:261:7 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:261:4:261:7 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:263:27:263:30 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:265:26:265:29 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:276:6:276:9 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:276:13:276:28 | &raw mut ... | semmle.label | &raw mut ... | -| deallocation.rs:279:13:279:16 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:287:13:287:16 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:295:6:295:9 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:295:13:295:28 | &raw mut ... | semmle.label | &raw mut ... | -| deallocation.rs:298:13:298:16 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:308:13:308:16 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:242:6:242:7 | p1 | semmle.label | p1 | +| deallocation.rs:242:30:242:38 | &raw const my_buffer | semmle.label | &raw const my_buffer | +| deallocation.rs:245:14:245:15 | p1 | semmle.label | p1 | +| deallocation.rs:252:14:252:15 | p1 | semmle.label | p1 | +| deallocation.rs:322:28:322:43 | ...: ... | semmle.label | ...: ... | +| deallocation.rs:324:18:324:20 | ptr | semmle.label | ptr | +| deallocation.rs:334:27:334:42 | ...: ... | semmle.label | ...: ... | +| deallocation.rs:342:18:342:20 | ptr | semmle.label | ptr | +| deallocation.rs:351:7:351:10 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:351:14:351:33 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:352:7:352:10 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:352:14:352:33 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:354:4:354:7 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:354:4:354:7 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:355:4:355:7 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:355:4:355:7 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:357:27:357:30 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:359:26:359:29 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:370:6:370:9 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:370:13:370:28 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:373:13:373:16 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:381:13:381:16 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:389:6:389:9 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:389:13:389:28 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:392:13:392:16 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:402:13:402:16 | ptr2 | semmle.label | ptr2 | | lifetime.rs:21:2:21:18 | return ... | semmle.label | return ... | | lifetime.rs:21:9:21:18 | &my_local1 | semmle.label | &my_local1 | | lifetime.rs:27:2:27:22 | return ... | semmle.label | return ... | @@ -421,35 +399,6 @@ nodes | lifetime.rs:655:22:655:25 | str2 | semmle.label | str2 | | lifetime.rs:659:15:659:18 | ref1 | semmle.label | ref1 | | lifetime.rs:667:14:667:17 | ref1 | semmle.label | ref1 | -| lifetime.rs:680:7:680:8 | r1 | semmle.label | r1 | -| lifetime.rs:682:4:682:12 | &... | semmle.label | &... | -| lifetime.rs:684:7:684:14 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] | -| lifetime.rs:684:7:684:14 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] | -| lifetime.rs:684:8:684:9 | r2 | semmle.label | r2 | -| lifetime.rs:684:12:684:13 | r3 | semmle.label | r3 | -| lifetime.rs:686:4:687:16 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | -| lifetime.rs:686:4:687:16 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] | -| lifetime.rs:686:5:686:13 | &... | semmle.label | &... | -| lifetime.rs:687:5:687:15 | &... | semmle.label | &... | -| lifetime.rs:692:13:692:14 | r1 | semmle.label | r1 | -| lifetime.rs:693:13:693:14 | r2 | semmle.label | r2 | -| lifetime.rs:694:13:694:14 | r3 | semmle.label | r3 | -| lifetime.rs:717:35:723:2 | { ... } | semmle.label | { ... } | -| lifetime.rs:718:7:718:8 | r1 | semmle.label | r1 | -| lifetime.rs:719:26:719:34 | &... | semmle.label | &... | -| lifetime.rs:730:6:730:7 | r1 | semmle.label | r1 | -| lifetime.rs:730:11:730:25 | e1.test_match() | semmle.label | e1.test_match() | -| lifetime.rs:734:12:734:13 | r1 | semmle.label | r1 | -| lifetime.rs:766:2:766:11 | &val | semmle.label | &val | -| lifetime.rs:766:2:766:11 | ptr | semmle.label | ptr | -| lifetime.rs:766:2:766:11 | ptr | semmle.label | ptr | -| lifetime.rs:767:2:767:11 | &val | semmle.label | &val | -| lifetime.rs:767:2:767:11 | ptr | semmle.label | ptr | -| lifetime.rs:767:2:767:11 | ptr | semmle.label | ptr | -| lifetime.rs:769:6:769:8 | ptr | semmle.label | ptr | -| lifetime.rs:769:12:769:21 | &val | semmle.label | &val | -| lifetime.rs:769:12:769:21 | ptr | semmle.label | ptr | -| lifetime.rs:771:12:771:14 | ptr | semmle.label | ptr | | lifetime.rs:781:2:781:19 | return ... | semmle.label | return ... | | lifetime.rs:781:9:781:19 | &my_local10 | semmle.label | &my_local10 | | lifetime.rs:785:6:785:7 | p1 | semmle.label | p1 | diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected index 1e9bdb3c8bb9..6afe11ad0122 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected @@ -13,10 +13,23 @@ | deallocation.rs:130:14:130:15 | p1 | deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:130:14:130:15 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:123:23:123:40 | ...::dangling | invalid | | deallocation.rs:131:14:131:15 | p2 | deallocation.rs:124:21:124:42 | ...::dangling_mut | deallocation.rs:131:14:131:15 | p2 | This operation dereferences a pointer that may be $@. | deallocation.rs:124:21:124:42 | ...::dangling_mut | invalid | | deallocation.rs:132:14:132:15 | p3 | deallocation.rs:125:23:125:36 | ...::null | deallocation.rs:132:14:132:15 | p3 | This operation dereferences a pointer that may be $@. | deallocation.rs:125:23:125:36 | ...::null | invalid | -| deallocation.rs:180:15:180:16 | p1 | deallocation.rs:176:3:176:25 | ...::drop_in_place | deallocation.rs:180:15:180:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:176:3:176:25 | ...::drop_in_place | invalid | -| deallocation.rs:180:15:180:16 | p1 | deallocation.rs:176:3:176:25 | ...::drop_in_place | deallocation.rs:180:15:180:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:176:3:176:25 | ...::drop_in_place | invalid | -| deallocation.rs:248:18:248:20 | ptr | deallocation.rs:242:3:242:25 | ...::drop_in_place | deallocation.rs:248:18:248:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:242:3:242:25 | ...::drop_in_place | invalid | -| deallocation.rs:248:18:248:20 | ptr | deallocation.rs:242:3:242:25 | ...::drop_in_place | deallocation.rs:248:18:248:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:242:3:242:25 | ...::drop_in_place | invalid | +| deallocation.rs:163:13:163:15 | ptr | deallocation.rs:159:9:159:26 | ...::null_mut | deallocation.rs:163:13:163:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:159:9:159:26 | ...::null_mut | invalid | +| deallocation.rs:166:13:166:15 | ptr | deallocation.rs:159:9:159:26 | ...::null_mut | deallocation.rs:166:13:166:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:159:9:159:26 | ...::null_mut | invalid | +| deallocation.rs:175:13:175:15 | ptr | deallocation.rs:171:9:171:26 | ...::null_mut | deallocation.rs:175:13:175:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:171:9:171:26 | ...::null_mut | invalid | +| deallocation.rs:178:13:178:15 | ptr | deallocation.rs:171:9:171:26 | ...::null_mut | deallocation.rs:178:13:178:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:171:9:171:26 | ...::null_mut | invalid | +| deallocation.rs:186:24:186:26 | ptr | deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:186:24:186:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:26 | ...::null_mut | invalid | +| deallocation.rs:190:24:190:26 | ptr | deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:190:24:190:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:26 | ...::null_mut | invalid | +| deallocation.rs:194:25:194:27 | ptr | deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:194:25:194:27 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:26 | ...::null_mut | invalid | +| deallocation.rs:202:24:202:26 | ptr | deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:202:24:202:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:26 | ...::null_mut | invalid | +| deallocation.rs:202:24:202:26 | ptr | deallocation.rs:199:9:199:26 | ...::null_mut | deallocation.rs:202:24:202:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:199:9:199:26 | ...::null_mut | invalid | +| deallocation.rs:210:7:210:9 | ptr | deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:210:7:210:9 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:26 | ...::null_mut | invalid | +| deallocation.rs:210:7:210:9 | ptr | deallocation.rs:199:9:199:26 | ...::null_mut | deallocation.rs:210:7:210:9 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:199:9:199:26 | ...::null_mut | invalid | +| deallocation.rs:210:7:210:9 | ptr | deallocation.rs:207:9:207:26 | ...::null_mut | deallocation.rs:210:7:210:9 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:207:9:207:26 | ...::null_mut | invalid | +| deallocation.rs:226:13:226:21 | const_ptr | deallocation.rs:219:15:219:32 | ...::null_mut | deallocation.rs:226:13:226:21 | const_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:219:15:219:32 | ...::null_mut | invalid | +| deallocation.rs:274:15:274:16 | p1 | deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:274:15:274:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:270:3:270:25 | ...::drop_in_place | invalid | +| deallocation.rs:274:15:274:16 | p1 | deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:274:15:274:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:270:3:270:25 | ...::drop_in_place | invalid | +| deallocation.rs:342:18:342:20 | ptr | deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:342:18:342:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:336:3:336:25 | ...::drop_in_place | invalid | +| deallocation.rs:342:18:342:20 | ptr | deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:342:18:342:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:336:3:336:25 | ...::drop_in_place | invalid | edges | deallocation.rs:20:3:20:21 | ...::dealloc | deallocation.rs:20:23:20:24 | [post] m1 | provenance | Src:MaD:3 MaD:3 | | deallocation.rs:20:23:20:24 | [post] m1 | deallocation.rs:26:15:26:16 | m1 | provenance | | @@ -32,7 +45,7 @@ edges | deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:90:7:90:8 | m2 | provenance | | | deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:95:33:95:34 | m2 | provenance | | | deallocation.rs:95:33:95:34 | m2 | deallocation.rs:95:5:95:31 | ...::write::<...> | provenance | MaD:2 Sink:MaD:2 | -| deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | provenance | Src:MaD:8 MaD:8 | +| deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | provenance | Src:MaD:9 MaD:9 | | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | deallocation.rs:115:13:115:18 | my_ptr | provenance | | | deallocation.rs:123:6:123:7 | p1 | deallocation.rs:130:14:130:15 | p1 | provenance | | | deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:123:23:123:42 | ...::dangling(...) | provenance | Src:MaD:4 MaD:4 | @@ -44,12 +57,37 @@ edges | deallocation.rs:125:6:125:7 | p3 | deallocation.rs:132:14:132:15 | p3 | provenance | | | deallocation.rs:125:23:125:36 | ...::null | deallocation.rs:125:23:125:38 | ...::null(...) | provenance | Src:MaD:7 MaD:7 | | deallocation.rs:125:23:125:38 | ...::null(...) | deallocation.rs:125:6:125:7 | p3 | provenance | | -| deallocation.rs:176:3:176:25 | ...::drop_in_place | deallocation.rs:176:27:176:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | -| deallocation.rs:176:3:176:25 | ...::drop_in_place | deallocation.rs:176:27:176:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | -| deallocation.rs:176:27:176:28 | [post] p1 | deallocation.rs:180:15:180:16 | p1 | provenance | | -| deallocation.rs:242:3:242:25 | ...::drop_in_place | deallocation.rs:242:27:242:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 | -| deallocation.rs:242:3:242:25 | ...::drop_in_place | deallocation.rs:242:27:242:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 | -| deallocation.rs:242:27:242:29 | [post] ptr | deallocation.rs:248:18:248:20 | ptr | provenance | | +| deallocation.rs:159:3:159:5 | ptr | deallocation.rs:163:13:163:15 | ptr | provenance | | +| deallocation.rs:159:3:159:5 | ptr | deallocation.rs:166:13:166:15 | ptr | provenance | | +| deallocation.rs:159:9:159:26 | ...::null_mut | deallocation.rs:159:9:159:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | +| deallocation.rs:159:9:159:28 | ...::null_mut(...) | deallocation.rs:159:3:159:5 | ptr | provenance | | +| deallocation.rs:171:3:171:5 | ptr | deallocation.rs:175:13:175:15 | ptr | provenance | | +| deallocation.rs:171:3:171:5 | ptr | deallocation.rs:178:13:178:15 | ptr | provenance | | +| deallocation.rs:171:9:171:26 | ...::null_mut | deallocation.rs:171:9:171:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | +| deallocation.rs:171:9:171:28 | ...::null_mut(...) | deallocation.rs:171:3:171:5 | ptr | provenance | | +| deallocation.rs:183:3:183:5 | ptr | deallocation.rs:186:24:186:26 | ptr | provenance | | +| deallocation.rs:183:3:183:5 | ptr | deallocation.rs:190:24:190:26 | ptr | provenance | | +| deallocation.rs:183:3:183:5 | ptr | deallocation.rs:194:25:194:27 | ptr | provenance | | +| deallocation.rs:183:3:183:5 | ptr | deallocation.rs:202:24:202:26 | ptr | provenance | | +| deallocation.rs:183:3:183:5 | ptr | deallocation.rs:210:7:210:9 | ptr | provenance | | +| deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:183:9:183:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | +| deallocation.rs:183:9:183:28 | ...::null_mut(...) | deallocation.rs:183:3:183:5 | ptr | provenance | | +| deallocation.rs:199:3:199:5 | ptr | deallocation.rs:202:24:202:26 | ptr | provenance | | +| deallocation.rs:199:3:199:5 | ptr | deallocation.rs:210:7:210:9 | ptr | provenance | | +| deallocation.rs:199:9:199:26 | ...::null_mut | deallocation.rs:199:9:199:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | +| deallocation.rs:199:9:199:28 | ...::null_mut(...) | deallocation.rs:199:3:199:5 | ptr | provenance | | +| deallocation.rs:207:3:207:5 | ptr | deallocation.rs:210:7:210:9 | ptr | provenance | | +| deallocation.rs:207:9:207:26 | ...::null_mut | deallocation.rs:207:9:207:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | +| deallocation.rs:207:9:207:28 | ...::null_mut(...) | deallocation.rs:207:3:207:5 | ptr | provenance | | +| deallocation.rs:219:3:219:11 | const_ptr | deallocation.rs:226:13:226:21 | const_ptr | provenance | | +| deallocation.rs:219:15:219:32 | ...::null_mut | deallocation.rs:219:15:219:34 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | +| deallocation.rs:219:15:219:34 | ...::null_mut(...) | deallocation.rs:219:3:219:11 | const_ptr | provenance | | +| deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:270:27:270:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | +| deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:270:27:270:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | +| deallocation.rs:270:27:270:28 | [post] p1 | deallocation.rs:274:15:274:16 | p1 | provenance | | +| deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:336:27:336:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 | +| deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:336:27:336:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 | +| deallocation.rs:336:27:336:29 | [post] ptr | deallocation.rs:342:18:342:20 | ptr | provenance | | models | 1 | Sink: core::ptr::read; Argument[0]; pointer-access | | 2 | Sink: core::ptr::write; Argument[0]; pointer-access | @@ -58,7 +96,8 @@ models | 5 | Source: core::ptr::dangling_mut; ReturnValue; pointer-invalidate | | 6 | Source: core::ptr::drop_in_place; Argument[0]; pointer-invalidate | | 7 | Source: core::ptr::null; ReturnValue; pointer-invalidate | -| 8 | Source: libc::unix::free; Argument[0]; pointer-invalidate | +| 8 | Source: core::ptr::null_mut; ReturnValue; pointer-invalidate | +| 9 | Source: libc::unix::free; Argument[0]; pointer-invalidate | nodes | deallocation.rs:20:3:20:21 | ...::dealloc | semmle.label | ...::dealloc | | deallocation.rs:20:23:20:24 | [post] m1 | semmle.label | [post] m1 | @@ -92,12 +131,40 @@ nodes | deallocation.rs:130:14:130:15 | p1 | semmle.label | p1 | | deallocation.rs:131:14:131:15 | p2 | semmle.label | p2 | | deallocation.rs:132:14:132:15 | p3 | semmle.label | p3 | -| deallocation.rs:176:3:176:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | -| deallocation.rs:176:3:176:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | -| deallocation.rs:176:27:176:28 | [post] p1 | semmle.label | [post] p1 | -| deallocation.rs:180:15:180:16 | p1 | semmle.label | p1 | -| deallocation.rs:242:3:242:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | -| deallocation.rs:242:3:242:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | -| deallocation.rs:242:27:242:29 | [post] ptr | semmle.label | [post] ptr | -| deallocation.rs:248:18:248:20 | ptr | semmle.label | ptr | +| deallocation.rs:159:3:159:5 | ptr | semmle.label | ptr | +| deallocation.rs:159:9:159:26 | ...::null_mut | semmle.label | ...::null_mut | +| deallocation.rs:159:9:159:28 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | +| deallocation.rs:163:13:163:15 | ptr | semmle.label | ptr | +| deallocation.rs:166:13:166:15 | ptr | semmle.label | ptr | +| deallocation.rs:171:3:171:5 | ptr | semmle.label | ptr | +| deallocation.rs:171:9:171:26 | ...::null_mut | semmle.label | ...::null_mut | +| deallocation.rs:171:9:171:28 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | +| deallocation.rs:175:13:175:15 | ptr | semmle.label | ptr | +| deallocation.rs:178:13:178:15 | ptr | semmle.label | ptr | +| deallocation.rs:183:3:183:5 | ptr | semmle.label | ptr | +| deallocation.rs:183:9:183:26 | ...::null_mut | semmle.label | ...::null_mut | +| deallocation.rs:183:9:183:28 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | +| deallocation.rs:186:24:186:26 | ptr | semmle.label | ptr | +| deallocation.rs:190:24:190:26 | ptr | semmle.label | ptr | +| deallocation.rs:194:25:194:27 | ptr | semmle.label | ptr | +| deallocation.rs:199:3:199:5 | ptr | semmle.label | ptr | +| deallocation.rs:199:9:199:26 | ...::null_mut | semmle.label | ...::null_mut | +| deallocation.rs:199:9:199:28 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | +| deallocation.rs:202:24:202:26 | ptr | semmle.label | ptr | +| deallocation.rs:207:3:207:5 | ptr | semmle.label | ptr | +| deallocation.rs:207:9:207:26 | ...::null_mut | semmle.label | ...::null_mut | +| deallocation.rs:207:9:207:28 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | +| deallocation.rs:210:7:210:9 | ptr | semmle.label | ptr | +| deallocation.rs:219:3:219:11 | const_ptr | semmle.label | const_ptr | +| deallocation.rs:219:15:219:32 | ...::null_mut | semmle.label | ...::null_mut | +| deallocation.rs:219:15:219:34 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | +| deallocation.rs:226:13:226:21 | const_ptr | semmle.label | const_ptr | +| deallocation.rs:270:3:270:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | +| deallocation.rs:270:3:270:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | +| deallocation.rs:270:27:270:28 | [post] p1 | semmle.label | [post] p1 | +| deallocation.rs:274:15:274:16 | p1 | semmle.label | p1 | +| deallocation.rs:336:3:336:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | +| deallocation.rs:336:3:336:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | +| deallocation.rs:336:27:336:29 | [post] ptr | semmle.label | [post] ptr | +| deallocation.rs:342:18:342:20 | ptr | semmle.label | ptr | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected index 81f06adcde33..40e59cf662ab 100644 --- a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected @@ -1,6 +1,14 @@ multipleCallTargets -| deallocation.rs:260:11:260:29 | ...::from(...) | -| deallocation.rs:261:11:261:29 | ...::from(...) | +| deallocation.rs:162:5:162:17 | ptr.is_null() | +| deallocation.rs:174:7:174:19 | ptr.is_null() | +| deallocation.rs:186:5:186:17 | ptr.is_null() | +| deallocation.rs:190:5:190:17 | ptr.is_null() | +| deallocation.rs:194:6:194:18 | ptr.is_null() | +| deallocation.rs:202:5:202:17 | ptr.is_null() | +| deallocation.rs:210:25:210:37 | ptr.is_null() | +| deallocation.rs:225:5:225:23 | const_ptr.is_null() | +| deallocation.rs:354:11:354:29 | ...::from(...) | +| deallocation.rs:355:11:355:29 | ...::from(...) | | lifetime.rs:610:13:610:31 | ...::from(...) | | lifetime.rs:611:13:611:31 | ...::from(...) | | lifetime.rs:628:13:628:31 | ...::from(...) | diff --git a/rust/ql/test/query-tests/security/CWE-825/deallocation.rs b/rust/ql/test/query-tests/security/CWE-825/deallocation.rs index 89ef0470e99d..073d03260b34 100644 --- a/rust/ql/test/query-tests/security/CWE-825/deallocation.rs +++ b/rust/ql/test/query-tests/security/CWE-825/deallocation.rs @@ -137,6 +137,100 @@ pub fn test_ptr_invalid(mode: i32) { } } +struct MyObject { + value: i64 +} + +impl MyObject { + fn is_zero(&self) -> bool { + self.value == 0 + } +} + +pub unsafe fn test_ptr_invalid_conditions(mode: i32) { + let layout = std::alloc::Layout::new::(); + + // --- mutable pointer --- + + let mut ptr = std::alloc::alloc(layout) as *mut MyObject; + (*ptr).value = 0; // good + + if mode == 121 { // (causes a panic below) + ptr = std::ptr::null_mut(); // $ Source[rust/access-invalid-pointer] + } + + if ptr.is_null() { + let v = (*ptr).value; // $ Alert[rust/access-invalid-pointer] + println!(" cond1 v = {v}"); + } else { + let v = (*ptr).value; // $ SPURIOUS: Alert[rust/access-invalid-pointer] good - unreachable with null pointer + println!(" cond2 v = {v}"); + } + + if mode == 122 { // (causes a panic below) + ptr = std::ptr::null_mut(); // $ Source[rust/access-invalid-pointer] + } + + if !(ptr.is_null()) { + let v = (*ptr).value; // $ SPURIOUS: Alert[rust/access-invalid-pointer] good - unreachable with null pointer + println!(" cond3 v = {v}"); + } else { + let v = (*ptr).value; // $ Alert[rust/access-invalid-pointer] + println!(" cond4 v = {v}"); + } + + if mode == 123 { // (causes a panic below) + ptr = std::ptr::null_mut(); // $ Source[rust/access-invalid-pointer] + } + + if ptr.is_null() || (*ptr).value == 0 { // $ SPURIOUS: Alert[rust/access-invalid-pointer] good - deref is protected by short-circuiting + println!(" cond5"); + } + + if ptr.is_null() || (*ptr).is_zero() { // $ SPURIOUS: Alert[rust/access-invalid-pointer] good - deref is protected by short-circuiting + println!(" cond6"); + } + + if !ptr.is_null() || (*ptr).value == 0 { // $ Alert[rust/access-invalid-pointer] + println!(" cond7"); + } + + if mode == 124 { // (causes a panic below) + ptr = std::ptr::null_mut(); // $ Source[rust/access-invalid-pointer] + } + + if ptr.is_null() && (*ptr).is_zero() { // $ Alert[rust/access-invalid-pointer] + println!(" cond8"); + } + + if mode == 125 { // (causes a panic below) + ptr = std::ptr::null_mut(); // $ Source[rust/access-invalid-pointer] + } + + if (*ptr).is_zero() || ptr.is_null() { // $ Alert[rust/access-invalid-pointer] + println!(" cond9"); + } + + // --- immutable pointer --- + + let const_ptr; + + if mode == 126 { // (causes a panic below) + const_ptr = std::ptr::null_mut(); // $ Source[rust/access-invalid-pointer] + } else { + const_ptr = std::alloc::alloc(layout) as *mut MyObject; + (*const_ptr).value = 0; // good + } + + if const_ptr.is_null() { + let v = (*const_ptr).value; // $ Alert[rust/access-invalid-pointer] + println!(" cond10 v = {v}"); + } else { + let v = (*const_ptr).value; // $ good - unreachable with null pointer + println!(" cond11 v = {v}"); + } +} + // --- drop --- struct MyBuffer { diff --git a/rust/ql/test/query-tests/security/CWE-825/main.rs b/rust/ql/test/query-tests/security/CWE-825/main.rs index 8d1f2a421469..d15f595e13c0 100644 --- a/rust/ql/test/query-tests/security/CWE-825/main.rs +++ b/rust/ql/test/query-tests/security/CWE-825/main.rs @@ -126,6 +126,11 @@ fn main() { println!("test_ptr_invalid:"); test_ptr_invalid(mode); + println!("test_ptr_invalid_conditions:"); + unsafe { + test_ptr_invalid_conditions(mode); + } + println!("test_drop:"); test_drop(); diff --git a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 5caae105914c..000000000000 --- a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,3 +0,0 @@ -multipleCallTargets -| request_forgery_tests.rs:30:36:30:52 | user_url.as_str() | -| request_forgery_tests.rs:30:36:30:52 | user_url.as_str() | diff --git a/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected b/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected index aa5003a0e9d3..0f931ed3a0f8 100644 --- a/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected +++ b/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected @@ -1,29 +1,20 @@ #select | request_forgery_tests.rs:8:24:8:35 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:8:24:8:35 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:8:24:8:35 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:8:24:8:35 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:17:25:17:36 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:17:25:17:36 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:21:25:21:36 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:21:25:21:36 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:25:25:25:36 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:25:25:25:36 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:31:29:31:40 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:29:31:40 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:31:29:31:40 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:29:31:40 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:37:37:37:48 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:37:37:48 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:37:37:37:48 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:37:37:48 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:68:28:68:39 | ...::get | request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:68:28:68:39 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:65:33:65:40 | and_then | user-provided value | | request_forgery_tests.rs:68:28:68:39 | ...::get | request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:68:28:68:39 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:65:33:65:40 | and_then | user-provided value | edges | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:8:38:8:45 | user_url | provenance | | -| request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:8:38:8:45 | user_url | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:16:27:16:49 | MacroExpr | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:20:27:20:57 | MacroExpr | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:24:27:24:70 | MacroExpr | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:43:31:50 | user_url | provenance | | -| request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:43:31:50 | user_url | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:51:37:58 | user_url | provenance | | -| request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:51:37:58 | user_url | provenance | | -| request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | request_forgery_tests.rs:8:24:8:35 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | request_forgery_tests.rs:8:24:8:35 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:8:38:8:45 | user_url | request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | provenance | | -| request_forgery_tests.rs:8:38:8:45 | user_url | request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | provenance | | | request_forgery_tests.rs:16:13:16:15 | url | request_forgery_tests.rs:17:39:17:41 | url | provenance | | | request_forgery_tests.rs:16:27:16:49 | ...::format(...) | request_forgery_tests.rs:16:27:16:49 | { ... } | provenance | | | request_forgery_tests.rs:16:27:16:49 | ...::must_use(...) | request_forgery_tests.rs:16:13:16:15 | url | provenance | | @@ -46,21 +37,13 @@ edges | request_forgery_tests.rs:25:38:25:41 | &url [&ref] | request_forgery_tests.rs:25:25:25:36 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:25:39:25:41 | url | request_forgery_tests.rs:25:38:25:41 | &url [&ref] | provenance | | | request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | request_forgery_tests.rs:31:29:31:40 | ...::get | provenance | MaD:1 Sink:MaD:1 | -| request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | request_forgery_tests.rs:31:29:31:40 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:31:43:31:50 | user_url | request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | provenance | | -| request_forgery_tests.rs:31:43:31:50 | user_url | request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | provenance | | -| request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | request_forgery_tests.rs:37:37:37:48 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | request_forgery_tests.rs:37:37:37:48 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:37:51:37:58 | user_url | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | provenance | | -| request_forgery_tests.rs:37:51:37:58 | user_url | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | provenance | | -| request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:65:49:65:57 | ...: String | provenance | Src:MaD:2 | | request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:65:49:65:57 | ...: String | provenance | Src:MaD:2 | | request_forgery_tests.rs:65:49:65:57 | ...: String | request_forgery_tests.rs:68:42:68:42 | a | provenance | | -| request_forgery_tests.rs:65:49:65:57 | ...: String | request_forgery_tests.rs:68:42:68:42 | a | provenance | | -| request_forgery_tests.rs:68:41:68:42 | &a [&ref] | request_forgery_tests.rs:68:28:68:39 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:68:41:68:42 | &a [&ref] | request_forgery_tests.rs:68:28:68:39 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:68:42:68:42 | a | request_forgery_tests.rs:68:41:68:42 | &a [&ref] | provenance | | -| request_forgery_tests.rs:68:42:68:42 | a | request_forgery_tests.rs:68:41:68:42 | &a [&ref] | provenance | | models | 1 | Sink: reqwest::get; Argument[0]; request-url | | 2 | Source: <_ as warp::filter::Filter>::and_then; Argument[0].Parameter[0..7]; remote | @@ -68,13 +51,9 @@ models | 4 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | request_forgery_tests.rs:5:29:5:36 | user_url | semmle.label | user_url | -| request_forgery_tests.rs:5:29:5:36 | user_url | semmle.label | user_url | | request_forgery_tests.rs:8:24:8:35 | ...::get | semmle.label | ...::get | -| request_forgery_tests.rs:8:24:8:35 | ...::get | semmle.label | ...::get | -| request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | semmle.label | &user_url [&ref] | | request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | semmle.label | &user_url [&ref] | | request_forgery_tests.rs:8:38:8:45 | user_url | semmle.label | user_url | -| request_forgery_tests.rs:8:38:8:45 | user_url | semmle.label | user_url | | request_forgery_tests.rs:16:13:16:15 | url | semmle.label | url | | request_forgery_tests.rs:16:27:16:49 | ...::format(...) | semmle.label | ...::format(...) | | request_forgery_tests.rs:16:27:16:49 | ...::must_use(...) | semmle.label | ...::must_use(...) | @@ -100,25 +79,14 @@ nodes | request_forgery_tests.rs:25:38:25:41 | &url [&ref] | semmle.label | &url [&ref] | | request_forgery_tests.rs:25:39:25:41 | url | semmle.label | url | | request_forgery_tests.rs:31:29:31:40 | ...::get | semmle.label | ...::get | -| request_forgery_tests.rs:31:29:31:40 | ...::get | semmle.label | ...::get | | request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | semmle.label | &user_url [&ref] | -| request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | semmle.label | &user_url [&ref] | -| request_forgery_tests.rs:31:43:31:50 | user_url | semmle.label | user_url | | request_forgery_tests.rs:31:43:31:50 | user_url | semmle.label | user_url | | request_forgery_tests.rs:37:37:37:48 | ...::get | semmle.label | ...::get | -| request_forgery_tests.rs:37:37:37:48 | ...::get | semmle.label | ...::get | -| request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | semmle.label | &user_url [&ref] | | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | semmle.label | &user_url [&ref] | | request_forgery_tests.rs:37:51:37:58 | user_url | semmle.label | user_url | -| request_forgery_tests.rs:37:51:37:58 | user_url | semmle.label | user_url | -| request_forgery_tests.rs:65:33:65:40 | and_then | semmle.label | and_then | | request_forgery_tests.rs:65:33:65:40 | and_then | semmle.label | and_then | | request_forgery_tests.rs:65:49:65:57 | ...: String | semmle.label | ...: String | -| request_forgery_tests.rs:65:49:65:57 | ...: String | semmle.label | ...: String | -| request_forgery_tests.rs:68:28:68:39 | ...::get | semmle.label | ...::get | | request_forgery_tests.rs:68:28:68:39 | ...::get | semmle.label | ...::get | | request_forgery_tests.rs:68:41:68:42 | &a [&ref] | semmle.label | &a [&ref] | -| request_forgery_tests.rs:68:41:68:42 | &a [&ref] | semmle.label | &a [&ref] | -| request_forgery_tests.rs:68:42:68:42 | a | semmle.label | a | | request_forgery_tests.rs:68:42:68:42 | a | semmle.label | a | subpaths diff --git a/rust/ql/test/query-tests/unusedentities/UnusedValue.expected b/rust/ql/test/query-tests/unusedentities/UnusedValue.expected index c5f0f59966cb..c52863616626 100644 --- a/rust/ql/test/query-tests/unusedentities/UnusedValue.expected +++ b/rust/ql/test/query-tests/unusedentities/UnusedValue.expected @@ -15,8 +15,10 @@ | main.rs:322:12:322:12 | j | Variable $@ is assigned a value that is never used. | main.rs:322:12:322:12 | j | j | | main.rs:382:9:382:9 | x | Variable $@ is assigned a value that is never used. | main.rs:382:9:382:9 | x | x | | main.rs:390:17:390:17 | x | Variable $@ is assigned a value that is never used. | main.rs:390:17:390:17 | x | x | -| main.rs:536:9:536:20 | var_in_macro | Variable $@ is assigned a value that is never used. | main.rs:536:9:536:20 | var_in_macro | var_in_macro | -| main.rs:545:9:545:9 | c | Variable $@ is assigned a value that is never used. | main.rs:545:9:545:9 | c | c | +| main.rs:491:16:491:16 | a | Variable $@ is assigned a value that is never used. | main.rs:489:9:489:9 | a | a | +| main.rs:516:41:516:41 | x | Variable $@ is assigned a value that is never used. | main.rs:515:9:515:9 | x | x | +| main.rs:530:9:530:20 | var_in_macro | Variable $@ is assigned a value that is never used. | main.rs:530:9:530:20 | var_in_macro | var_in_macro | +| main.rs:539:9:539:9 | c | Variable $@ is assigned a value that is never used. | main.rs:539:9:539:9 | c | c | | more.rs:44:9:44:14 | a_ptr4 | Variable $@ is assigned a value that is never used. | more.rs:44:9:44:14 | a_ptr4 | a_ptr4 | | more.rs:59:9:59:13 | d_ptr | Variable $@ is assigned a value that is never used. | more.rs:59:9:59:13 | d_ptr | d_ptr | | more.rs:65:13:65:17 | f_ptr | Variable $@ is assigned a value that is never used. | more.rs:65:13:65:17 | f_ptr | f_ptr | diff --git a/rust/ql/test/query-tests/unusedentities/main.rs b/rust/ql/test/query-tests/unusedentities/main.rs index 01b7cc14bc8c..a08a05a83bde 100644 --- a/rust/ql/test/query-tests/unusedentities/main.rs +++ b/rust/ql/test/query-tests/unusedentities/main.rs @@ -488,7 +488,7 @@ macro_rules! use_value { fn macros1() { let a: u16; let b: u16 = 2; - set_value!(a, 1); + set_value!(a, 1); // $ Alert[rust/unused-value] use_value!(b); match std::env::args().nth(1).unwrap().parse::() { @@ -513,13 +513,7 @@ fn macros2() { fn macros3() { let x; - println!( - "The value of x is {}", - ({ - x = 10; // $ MISSING: Alert[rust/unused-value] - 10 - }) - ); + println!("The value of x is {}", ({ x = 10; 10 })); // $ Alert[rust/unused-value] } macro_rules! let_in_macro { diff --git a/rust/tools/builtins/mentions.rs b/rust/tools/builtins/mentions.rs new file mode 100644 index 000000000000..a3731164893b --- /dev/null +++ b/rust/tools/builtins/mentions.rs @@ -0,0 +1,6 @@ +// Type mentions required by type inference + +use std::future::Future; +fn mention_dyn_future(f: &dyn Future) {} + +fn mention_dyn_fn_once(f: &dyn FnOnce() -> F) {} diff --git a/rust/tools/builtins/types.rs b/rust/tools/builtins/types.rs index 91989b5262b5..fc0be525ab44 100644 --- a/rust/tools/builtins/types.rs +++ b/rust/tools/builtins/types.rs @@ -23,3 +23,50 @@ pub struct isize; // floating-point types pub struct f32; pub struct f64; + +struct Slice; +struct Array; +struct Ref; +struct RefMut; +struct Ptr; +struct PtrMut; + +// tuples +struct Tuple0; +struct Tuple1(T0); +struct Tuple2(T0, T1); +struct Tuple3(T0, T1, T2); +struct Tuple4(T0, T1, T2, T3); +struct Tuple5(T0, T1, T2, T3, T4); +struct Tuple6(T0, T1, T2, T3, T4, T5); +struct Tuple7(T0, T1, T2, T3, T4, T5, T6); +struct Tuple8(T0, T1, T2, T3, T4, T5, T6, T7); +struct Tuple9(T0, T1, T2, T3, T4, T5, T6, T7, T8); +struct Tuple10(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9); +struct Tuple11( + T0, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, +); +struct Tuple12( + T0, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, +); diff --git a/shared/concepts/CHANGELOG.md b/shared/concepts/CHANGELOG.md index 4d0898b90e46..e2c7978d2b6c 100644 --- a/shared/concepts/CHANGELOG.md +++ b/shared/concepts/CHANGELOG.md @@ -1,3 +1,19 @@ +## 0.0.12 + +No user-facing changes. + +## 0.0.11 + +No user-facing changes. + +## 0.0.10 + +No user-facing changes. + +## 0.0.9 + +No user-facing changes. + ## 0.0.8 No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.10.md b/shared/concepts/change-notes/released/0.0.10.md new file mode 100644 index 000000000000..22391080fd45 --- /dev/null +++ b/shared/concepts/change-notes/released/0.0.10.md @@ -0,0 +1,3 @@ +## 0.0.10 + +No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.11.md b/shared/concepts/change-notes/released/0.0.11.md new file mode 100644 index 000000000000..19a2a55bd685 --- /dev/null +++ b/shared/concepts/change-notes/released/0.0.11.md @@ -0,0 +1,3 @@ +## 0.0.11 + +No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.12.md b/shared/concepts/change-notes/released/0.0.12.md new file mode 100644 index 000000000000..0e206033bc47 --- /dev/null +++ b/shared/concepts/change-notes/released/0.0.12.md @@ -0,0 +1,3 @@ +## 0.0.12 + +No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.9.md b/shared/concepts/change-notes/released/0.0.9.md new file mode 100644 index 000000000000..c9e17c6d6cf2 --- /dev/null +++ b/shared/concepts/change-notes/released/0.0.9.md @@ -0,0 +1,3 @@ +## 0.0.9 + +No user-facing changes. diff --git a/shared/concepts/codeql-pack.release.yml b/shared/concepts/codeql-pack.release.yml index 58fdc6b45deb..997fb8da83cd 100644 --- a/shared/concepts/codeql-pack.release.yml +++ b/shared/concepts/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.8 +lastReleaseVersion: 0.0.12 diff --git a/shared/concepts/codeql/concepts/internal/CryptoAlgorithmNames.qll b/shared/concepts/codeql/concepts/internal/CryptoAlgorithmNames.qll index efcd870c724a..86392890cafb 100644 --- a/shared/concepts/codeql/concepts/internal/CryptoAlgorithmNames.qll +++ b/shared/concepts/codeql/concepts/internal/CryptoAlgorithmNames.qll @@ -23,7 +23,8 @@ predicate isStrongHashingAlgorithm(string name) { "BLAKE3", // "DSA", "ED25519", "ES256", "ECDSA256", "ES384", "ECDSA384", "ES512", "ECDSA512", "SHA2", - "SHA224", "SHA256", "SHA384", "SHA512", "SHA3", "SHA3224", "SHA3256", "SHA3384", "SHA3512", + "SHA224", "SHA256", "SHA384", "SHA512", "SHA512224", "SHA512256", "SHA3", "SHA3224", + "SHA3256", "SHA3384", "SHA3512", // see https://cryptography.io/en/latest/hazmat/primitives/cryptographic-hashes/#cryptography.hazmat.primitives.hashes.SHAKE128 "SHAKE128", "SHAKE256", // see https://cryptography.io/en/latest/hazmat/primitives/cryptographic-hashes/#sm3 diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index a9fd8ce78e75..9563fa88a75e 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.8 +version: 0.0.12 groups: shared library: true dependencies: diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index c5b9b9d696ab..523f7667b246 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,19 @@ +## 2.0.22 + +No user-facing changes. + +## 2.0.21 + +No user-facing changes. + +## 2.0.20 + +No user-facing changes. + +## 2.0.19 + +No user-facing changes. + ## 2.0.18 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.19.md b/shared/controlflow/change-notes/released/2.0.19.md new file mode 100644 index 000000000000..b37b6798b125 --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.19.md @@ -0,0 +1,3 @@ +## 2.0.19 + +No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.20.md b/shared/controlflow/change-notes/released/2.0.20.md new file mode 100644 index 000000000000..6756bd5f6c18 --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.20.md @@ -0,0 +1,3 @@ +## 2.0.20 + +No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.21.md b/shared/controlflow/change-notes/released/2.0.21.md new file mode 100644 index 000000000000..bdc5029b70b1 --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.21.md @@ -0,0 +1,3 @@ +## 2.0.21 + +No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.22.md b/shared/controlflow/change-notes/released/2.0.22.md new file mode 100644 index 000000000000..8a2611adad2d --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.22.md @@ -0,0 +1,3 @@ +## 2.0.22 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 16342205c738..980bdfe195ba 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.18 +lastReleaseVersion: 2.0.22 diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll index 17aee2a7caee..c0d07278b9a8 100644 --- a/shared/controlflow/codeql/controlflow/Guards.qll +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -926,6 +926,9 @@ module Make< guardControls(g0, v0, tgtGuard, tgtVal) and additionalImpliesStep(g0, v0, guard, v) ) + or + baseGuardValue(tgtGuard, tgtVal) and + disjunctiveGuardControls(guard, v, tgtGuard, tgtVal) } /** @@ -1003,11 +1006,111 @@ module Make< ) } + private import DisjunctiveGuard + + private module DisjunctiveGuard { + /** + * Holds if `disjunction` evaluating to `val` means that either + * `disjunct1` or `disjunct2` is `val`. + */ + private predicate disjunction( + Guard disjunction, GuardValue val, Guard disjunct1, Guard disjunct2 + ) { + 2 = + strictcount(Guard op | + disjunction.(OrExpr).getAnOperand() = op or disjunction.(AndExpr).getAnOperand() = op + ) and + disjunct1 != disjunct2 and + ( + exists(OrExpr d | d = disjunction | + d.getAnOperand() = disjunct1 and + d.getAnOperand() = disjunct2 and + val.asBooleanValue() = true + ) + or + exists(AndExpr d | d = disjunction | + d.getAnOperand() = disjunct1 and + d.getAnOperand() = disjunct2 and + val.asBooleanValue() = false + ) + ) + } + + private predicate disjunct(Guard guard, GuardValue val) { disjunction(_, val, guard, _) } + + module DisjunctImplies = ImpliesTC; + + /** + * Holds if one of the disjuncts in `disjunction` evaluating to `dv` implies that `def` + * evaluates to `v`. The other disjunct is `otherDisjunct`. + */ + pragma[nomagic] + private predicate ssaControlsDisjunct( + SsaDefinition def, GuardValue v, Guard disjunction, Guard otherDisjunct, GuardValue dv + ) { + exists(Guard disjunct | + disjunction(disjunction, dv, disjunct, otherDisjunct) and + DisjunctImplies::ssaControls(def, v, disjunct, dv) + ) + } + + /** + * Holds if the disjunction of `def` evaluating to `v` and + * `otherDisjunct` evaluating to `dv` controls `bb`. + */ + pragma[nomagic] + private predicate ssaDisjunctionControls( + SsaDefinition def, GuardValue v, Guard otherDisjunct, GuardValue dv, BasicBlock bb + ) { + exists(Guard disjunction | + ssaControlsDisjunct(def, v, disjunction, otherDisjunct, dv) and + disjunction.valueControls(bb, dv) + ) + } + + /** + * Holds if `tgtGuard` evaluating to `tgtVal` implies that `def` + * evaluates to `v`. The basic block of `tgtGuard` is `bb`. + */ + pragma[nomagic] + private predicate ssaControlsGuard( + SsaDefinition def, GuardValue v, Guard tgtGuard, GuardValue tgtVal, BasicBlock bb + ) { + ( + BranchImplies::ssaControls(def, v, tgtGuard, tgtVal) or + WrapperGuard::ReturnImplies::ssaControls(def, v, tgtGuard, tgtVal) + ) and + tgtGuard.getBasicBlock() = bb + } + + /** + * Holds if `tgtGuard` evaluating to `tgtVal` implies that `guard` + * evaluates to `v`. + */ + pragma[nomagic] + predicate disjunctiveGuardControls( + Guard guard, GuardValue v, Guard tgtGuard, GuardValue tgtVal + ) { + exists(SsaDefinition def, GuardValue v1, GuardValue v2, BasicBlock bb | + // If `def==v1 || guard==v` controls `bb`, + ssaDisjunctionControls(def, v1, guard, v, bb) and + // and `tgtGuard==tgtVal` in `bb` implies `def==v2`, + ssaControlsGuard(def, v2, tgtGuard, tgtVal, bb) and + // and `v1` and `v2` are disjoint, + disjointValues(v1, v2) + // then assuming `tgtGuard==tgtVal` it follows that `def` cannot be `v1` + // and therefore we must have `guard==v`. + ) + } + } + /** * Provides an implementation of guard implication logic for guard * wrappers. */ private module WrapperGuard { + private import codeql.util.DenseRank + final private class FinalExpr = Expr; class ReturnExpr extends FinalExpr { @@ -1019,21 +1122,59 @@ module Make< BasicBlock getBasicBlock() { result = super.getBasicBlock() } } + private module DenseRankInput implements DenseRankInputSig1 { + class C = NonOverridableMethod; + + class Ranked = ReturnExpr; + + int getRank(NonOverridableMethod m, ReturnExpr ret) { + m.getAReturnExpr() = ret and + result = ret.getLocation().getStartLine() + } + } + + private module ReturnExprRank = DenseRank1; + + private predicate rankedReturnExpr = ReturnExprRank::denseRank/2; + + private int maxRank(NonOverridableMethod m) { + result = max(int rnk | exists(rankedReturnExpr(m, rnk))) + } + private predicate relevantCallValue(NonOverridableMethodCall call, GuardValue val) { BranchImplies::guardControls(call, val, _, _) or - ReturnImplies::guardControls(call, val, _, _) + ReturnImplies::guardControls(call, val, _, _) or + DisjunctImplies::guardControls(call, val, _, _) } - predicate relevantReturnValue(NonOverridableMethod m, GuardValue val) { + /** + * Holds if a call to `m` having a return value of `retval` is reachable + * by a chain of implications. + */ + predicate relevantReturnValue(NonOverridableMethod m, GuardValue retval) { exists(NonOverridableMethodCall call | - relevantCallValue(call, val) and + relevantCallValue(call, retval) and call.getMethod() = m and - not val instanceof TException + not retval instanceof TException + ) + } + + /** + * Holds if a call to `m` having a return value of `retval` is reachable + * by a chain of implications, and `ret` is a return expression in `m` + * that could possibly have the value `retval`. + */ + predicate relevantReturnExprValue(NonOverridableMethod m, ReturnExpr ret, GuardValue retval) { + relevantReturnValue(m, retval) and + ret = m.getAReturnExpr() and + not exists(GuardValue notRetval | + exprHasValue(ret, notRetval) and + disjointValues(notRetval, retval) ) } private predicate returnGuard(Guard guard, GuardValue val) { - relevantReturnValue(guard.(ReturnExpr).getMethod(), val) + relevantReturnExprValue(_, guard, val) } module ReturnImplies = ImpliesTC; @@ -1043,28 +1184,58 @@ module Make< guard.directlyValueControls(ret.getBasicBlock(), val) } + private predicate parameterControlsReturnExpr( + SsaParameterInit param, GuardValue val, ReturnExpr ret + ) { + exists(Guard g0, GuardValue v0 | + directlyControlsReturn(g0, v0, ret) and + BranchImplies::ssaControls(param, val, g0, v0) + ) + } + /** * Holds if `ret` is a return expression in a non-overridable method that * on a return value of `retval` allows the conclusion that the `ppos`th * parameter has the value `val`. */ private predicate validReturnInCustomGuard( - ReturnExpr ret, ParameterPosition ppos, GuardValue retval, GuardValue val + ReturnExpr ret, int rnk, NonOverridableMethod m, ParameterPosition ppos, GuardValue retval, + GuardValue val ) { - exists(NonOverridableMethod m, SsaParameterInit param | - m.getAReturnExpr() = ret and + exists(SsaParameterInit param | + ret = rankedReturnExpr(m, rnk) and param.getParameter() = m.getParameter(ppos) | - exists(Guard g0, GuardValue v0 | - directlyControlsReturn(g0, v0, ret) and - BranchImplies::ssaControls(param, val, g0, v0) and - relevantReturnValue(m, retval) - ) + parameterControlsReturnExpr(param, val, ret) and + relevantReturnExprValue(m, ret, retval) or ReturnImplies::ssaControls(param, val, ret, retval) ) } + private predicate validReturnInCustomGuardToRank( + int rnk, NonOverridableMethod m, ParameterPosition ppos, GuardValue retval, GuardValue val + ) { + // The forall-range has been pushed all the way into + // `relevantReturnExprValue` and `validReturnInCustomGuard`. This means + // that this base case ensures that at least one return expression + // non-vacuously satisfies that it's a valid implication from return + // value to parameter value. + validReturnInCustomGuard(_, _, m, ppos, retval, val) and rnk = 0 + or + validReturnInCustomGuardToRank(rnk - 1, m, ppos, retval, val) and + rnk <= maxRank(m) and + forall(ReturnExpr ret | + ret = rankedReturnExpr(m, rnk) and + not exists(GuardValue notRetval | + exprHasValue(ret, notRetval) and + disjointValues(notRetval, retval) + ) + | + validReturnInCustomGuard(ret, rnk, m, ppos, retval, val) + ) + } + private predicate guardDirectlyControlsExit(Guard guard, GuardValue val) { exists(BasicBlock bb | guard.directlyValueControls(bb, val) and @@ -1080,15 +1251,7 @@ module Make< private NonOverridableMethod wrapperGuard( ParameterPosition ppos, GuardValue retval, GuardValue val ) { - forex(ReturnExpr ret | - result.getAReturnExpr() = ret and - not exists(GuardValue notRetval | - exprHasValue(ret, notRetval) and - disjointValues(notRetval, retval) - ) - | - validReturnInCustomGuard(ret, ppos, retval, val) - ) + validReturnInCustomGuardToRank(maxRank(result), result, ppos, retval, val) or exists(SsaParameterInit param, Guard g0, GuardValue v0 | param.getParameter() = result.getParameter(ppos) and @@ -1166,7 +1329,7 @@ module Make< guardChecksDef(guard, param, val, state) | guard.valueControls(ret.getBasicBlock(), val) and - relevantReturnValue(m, retval) + relevantReturnExprValue(m, ret, retval) or ReturnImplies::guardControls(guard, val, ret, retval) ) diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 565ff51c42bb..6235f8a94159 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.18 +version: 2.0.22 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index f963117ea88f..8ade6c20ef42 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,19 @@ +## 2.0.22 + +No user-facing changes. + +## 2.0.21 + +No user-facing changes. + +## 2.0.20 + +No user-facing changes. + +## 2.0.19 + +No user-facing changes. + ## 2.0.18 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.0.19.md b/shared/dataflow/change-notes/released/2.0.19.md new file mode 100644 index 000000000000..b37b6798b125 --- /dev/null +++ b/shared/dataflow/change-notes/released/2.0.19.md @@ -0,0 +1,3 @@ +## 2.0.19 + +No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.0.20.md b/shared/dataflow/change-notes/released/2.0.20.md new file mode 100644 index 000000000000..6756bd5f6c18 --- /dev/null +++ b/shared/dataflow/change-notes/released/2.0.20.md @@ -0,0 +1,3 @@ +## 2.0.20 + +No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.0.21.md b/shared/dataflow/change-notes/released/2.0.21.md new file mode 100644 index 000000000000..bdc5029b70b1 --- /dev/null +++ b/shared/dataflow/change-notes/released/2.0.21.md @@ -0,0 +1,3 @@ +## 2.0.21 + +No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.0.22.md b/shared/dataflow/change-notes/released/2.0.22.md new file mode 100644 index 000000000000..8a2611adad2d --- /dev/null +++ b/shared/dataflow/change-notes/released/2.0.22.md @@ -0,0 +1,3 @@ +## 2.0.22 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 16342205c738..980bdfe195ba 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.18 +lastReleaseVersion: 2.0.22 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 75920f8f5a0a..f48e193d0e0b 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.18 +version: 2.0.22 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index b0b444f8c414..27e5fb03dfa7 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.0.38 + +No user-facing changes. + +## 1.0.37 + +No user-facing changes. + +## 1.0.36 + +No user-facing changes. + +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.35.md b/shared/mad/change-notes/released/1.0.35.md new file mode 100644 index 000000000000..c539ed2d3b13 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.36.md b/shared/mad/change-notes/released/1.0.36.md new file mode 100644 index 000000000000..6cefe97d8b80 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.36.md @@ -0,0 +1,3 @@ +## 1.0.36 + +No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.37.md b/shared/mad/change-notes/released/1.0.37.md new file mode 100644 index 000000000000..505bacf104d6 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.37.md @@ -0,0 +1,3 @@ +## 1.0.37 + +No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.38.md b/shared/mad/change-notes/released/1.0.38.md new file mode 100644 index 000000000000..2c984549c5fb --- /dev/null +++ b/shared/mad/change-notes/released/1.0.38.md @@ -0,0 +1,3 @@ +## 1.0.38 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index b736654032cf..b14e9763a8d4 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.38 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 290eedf639c3..e68fc9cacc0d 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.34 +version: 1.0.38 groups: shared library: true dependencies: diff --git a/shared/quantum/CHANGELOG.md b/shared/quantum/CHANGELOG.md index 83a42fb05515..28235d47f61f 100644 --- a/shared/quantum/CHANGELOG.md +++ b/shared/quantum/CHANGELOG.md @@ -1,3 +1,19 @@ +## 0.0.16 + +No user-facing changes. + +## 0.0.15 + +No user-facing changes. + +## 0.0.14 + +No user-facing changes. + +## 0.0.13 + +No user-facing changes. + ## 0.0.12 No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.13.md b/shared/quantum/change-notes/released/0.0.13.md new file mode 100644 index 000000000000..f679eaf0313a --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.13.md @@ -0,0 +1,3 @@ +## 0.0.13 + +No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.14.md b/shared/quantum/change-notes/released/0.0.14.md new file mode 100644 index 000000000000..63b4d50ca454 --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.14.md @@ -0,0 +1,3 @@ +## 0.0.14 + +No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.15.md b/shared/quantum/change-notes/released/0.0.15.md new file mode 100644 index 000000000000..7af9c05f23fb --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.15.md @@ -0,0 +1,3 @@ +## 0.0.15 + +No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.16.md b/shared/quantum/change-notes/released/0.0.16.md new file mode 100644 index 000000000000..62b5521ea013 --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.16.md @@ -0,0 +1,3 @@ +## 0.0.16 + +No user-facing changes. diff --git a/shared/quantum/codeql-pack.release.yml b/shared/quantum/codeql-pack.release.yml index 997fb8da83cd..a49f7be4cff3 100644 --- a/shared/quantum/codeql-pack.release.yml +++ b/shared/quantum/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.12 +lastReleaseVersion: 0.0.16 diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 8aaa96a86306..292c5e71a4c1 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.12 +version: 0.0.16 groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 640d26270e1f..c1a36a57de39 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.0.38 + +No user-facing changes. + +## 1.0.37 + +No user-facing changes. + +## 1.0.36 + +No user-facing changes. + +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.35.md b/shared/rangeanalysis/change-notes/released/1.0.35.md new file mode 100644 index 000000000000..c539ed2d3b13 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.36.md b/shared/rangeanalysis/change-notes/released/1.0.36.md new file mode 100644 index 000000000000..6cefe97d8b80 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.36.md @@ -0,0 +1,3 @@ +## 1.0.36 + +No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.37.md b/shared/rangeanalysis/change-notes/released/1.0.37.md new file mode 100644 index 000000000000..505bacf104d6 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.37.md @@ -0,0 +1,3 @@ +## 1.0.37 + +No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.38.md b/shared/rangeanalysis/change-notes/released/1.0.38.md new file mode 100644 index 000000000000..2c984549c5fb --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.38.md @@ -0,0 +1,3 @@ +## 1.0.38 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index b736654032cf..b14e9763a8d4 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.38 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 2769814d3e33..7274389d4946 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.34 +version: 1.0.38 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 1e3fb3c306c9..0002bcde38e0 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.0.38 + +No user-facing changes. + +## 1.0.37 + +No user-facing changes. + +## 1.0.36 + +No user-facing changes. + +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.35.md b/shared/regex/change-notes/released/1.0.35.md new file mode 100644 index 000000000000..c539ed2d3b13 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.36.md b/shared/regex/change-notes/released/1.0.36.md new file mode 100644 index 000000000000..6cefe97d8b80 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.36.md @@ -0,0 +1,3 @@ +## 1.0.36 + +No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.37.md b/shared/regex/change-notes/released/1.0.37.md new file mode 100644 index 000000000000..505bacf104d6 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.37.md @@ -0,0 +1,3 @@ +## 1.0.37 + +No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.38.md b/shared/regex/change-notes/released/1.0.38.md new file mode 100644 index 000000000000..2c984549c5fb --- /dev/null +++ b/shared/regex/change-notes/released/1.0.38.md @@ -0,0 +1,3 @@ +## 1.0.38 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index b736654032cf..b14e9763a8d4 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.38 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index f06235bc4d31..863bbd2cec45 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.34 +version: 1.0.38 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 2d8087cd96c8..1dfec3daacc1 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,19 @@ +## 2.0.14 + +No user-facing changes. + +## 2.0.13 + +No user-facing changes. + +## 2.0.12 + +No user-facing changes. + +## 2.0.11 + +No user-facing changes. + ## 2.0.10 No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.11.md b/shared/ssa/change-notes/released/2.0.11.md new file mode 100644 index 000000000000..b3d110bcba50 --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.11.md @@ -0,0 +1,3 @@ +## 2.0.11 + +No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.12.md b/shared/ssa/change-notes/released/2.0.12.md new file mode 100644 index 000000000000..c93809466de8 --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.12.md @@ -0,0 +1,3 @@ +## 2.0.12 + +No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.13.md b/shared/ssa/change-notes/released/2.0.13.md new file mode 100644 index 000000000000..39a24682b500 --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.13.md @@ -0,0 +1,3 @@ +## 2.0.13 + +No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.14.md b/shared/ssa/change-notes/released/2.0.14.md new file mode 100644 index 000000000000..13190ad53e34 --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.14.md @@ -0,0 +1,3 @@ +## 2.0.14 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index 96ea0220a690..23aa0864b298 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.10 +lastReleaseVersion: 2.0.14 diff --git a/shared/ssa/codeql/ssa/Ssa.qll b/shared/ssa/codeql/ssa/Ssa.qll index 5edf51127b8e..26f3d9f97719 100644 --- a/shared/ssa/codeql/ssa/Ssa.qll +++ b/shared/ssa/codeql/ssa/Ssa.qll @@ -1617,6 +1617,9 @@ module Make< /** A static single assignment (SSA) definition. */ class SsaDefinition extends FinalDefinition { + /** Gets a textual representation of this SSA definition. */ + string toString() { result = super.toString() } + /** * Gets the control flow node of this SSA definition. * @@ -1708,6 +1711,8 @@ module Make< class SsaParameterInit extends SsaExplicitWrite { SsaParameterInit() { parameterInit(this, _) } + override string toString() { result = "SSA param(" + this.getSourceVariable() + ")" } + /** * Gets the parameter that this definition represents. This is equivalent * to `getDefinition().isParameterInit(result)` @@ -1725,6 +1730,8 @@ module Make< */ class SsaImplicitWrite extends SsaWriteDefinition { SsaImplicitWrite() { not explicitWrite(this, _) } + + override string toString() { result = "SSA implicit def(" + this.getSourceVariable() + ")" } } /** @@ -1734,6 +1741,8 @@ module Make< */ class SsaImplicitEntryDefinition extends SsaImplicitWrite { SsaImplicitEntryDefinition() { this.definesAt(_, any(EntryBasicBlock bb), -1) } + + override string toString() { result = "SSA entry def(" + this.getSourceVariable() + ")" } } /** An SSA definition that represents an uncertain variable update. */ @@ -1761,7 +1770,7 @@ module Make< * ``` * a phi definition for `x` is inserted just before the call `puts x`. */ - class SsaPhiDefinition extends SsaDefinition { + class SsaPhiDefinition extends SsaDefinition instanceof PhiNode { /** Holds if `inp` is an input to this phi definition along the edge originating in `bb`. */ predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb) { phiHasInputFromBlockCached(this, inp, bb) diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index dcf19c605a17..0c98b21ac8c1 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.10 +version: 2.0.14 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index 870695d684ce..002730472533 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.0.38 + +No user-facing changes. + +## 1.0.37 + +No user-facing changes. + +## 1.0.36 + +No user-facing changes. + +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.35.md b/shared/threat-models/change-notes/released/1.0.35.md new file mode 100644 index 000000000000..c539ed2d3b13 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.36.md b/shared/threat-models/change-notes/released/1.0.36.md new file mode 100644 index 000000000000..6cefe97d8b80 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.36.md @@ -0,0 +1,3 @@ +## 1.0.36 + +No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.37.md b/shared/threat-models/change-notes/released/1.0.37.md new file mode 100644 index 000000000000..505bacf104d6 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.37.md @@ -0,0 +1,3 @@ +## 1.0.37 + +No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.38.md b/shared/threat-models/change-notes/released/1.0.38.md new file mode 100644 index 000000000000..2c984549c5fb --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.38.md @@ -0,0 +1,3 @@ +## 1.0.38 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index b736654032cf..b14e9763a8d4 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.38 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 48d215a1d9a3..4b0a24349a50 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.34 +version: 1.0.38 library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 23fd78f42e58..ad2c71497db8 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.0.38 + +No user-facing changes. + +## 1.0.37 + +No user-facing changes. + +## 1.0.36 + +No user-facing changes. + +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.35.md b/shared/tutorial/change-notes/released/1.0.35.md new file mode 100644 index 000000000000..c539ed2d3b13 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.36.md b/shared/tutorial/change-notes/released/1.0.36.md new file mode 100644 index 000000000000..6cefe97d8b80 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.36.md @@ -0,0 +1,3 @@ +## 1.0.36 + +No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.37.md b/shared/tutorial/change-notes/released/1.0.37.md new file mode 100644 index 000000000000..505bacf104d6 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.37.md @@ -0,0 +1,3 @@ +## 1.0.37 + +No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.38.md b/shared/tutorial/change-notes/released/1.0.38.md new file mode 100644 index 000000000000..2c984549c5fb --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.38.md @@ -0,0 +1,3 @@ +## 1.0.38 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index b736654032cf..b14e9763a8d4 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.38 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 51e6e2a59848..ad3ab5d1e368 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 1.0.34 +version: 1.0.38 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/CHANGELOG.md b/shared/typeflow/CHANGELOG.md index d95faf698642..38e81a0275d8 100644 --- a/shared/typeflow/CHANGELOG.md +++ b/shared/typeflow/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.0.38 + +No user-facing changes. + +## 1.0.37 + +No user-facing changes. + +## 1.0.36 + +No user-facing changes. + +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.35.md b/shared/typeflow/change-notes/released/1.0.35.md new file mode 100644 index 000000000000..c539ed2d3b13 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.36.md b/shared/typeflow/change-notes/released/1.0.36.md new file mode 100644 index 000000000000..6cefe97d8b80 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.36.md @@ -0,0 +1,3 @@ +## 1.0.36 + +No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.37.md b/shared/typeflow/change-notes/released/1.0.37.md new file mode 100644 index 000000000000..505bacf104d6 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.37.md @@ -0,0 +1,3 @@ +## 1.0.37 + +No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.38.md b/shared/typeflow/change-notes/released/1.0.38.md new file mode 100644 index 000000000000..2c984549c5fb --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.38.md @@ -0,0 +1,3 @@ +## 1.0.38 + +No user-facing changes. diff --git a/shared/typeflow/codeql-pack.release.yml b/shared/typeflow/codeql-pack.release.yml index b736654032cf..b14e9763a8d4 100644 --- a/shared/typeflow/codeql-pack.release.yml +++ b/shared/typeflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.38 diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 6c01f40eff65..7aae5aa639db 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.34 +version: 1.0.38 groups: shared library: true dependencies: diff --git a/shared/typeinference/CHANGELOG.md b/shared/typeinference/CHANGELOG.md index 4f4b3189bb41..d5252bfc0c4f 100644 --- a/shared/typeinference/CHANGELOG.md +++ b/shared/typeinference/CHANGELOG.md @@ -1,3 +1,19 @@ +## 0.0.19 + +No user-facing changes. + +## 0.0.18 + +No user-facing changes. + +## 0.0.17 + +No user-facing changes. + +## 0.0.16 + +No user-facing changes. + ## 0.0.15 No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.16.md b/shared/typeinference/change-notes/released/0.0.16.md new file mode 100644 index 000000000000..62b5521ea013 --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.16.md @@ -0,0 +1,3 @@ +## 0.0.16 + +No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.17.md b/shared/typeinference/change-notes/released/0.0.17.md new file mode 100644 index 000000000000..62cc89030a62 --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.17.md @@ -0,0 +1,3 @@ +## 0.0.17 + +No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.18.md b/shared/typeinference/change-notes/released/0.0.18.md new file mode 100644 index 000000000000..86c60b8abe73 --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.18.md @@ -0,0 +1,3 @@ +## 0.0.18 + +No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.19.md b/shared/typeinference/change-notes/released/0.0.19.md new file mode 100644 index 000000000000..914e4c9074d1 --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.19.md @@ -0,0 +1,3 @@ +## 0.0.19 + +No user-facing changes. diff --git a/shared/typeinference/codeql-pack.release.yml b/shared/typeinference/codeql-pack.release.yml index dff35216fc69..f406319f372e 100644 --- a/shared/typeinference/codeql-pack.release.yml +++ b/shared/typeinference/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.15 +lastReleaseVersion: 0.0.19 diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index a827ef3cd792..bf107c7d3f55 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -449,7 +449,9 @@ module Make1 Input1> { * - `abs` is a type abstraction that introduces type variables that are * free in `condition` and `constraint`, * - and for every instantiation of the type parameters from `abs` the - * resulting `condition` satisifies the constraint given by `constraint`. + * resulting `condition` satisfies the constraint given by `constraint`. + * - `transitive` corresponds to whether any further constraints satisfied + * through `constraint` should also apply to `condition`. * * Example in C#: * ```csharp @@ -487,7 +489,7 @@ module Make1 Input1> { * should be empty. */ predicate conditionSatisfiesConstraint( - TypeAbstraction abs, TypeMention condition, TypeMention constraint + TypeAbstraction abs, TypeMention condition, TypeMention constraint, boolean transitive ); } @@ -578,7 +580,7 @@ module Make1 Input1> { } pragma[nomagic] - private predicate satisfiesConcreteTypesFromIndex( + private predicate satisfiesConcreteTypesToIndex( App app, TypeAbstraction abs, Constraint constraint, int i ) { exists(Type t, TypePath path | @@ -586,13 +588,13 @@ module Make1 Input1> { if t = abs.getATypeParameter() then any() else app.getTypeAt(path) = t ) and // Recurse unless we are at the first path - if i = 0 then any() else satisfiesConcreteTypesFromIndex(app, abs, constraint, i - 1) + if i = 0 then any() else satisfiesConcreteTypesToIndex(app, abs, constraint, i - 1) } /** Holds if all the concrete types in `constraint` also occur in `app`. */ pragma[nomagic] private predicate satisfiesConcreteTypes(App app, TypeAbstraction abs, Constraint constraint) { - satisfiesConcreteTypesFromIndex(app, abs, constraint, + satisfiesConcreteTypesToIndex(app, abs, constraint, max(int i | exists(getNthPath(constraint, i)))) } @@ -620,7 +622,7 @@ module Make1 Input1> { } pragma[nomagic] - private predicate typeParametersEqualFromIndexBase( + private predicate typeParametersEqualToIndexBase( App app, TypeAbstraction abs, Constraint constraint, TypeParameter tp, TypePath path ) { path = getNthTypeParameterPath(constraint, tp, 0) and @@ -630,15 +632,15 @@ module Make1 Input1> { } pragma[nomagic] - private predicate typeParametersEqualFromIndex( + private predicate typeParametersEqualToIndex( App app, TypeAbstraction abs, Constraint constraint, TypeParameter tp, Type t, int i ) { exists(TypePath path | t = app.getTypeAt(path) and if i = 0 - then typeParametersEqualFromIndexBase(app, abs, constraint, tp, path) + then typeParametersEqualToIndexBase(app, abs, constraint, tp, path) else ( - typeParametersEqualFromIndex(app, abs, constraint, tp, t, i - 1) and + typeParametersEqualToIndex(app, abs, constraint, tp, t, i - 1) and path = getNthTypeParameterPath(constraint, tp, i) ) ) @@ -655,19 +657,19 @@ module Make1 Input1> { exists(int n | n = max(int i | exists(getNthTypeParameterPath(constraint, tp, i))) | // If the largest index is 0, then there are no equalities to check as // the type parameter only occurs once. - if n = 0 then any() else typeParametersEqualFromIndex(app, abs, constraint, tp, _, n) + if n = 0 then any() else typeParametersEqualToIndex(app, abs, constraint, tp, _, n) ) ) } - private predicate typeParametersHaveEqualInstantiationFromIndex( + private predicate typeParametersHaveEqualInstantiationToIndex( App app, TypeAbstraction abs, Constraint constraint, int i ) { exists(TypeParameter tp | tp = getNthTypeParameter(abs, i) | typeParametersEqual(app, abs, constraint, tp) and if i = 0 then any() - else typeParametersHaveEqualInstantiationFromIndex(app, abs, constraint, i - 1) + else typeParametersHaveEqualInstantiationToIndex(app, abs, constraint, i - 1) ) } @@ -697,7 +699,7 @@ module Make1 Input1> { not exists(getNthTypeParameter(abs, _)) or exists(int n | n = max(int i | exists(getNthTypeParameter(abs, i))) | - typeParametersHaveEqualInstantiationFromIndex(app, abs, constraint, n) + typeParametersHaveEqualInstantiationToIndex(app, abs, constraint, n) ) ) } @@ -754,13 +756,13 @@ module Make1 Input1> { private predicate typeCondition( Type type, TypeAbstraction abs, TypeMentionTypeTree condition ) { - conditionSatisfiesConstraint(abs, condition, _) and + conditionSatisfiesConstraint(abs, condition, _, _) and type = resolveTypeMentionRoot(condition) } pragma[nomagic] private predicate typeConstraint(Type type, TypeMentionTypeTree constraint) { - conditionSatisfiesConstraint(_, _, constraint) and + conditionSatisfiesConstraint(_, _, constraint, _) and type = resolveTypeMentionRoot(constraint) } @@ -781,12 +783,12 @@ module Make1 Input1> { TypeAbstraction abs, TypeMention condition, TypeMention constraint, TypePath path, Type t ) { // base case - conditionSatisfiesConstraint(abs, condition, constraint) and + conditionSatisfiesConstraint(abs, condition, constraint, _) and constraint.resolveTypeAt(path) = t or // recursive case exists(TypeAbstraction midAbs, TypeMention midConstraint, TypeMention midCondition | - conditionSatisfiesConstraint(abs, condition, midConstraint) and + conditionSatisfiesConstraint(abs, condition, midConstraint, true) and // NOTE: `midAbs` describe the free type variables in `midCondition`, hence // we use that for instantiation check. IsInstantiationOf::isInstantiationOf(midConstraint, @@ -990,7 +992,7 @@ module Make1 Input1> { TypeMention constraintMention ) { exists(Type type | hasTypeConstraint(tt, type, constraint) | - useUniversalConditions() and + useUniversalConditions() and // todo: remove, and instead check constraints not exists(countConstraintImplementations(type, constraint)) and conditionSatisfiesConstraintTypeAt(abs, condition, constraintMention, _, _) and resolveTypeMentionRoot(condition) = abs.getATypeParameter() and diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index b09de2187e9a..96b4b994f187 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.15 +version: 0.0.19 groups: shared library: true dependencies: diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 4edafe872909..81415ed396f8 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,19 @@ +## 2.0.22 + +No user-facing changes. + +## 2.0.21 + +No user-facing changes. + +## 2.0.20 + +No user-facing changes. + +## 2.0.19 + +No user-facing changes. + ## 2.0.18 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.19.md b/shared/typetracking/change-notes/released/2.0.19.md new file mode 100644 index 000000000000..b37b6798b125 --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.19.md @@ -0,0 +1,3 @@ +## 2.0.19 + +No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.20.md b/shared/typetracking/change-notes/released/2.0.20.md new file mode 100644 index 000000000000..6756bd5f6c18 --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.20.md @@ -0,0 +1,3 @@ +## 2.0.20 + +No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.21.md b/shared/typetracking/change-notes/released/2.0.21.md new file mode 100644 index 000000000000..bdc5029b70b1 --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.21.md @@ -0,0 +1,3 @@ +## 2.0.21 + +No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.22.md b/shared/typetracking/change-notes/released/2.0.22.md new file mode 100644 index 000000000000..8a2611adad2d --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.22.md @@ -0,0 +1,3 @@ +## 2.0.22 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index 16342205c738..980bdfe195ba 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.18 +lastReleaseVersion: 2.0.22 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 14ca67d8ba8b..327586ea4a4e 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.18 +version: 2.0.22 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 9fbdb39d4931..6c9dced04a32 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.0.38 + +No user-facing changes. + +## 1.0.37 + +No user-facing changes. + +## 1.0.36 + +No user-facing changes. + +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.35.md b/shared/typos/change-notes/released/1.0.35.md new file mode 100644 index 000000000000..c539ed2d3b13 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.36.md b/shared/typos/change-notes/released/1.0.36.md new file mode 100644 index 000000000000..6cefe97d8b80 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.36.md @@ -0,0 +1,3 @@ +## 1.0.36 + +No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.37.md b/shared/typos/change-notes/released/1.0.37.md new file mode 100644 index 000000000000..505bacf104d6 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.37.md @@ -0,0 +1,3 @@ +## 1.0.37 + +No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.38.md b/shared/typos/change-notes/released/1.0.38.md new file mode 100644 index 000000000000..2c984549c5fb --- /dev/null +++ b/shared/typos/change-notes/released/1.0.38.md @@ -0,0 +1,3 @@ +## 1.0.38 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index b736654032cf..b14e9763a8d4 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.38 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 5675b883f19f..b144d6becde9 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.34 +version: 1.0.38 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 88679dd68468..30fd964656d3 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,19 @@ +## 2.0.25 + +No user-facing changes. + +## 2.0.24 + +No user-facing changes. + +## 2.0.23 + +No user-facing changes. + +## 2.0.22 + +No user-facing changes. + ## 2.0.21 No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.22.md b/shared/util/change-notes/released/2.0.22.md new file mode 100644 index 000000000000..8a2611adad2d --- /dev/null +++ b/shared/util/change-notes/released/2.0.22.md @@ -0,0 +1,3 @@ +## 2.0.22 + +No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.23.md b/shared/util/change-notes/released/2.0.23.md new file mode 100644 index 000000000000..ab6f6f171ed6 --- /dev/null +++ b/shared/util/change-notes/released/2.0.23.md @@ -0,0 +1,3 @@ +## 2.0.23 + +No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.24.md b/shared/util/change-notes/released/2.0.24.md new file mode 100644 index 000000000000..6547901c3343 --- /dev/null +++ b/shared/util/change-notes/released/2.0.24.md @@ -0,0 +1,3 @@ +## 2.0.24 + +No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.25.md b/shared/util/change-notes/released/2.0.25.md new file mode 100644 index 000000000000..ca39dd50c697 --- /dev/null +++ b/shared/util/change-notes/released/2.0.25.md @@ -0,0 +1,3 @@ +## 2.0.25 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index a572e88bffd4..f54d86201189 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.21 +lastReleaseVersion: 2.0.25 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 155a5b33b782..f5cf46fc74cc 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.21 +version: 2.0.25 groups: shared library: true dependencies: null diff --git a/shared/xml/CHANGELOG.md b/shared/xml/CHANGELOG.md index ff67592d22ba..5c7447a15ddb 100644 --- a/shared/xml/CHANGELOG.md +++ b/shared/xml/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.0.38 + +No user-facing changes. + +## 1.0.37 + +No user-facing changes. + +## 1.0.36 + +No user-facing changes. + +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.35.md b/shared/xml/change-notes/released/1.0.35.md new file mode 100644 index 000000000000..c539ed2d3b13 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.36.md b/shared/xml/change-notes/released/1.0.36.md new file mode 100644 index 000000000000..6cefe97d8b80 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.36.md @@ -0,0 +1,3 @@ +## 1.0.36 + +No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.37.md b/shared/xml/change-notes/released/1.0.37.md new file mode 100644 index 000000000000..505bacf104d6 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.37.md @@ -0,0 +1,3 @@ +## 1.0.37 + +No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.38.md b/shared/xml/change-notes/released/1.0.38.md new file mode 100644 index 000000000000..2c984549c5fb --- /dev/null +++ b/shared/xml/change-notes/released/1.0.38.md @@ -0,0 +1,3 @@ +## 1.0.38 + +No user-facing changes. diff --git a/shared/xml/codeql-pack.release.yml b/shared/xml/codeql-pack.release.yml index b736654032cf..b14e9763a8d4 100644 --- a/shared/xml/codeql-pack.release.yml +++ b/shared/xml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.38 diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 2bdbef9aa767..b3fc028fe4dc 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.34 +version: 1.0.38 groups: shared library: true dependencies: diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index fb623a1f26cf..073ffd8edae0 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.0.38 + +No user-facing changes. + +## 1.0.37 + +No user-facing changes. + +## 1.0.36 + +No user-facing changes. + +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.35.md b/shared/yaml/change-notes/released/1.0.35.md new file mode 100644 index 000000000000..c539ed2d3b13 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.36.md b/shared/yaml/change-notes/released/1.0.36.md new file mode 100644 index 000000000000..6cefe97d8b80 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.36.md @@ -0,0 +1,3 @@ +## 1.0.36 + +No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.37.md b/shared/yaml/change-notes/released/1.0.37.md new file mode 100644 index 000000000000..505bacf104d6 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.37.md @@ -0,0 +1,3 @@ +## 1.0.37 + +No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.38.md b/shared/yaml/change-notes/released/1.0.38.md new file mode 100644 index 000000000000..2c984549c5fb --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.38.md @@ -0,0 +1,3 @@ +## 1.0.38 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index b736654032cf..b14e9763a8d4 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.38 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 7dcc28b82698..8303f3fdda5d 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.34 +version: 1.0.38 groups: shared library: true warnOnImplicitThis: true diff --git a/swift/logging/Formatters.h b/swift/logging/Formatters.h deleted file mode 100644 index 9dc003b9ffe3..000000000000 --- a/swift/logging/Formatters.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -// Provides formatters for standard library types to be used with fmtlib. -// TODO: Patch fmtlib to support using `fmt/std.h` without RTTI -// (https://github.com/fmtlib/fmt/issues/3170). - -#include -#include -#include - -namespace fmt { -FMT_FORMAT_AS(std::filesystem::path, std::string); -} - -template <> -struct fmt::formatter : fmt::formatter { - auto format(const std::error_code& e, format_context& ctx) const { - return fmt::formatter::format(e.message(), ctx); - } -}; diff --git a/swift/logging/SwiftLogging.h b/swift/logging/SwiftLogging.h index e94ceb0f6f8b..16275858203c 100644 --- a/swift/logging/SwiftLogging.h +++ b/swift/logging/SwiftLogging.h @@ -8,8 +8,7 @@ #include #include - -#include "swift/logging/Formatters.h" +#include #include #include diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index 1d3e3da7e3ee..8d2fb9a2ebca 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -737,10 +737,10 @@ lib/codeql/swift/generated/KeyPathComponent.qll e11dcf952045b5e6062e24c23515cff9 lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fda2d2008700f955ad82ce109a7 e97d4d4fb8a4800e0008cc00f60c8ed9b1ebd5f1140fd85e68b034616178d721 lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018 -lib/codeql/swift/generated/ParentChild.qll 4d697f5372ad82380dc375a59fa0619ee56c7d88be58530147cd8e160262bbe3 e164b712a41f20d0b9986804cd753fb5e55ceb55139234d98bdb332a8f248db4 +lib/codeql/swift/generated/ParentChild.qll 7fdc133bdec6cc223d5ee85e757b02c5d2e1ab121bcf269bb48c8a12a31a61e9 d8dd6e21d290a293db4db510b1523a9ea428b12f48b7574f03acf00b9ca065ef lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 -lib/codeql/swift/generated/Raw.qll f7dd5c3eb1afba1077dd6c291502e2b5dd5d18000ee581f7e3ad4f0050165c69 f042929df4651dfe587769cd3f539d07f97328c2fe17fbe19cbb8e4fbefe97f2 -lib/codeql/swift/generated/Synth.qll 6af0f5778c6c6a9d9a518c00707501c3fdb3ccaa96fa06793549c2b1f28c9cbb 575829e7a2a4c7619c6d98f1b7ec47d978d0b3d77d5c1a87eae5e9f98612ef5b +lib/codeql/swift/generated/Raw.qll 6adc2ec210e91051b6d3d6c84117b827f10dbea682a18b69348d1c6cdc53629c 9ff02fcca7a7b83c85303ffc6daa00ea392da6ce1f9cb389b5053b34d4a45e4c +lib/codeql/swift/generated/Synth.qll b0084d1f573ba1b10ec8a8fab169b15f15866ecb9a6aeeeac81553a442be28e3 09efe455f3fd6b8b983b30efbd797f09af46e6f5a1a1075801650528999ed938 lib/codeql/swift/generated/SynthConstructors.qll c40f01e1331bdbe238620a41d17409cefe34a6b23066708ef5d74f8631b54f48 c40f01e1331bdbe238620a41d17409cefe34a6b23066708ef5d74f8631b54f48 lib/codeql/swift/generated/UnknownFile.qll 247ddf2ebb49ce5ed4bf7bf91a969ddff37de6c78d43d8affccaf7eb586e06f2 452b29f0465ef45e978ef8b647b75e5a2a1e53f2a568fc003bc8f52f73b3fa4d lib/codeql/swift/generated/UnknownLocation.qll d871000b4f53ffca4f67ea23ca5626e5dcce125d62a4d4b9969e08cc974af6fc b05971d7774e60790362fb810fb7086314f40a2de747b8cb1bc823ec6494a4dd diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index b1b958708e0c..da1d658ad024 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,21 @@ +## 6.1.3 + +No user-facing changes. + +## 6.1.2 + +No user-facing changes. + +## 6.1.1 + +No user-facing changes. + +## 6.1.0 + +### Major Analysis Improvements + +* Upgraded to allow analysis of Swift 6.2.1. + ## 6.0.0 ### Breaking Changes diff --git a/swift/ql/lib/change-notes/released/6.1.0.md b/swift/ql/lib/change-notes/released/6.1.0.md new file mode 100644 index 000000000000..2c16ed106e6f --- /dev/null +++ b/swift/ql/lib/change-notes/released/6.1.0.md @@ -0,0 +1,5 @@ +## 6.1.0 + +### Major Analysis Improvements + +* Upgraded to allow analysis of Swift 6.2.1. diff --git a/swift/ql/lib/change-notes/released/6.1.1.md b/swift/ql/lib/change-notes/released/6.1.1.md new file mode 100644 index 000000000000..c23a3b809a5e --- /dev/null +++ b/swift/ql/lib/change-notes/released/6.1.1.md @@ -0,0 +1,3 @@ +## 6.1.1 + +No user-facing changes. diff --git a/swift/ql/lib/change-notes/released/6.1.2.md b/swift/ql/lib/change-notes/released/6.1.2.md new file mode 100644 index 000000000000..8e41b366daba --- /dev/null +++ b/swift/ql/lib/change-notes/released/6.1.2.md @@ -0,0 +1,3 @@ +## 6.1.2 + +No user-facing changes. diff --git a/swift/ql/lib/change-notes/released/6.1.3.md b/swift/ql/lib/change-notes/released/6.1.3.md new file mode 100644 index 000000000000..34916dd37c80 --- /dev/null +++ b/swift/ql/lib/change-notes/released/6.1.3.md @@ -0,0 +1,3 @@ +## 6.1.3 + +No user-facing changes. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index f8c4fa43ccb7..e641a8749739 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 6.0.0 +lastReleaseVersion: 6.1.3 diff --git a/swift/ql/lib/codeql/swift/generated/ParentChild.qll b/swift/ql/lib/codeql/swift/generated/ParentChild.qll index 28b92e4902ae..efed12bb5fe0 100644 --- a/swift/ql/lib/codeql/swift/generated/ParentChild.qll +++ b/swift/ql/lib/codeql/swift/generated/ParentChild.qll @@ -45,7 +45,7 @@ private module Impl { ) { exists(int n, int nSpec | n = 0 and - nSpec = n + 1 + max(int i | i = -1 or exists(e.getSpec(i)) | i) and + nSpec = n + e.getNumberOfSpecs() and ( none() or @@ -66,7 +66,7 @@ private module Impl { ) { exists(int n, int nSubscriptArgument | n = 0 and - nSubscriptArgument = n + 1 + max(int i | i = -1 or exists(e.getSubscriptArgument(i)) | i) and + nSubscriptArgument = n + e.getNumberOfSubscriptArguments() and ( none() or @@ -100,7 +100,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -115,7 +115,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -130,8 +130,8 @@ private module Impl { ) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -149,7 +149,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -162,7 +162,7 @@ private module Impl { private Element getImmediateChildOfImportDecl(ImportDecl e, int index, string partialPredicateCall) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -177,7 +177,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -192,7 +192,7 @@ private module Impl { ) { exists(int n, int nMember, int nInit, int nPattern | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and nInit = nMember + 1 + max(int i | i = -1 or exists(e.getImmediateInit(i)) | i) and nPattern = nInit + 1 + max(int i | i = -1 or exists(e.getImmediatePattern(i)) | i) and ( @@ -215,7 +215,7 @@ private module Impl { ) { exists(int n, int nMember, int nMessage | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and nMessage = nMember + 1 and ( none() @@ -233,7 +233,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -248,7 +248,7 @@ private module Impl { ) { exists(int n, int nMember, int nBody | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and nBody = nMember + 1 and ( none() @@ -264,7 +264,7 @@ private module Impl { private Element getImmediateChildOfUsingDecl(UsingDecl e, int index, string partialPredicateCall) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -279,8 +279,8 @@ private module Impl { ) { exists(int n, int nMember, int nParam | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and - nParam = nMember + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nMember = n + e.getNumberOfMembers() and + nParam = nMember + e.getNumberOfParams() and ( none() or @@ -298,7 +298,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -311,8 +311,8 @@ private module Impl { private Element getImmediateChildOfMacroDecl(MacroDecl e, int index, string partialPredicateCall) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -330,7 +330,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -345,7 +345,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -362,12 +362,12 @@ private module Impl { int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and nSelfParam = nMember + 1 and - nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nParam = nSelfParam + e.getNumberOfParams() and nBody = nParam + 1 and - nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and + nCapture = nBody + e.getNumberOfCaptures() and ( none() or @@ -397,12 +397,12 @@ private module Impl { int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and nSelfParam = nMember + 1 and - nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nParam = nSelfParam + e.getNumberOfParams() and nBody = nParam + 1 and - nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and + nCapture = nBody + e.getNumberOfCaptures() and ( none() or @@ -428,7 +428,7 @@ private module Impl { private Element getImmediateChildOfModuleDecl(ModuleDecl e, int index, string partialPredicateCall) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -443,11 +443,10 @@ private module Impl { ) { exists(int n, int nMember, int nAccessor, int nGenericTypeParam, int nParam | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and - nAccessor = nMember + 1 + max(int i | i = -1 or exists(e.getAccessor(i)) | i) and - nGenericTypeParam = - nAccessor + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nParam = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nMember = n + e.getNumberOfMembers() and + nAccessor = nMember + e.getNumberOfAccessors() and + nGenericTypeParam = nAccessor + e.getNumberOfGenericTypeParams() and + nParam = nGenericTypeParam + e.getNumberOfParams() and ( none() or @@ -471,12 +470,12 @@ private module Impl { int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and nSelfParam = nMember + 1 and - nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nParam = nSelfParam + e.getNumberOfParams() and nBody = nParam + 1 and - nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and + nCapture = nBody + e.getNumberOfCaptures() and ( none() or @@ -504,7 +503,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -523,8 +522,8 @@ private module Impl { int nPropertyWrapperProjectionVar | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and - nAccessor = nMember + 1 + max(int i | i = -1 or exists(e.getAccessor(i)) | i) and + nMember = n + e.getNumberOfMembers() and + nAccessor = nMember + e.getNumberOfAccessors() and nPropertyWrapperBackingVarBinding = nAccessor + 1 and nPropertyWrapperBackingVar = nPropertyWrapperBackingVarBinding + 1 and nPropertyWrapperProjectionVarBinding = nPropertyWrapperBackingVar + 1 and @@ -562,7 +561,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -579,12 +578,12 @@ private module Impl { int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and nSelfParam = nMember + 1 and - nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nParam = nSelfParam + e.getNumberOfParams() and nBody = nParam + 1 and - nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and + nCapture = nBody + e.getNumberOfCaptures() and ( none() or @@ -612,8 +611,8 @@ private module Impl { ) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -634,8 +633,8 @@ private module Impl { int nPropertyWrapperLocalWrappedVar | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and - nAccessor = nMember + 1 + max(int i | i = -1 or exists(e.getAccessor(i)) | i) and + nMember = n + e.getNumberOfMembers() and + nAccessor = nMember + e.getNumberOfAccessors() and nPropertyWrapperBackingVarBinding = nAccessor + 1 and nPropertyWrapperBackingVar = nPropertyWrapperBackingVarBinding + 1 and nPropertyWrapperProjectionVarBinding = nPropertyWrapperBackingVar + 1 and @@ -683,8 +682,8 @@ private module Impl { ) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -700,8 +699,8 @@ private module Impl { private Element getImmediateChildOfClassDecl(ClassDecl e, int index, string partialPredicateCall) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -717,8 +716,8 @@ private module Impl { private Element getImmediateChildOfEnumDecl(EnumDecl e, int index, string partialPredicateCall) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -736,8 +735,8 @@ private module Impl { ) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -753,8 +752,8 @@ private module Impl { private Element getImmediateChildOfStructDecl(StructDecl e, int index, string partialPredicateCall) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -827,8 +826,8 @@ private module Impl { ) { exists(int n, int nBindingDecl, int nVariable, int nClosureBody | n = 0 and - nBindingDecl = n + 1 + max(int i | i = -1 or exists(e.getBindingDecl(i)) | i) and - nVariable = nBindingDecl + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and + nBindingDecl = n + e.getNumberOfBindingDecls() and + nVariable = nBindingDecl + e.getNumberOfVariables() and nClosureBody = nVariable + 1 and ( none() @@ -1040,7 +1039,7 @@ private module Impl { exists(int n, int nRoot, int nComponent | n = 0 and nRoot = n + 1 and - nComponent = nRoot + 1 + max(int i | i = -1 or exists(e.getComponent(i)) | i) and + nComponent = nRoot + e.getNumberOfComponents() and ( none() or @@ -1493,9 +1492,9 @@ private module Impl { exists(int n, int nSelfParam, int nParam, int nBody, int nCapture | n = 0 and nSelfParam = n + 1 and - nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nParam = nSelfParam + e.getNumberOfParams() and nBody = nParam + 1 and - nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and + nCapture = nBody + e.getNumberOfCaptures() and ( none() or @@ -1528,7 +1527,7 @@ private module Impl { exists(int n, int nFunction, int nArgument | n = 0 and nFunction = n + 1 and - nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = nFunction + e.getNumberOfArguments() and ( none() or @@ -1584,7 +1583,7 @@ private module Impl { exists(int n, int nFunction, int nArgument | n = 0 and nFunction = n + 1 and - nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = nFunction + e.getNumberOfArguments() and ( none() or @@ -1797,9 +1796,9 @@ private module Impl { exists(int n, int nSelfParam, int nParam, int nBody, int nCapture | n = 0 and nSelfParam = n + 1 and - nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nParam = nSelfParam + e.getNumberOfParams() and nBody = nParam + 1 and - nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and + nCapture = nBody + e.getNumberOfCaptures() and ( none() or @@ -2014,7 +2013,7 @@ private module Impl { ) { exists(int n, int nArgument | n = 0 and - nArgument = n + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = n + e.getNumberOfArguments() and ( none() or @@ -2070,7 +2069,7 @@ private module Impl { exists(int n, int nFunction, int nArgument | n = 0 and nFunction = n + 1 and - nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = nFunction + e.getNumberOfArguments() and ( none() or @@ -2088,7 +2087,7 @@ private module Impl { exists(int n, int nFunction, int nArgument | n = 0 and nFunction = n + 1 and - nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = nFunction + e.getNumberOfArguments() and ( none() or @@ -2140,7 +2139,7 @@ private module Impl { exists(int n, int nBase, int nArgument | n = 0 and nBase = n + 1 and - nArgument = nBase + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = nBase + e.getNumberOfArguments() and ( none() or @@ -2286,7 +2285,7 @@ private module Impl { exists(int n, int nFunction, int nArgument | n = 0 and nFunction = n + 1 and - nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = nFunction + e.getNumberOfArguments() and ( none() or @@ -2346,7 +2345,7 @@ private module Impl { exists(int n, int nFunction, int nArgument | n = 0 and nFunction = n + 1 and - nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = nFunction + e.getNumberOfArguments() and ( none() or @@ -2578,7 +2577,7 @@ private module Impl { ) { exists(int n, int nElement | n = 0 and - nElement = n + 1 + max(int i | i = -1 or exists(e.getElement(i)) | i) and + nElement = n + e.getNumberOfElements() and ( none() or @@ -2591,7 +2590,7 @@ private module Impl { private Element getImmediateChildOfBraceStmt(BraceStmt e, int index, string partialPredicateCall) { exists(int n, int nVariable, int nElement | n = 0 and - nVariable = n + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and + nVariable = n + e.getNumberOfVariables() and nElement = nVariable + 1 + max(int i | i = -1 or exists(e.getImmediateElement(i)) | i) and ( none() @@ -2612,8 +2611,8 @@ private module Impl { private Element getImmediateChildOfCaseStmt(CaseStmt e, int index, string partialPredicateCall) { exists(int n, int nLabel, int nVariable, int nBody | n = 0 and - nLabel = n + 1 + max(int i | i = -1 or exists(e.getLabel(i)) | i) and - nVariable = nLabel + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and + nLabel = n + e.getNumberOfLabels() and + nVariable = nLabel + e.getNumberOfVariables() and nBody = nVariable + 1 and ( none() @@ -2732,7 +2731,7 @@ private module Impl { exists(int n, int nBody, int nCatch | n = 0 and nBody = n + 1 and - nCatch = nBody + 1 + max(int i | i = -1 or exists(e.getCatch(i)) | i) and + nCatch = nBody + e.getNumberOfCatches() and ( none() or @@ -2763,7 +2762,7 @@ private module Impl { int n, int nVariable, int nPattern, int nWhere, int nIteratorVar, int nNextCall, int nBody | n = 0 and - nVariable = n + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and + nVariable = n + e.getNumberOfVariables() and nPattern = nVariable + 1 and nWhere = nPattern + 1 and nIteratorVar = nWhere + 1 and @@ -2813,7 +2812,7 @@ private module Impl { exists(int n, int nExpr, int nCase | n = 0 and nExpr = n + 1 and - nCase = nExpr + 1 + max(int i | i = -1 or exists(e.getCase(i)) | i) and + nCase = nExpr + e.getNumberOfCases() and ( none() or diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll index 39bc6ac7373d..714579218bcb 100644 --- a/swift/ql/lib/codeql/swift/generated/Raw.qll +++ b/swift/ql/lib/codeql/swift/generated/Raw.qll @@ -87,6 +87,8 @@ module Raw { string getText() { comments(this, result) } } + private Element getImmediateChildOfComment(Comment e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -94,6 +96,8 @@ module Raw { override string toString() { result = "DbFile" } } + private Element getImmediateChildOfDbFile(DbFile e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -101,6 +105,8 @@ module Raw { override string toString() { result = "DbLocation" } } + private Element getImmediateChildOfDbLocation(DbLocation e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -118,6 +124,8 @@ module Raw { int getKind() { diagnostics(this, _, result) } } + private Element getImmediateChildOfDiagnostics(Diagnostics e, int index) { none() } + /** * INTERNAL: Do not use. * The superclass of all elements indicating some kind of error. @@ -152,6 +160,23 @@ module Raw { * Gets the `index`th spec of this availability info (0-based). */ AvailabilitySpec getSpec(int index) { availability_info_specs(this, index, result) } + + /** + * Gets the number of specs of this availability info. + */ + int getNumberOfSpecs() { result = count(int i | availability_info_specs(this, i, _)) } + } + + private Element getImmediateChildOfAvailabilityInfo(AvailabilityInfo e, int index) { + exists(int n, int nSpec | + n = 0 and + nSpec = n + e.getNumberOfSpecs() and + ( + none() + or + result = e.getSpec(index - n) + ) + ) } /** @@ -180,6 +205,8 @@ module Raw { predicate isWildcard() { availability_spec_is_wildcard(this) } } + private Element getImmediateChildOfAvailabilitySpec(AvailabilitySpec e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -201,6 +228,11 @@ module Raw { */ ParamDecl getParam(int index) { callable_params(this, index, result) } + /** + * Gets the number of parameters of this callable. + */ + int getNumberOfParams() { result = count(int i | callable_params(this, i, _)) } + /** * Gets the body of this callable, if it exists. * @@ -212,6 +244,11 @@ module Raw { * Gets the `index`th capture of this callable (0-based). */ CapturedDecl getCapture(int index) { callable_captures(this, index, result) } + + /** + * Gets the number of captures of this callable. + */ + int getNumberOfCaptures() { result = count(int i | callable_captures(this, i, _)) } } /** @@ -243,6 +280,13 @@ module Raw { key_path_component_subscript_arguments(this, index, result) } + /** + * Gets the number of arguments to an array or dictionary subscript expression. + */ + int getNumberOfSubscriptArguments() { + result = count(int i | key_path_component_subscript_arguments(this, i, _)) + } + /** * Gets the tuple index of this key path component, if it exists. */ @@ -263,6 +307,18 @@ module Raw { Type getComponentType() { key_path_components(this, _, result) } } + private Element getImmediateChildOfKeyPathComponent(KeyPathComponent e, int index) { + exists(int n, int nSubscriptArgument | + n = 0 and + nSubscriptArgument = n + e.getNumberOfSubscriptArguments() and + ( + none() + or + result = e.getSubscriptArgument(index - n) + ) + ) + } + /** * INTERNAL: Do not use. * The role of a macro, for example #freestanding(declaration) or @attached(member). @@ -285,12 +341,24 @@ module Raw { */ Expr getConformance(int index) { macro_role_conformances(this, index, result) } + /** + * Gets the number of conformances of this macro role. + */ + int getNumberOfConformances() { result = count(int i | macro_role_conformances(this, i, _)) } + /** * Gets the `index`th name of this macro role (0-based). */ string getName(int index) { macro_role_names(this, index, result) } + + /** + * Gets the number of names of this macro role. + */ + int getNumberOfNames() { result = count(int i | macro_role_names(this, i, _)) } } + private Element getImmediateChildOfMacroRole(MacroRole e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -323,6 +391,23 @@ module Raw { * These will be present only in certain downgraded databases. */ AstNode getChild(int index) { unspecified_element_children(this, index, result) } + + /** + * Gets the number of children of this unspecified element. + */ + int getNumberOfChildren() { result = count(int i | unspecified_element_children(this, i, _)) } + } + + private Element getImmediateChildOfUnspecifiedElement(UnspecifiedElement e, int index) { + exists(int n, int nChild | + n = 0 and + nChild = n + e.getNumberOfChildren() and + ( + none() + or + result = e.getChild(index - n) + ) + ) } /** @@ -342,6 +427,11 @@ module Raw { * align with expectations, and could change in future releases. */ Decl getMember(int index) { decl_members(this, index, result) } + + /** + * Gets the number of members of this declaration. + */ + int getNumberOfMembers() { result = count(int i | decl_members(this, i, _)) } } /** @@ -354,6 +444,13 @@ module Raw { GenericTypeParamDecl getGenericTypeParam(int index) { generic_context_generic_type_params(this, index, result) } + + /** + * Gets the number of generic type parameters of this generic context. + */ + int getNumberOfGenericTypeParams() { + result = count(int i | generic_context_generic_type_params(this, i, _)) + } } /** @@ -378,6 +475,18 @@ module Raw { predicate isEscaping() { captured_decl_is_escaping(this) } } + private Element getImmediateChildOfCapturedDecl(CapturedDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -388,6 +497,23 @@ module Raw { * Gets the `index`th element of this enum case declaration (0-based). */ EnumElementDecl getElement(int index) { enum_case_decl_elements(this, index, result) } + + /** + * Gets the number of elements of this enum case declaration. + */ + int getNumberOfElements() { result = count(int i | enum_case_decl_elements(this, i, _)) } + } + + private Element getImmediateChildOfEnumCaseDecl(EnumCaseDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) } /** @@ -405,6 +531,26 @@ module Raw { * Gets the `index`th protocol of this extension declaration (0-based). */ ProtocolDecl getProtocol(int index) { extension_decl_protocols(this, index, result) } + + /** + * Gets the number of protocols of this extension declaration. + */ + int getNumberOfProtocols() { result = count(int i | extension_decl_protocols(this, i, _)) } + } + + private Element getImmediateChildOfExtensionDecl(ExtensionDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) } /** @@ -417,6 +563,25 @@ module Raw { * Gets the `index`th active element of this if config declaration (0-based). */ AstNode getActiveElement(int index) { if_config_decl_active_elements(this, index, result) } + + /** + * Gets the number of active elements of this if config declaration. + */ + int getNumberOfActiveElements() { + result = count(int i | if_config_decl_active_elements(this, i, _)) + } + } + + private Element getImmediateChildOfIfConfigDecl(IfConfigDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) } /** @@ -439,6 +604,23 @@ module Raw { * Gets the `index`th declaration of this import declaration (0-based). */ ValueDecl getDeclaration(int index) { import_decl_declarations(this, index, result) } + + /** + * Gets the number of declarations of this import declaration. + */ + int getNumberOfDeclarations() { result = count(int i | import_decl_declarations(this, i, _)) } + } + + private Element getImmediateChildOfImportDecl(ImportDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) } /** @@ -454,6 +636,18 @@ module Raw { string getName() { missing_member_decls(this, result) } } + private Element getImmediateChildOfMissingMemberDecl(MissingMemberDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -475,10 +669,38 @@ module Raw { */ Expr getInit(int index) { pattern_binding_decl_inits(this, index, result) } + /** + * Gets the number of inits of this pattern binding declaration. + */ + int getNumberOfInits() { result = count(int i | pattern_binding_decl_inits(this, i, _)) } + /** * Gets the `index`th pattern of this pattern binding declaration (0-based). */ Pattern getPattern(int index) { pattern_binding_decl_patterns(this, index, result) } + + /** + * Gets the number of patterns of this pattern binding declaration. + */ + int getNumberOfPatterns() { result = count(int i | pattern_binding_decl_patterns(this, i, _)) } + } + + private Element getImmediateChildOfPatternBindingDecl(PatternBindingDecl e, int index) { + exists(int n, int nMember, int nInit, int nPattern | + n = 0 and + nMember = n + e.getNumberOfMembers() and + nInit = nMember + e.getNumberOfInits() and + nPattern = nInit + e.getNumberOfPatterns() and + ( + none() + or + result = e.getMember(index - n) + or + result = e.getInit(index - nMember) + or + result = e.getPattern(index - nInit) + ) + ) } /** @@ -501,6 +723,21 @@ module Raw { StringLiteralExpr getMessage() { pound_diagnostic_decls(this, _, result) } } + private Element getImmediateChildOfPoundDiagnosticDecl(PoundDiagnosticDecl e, int index) { + exists(int n, int nMember, int nMessage | + n = 0 and + nMember = n + e.getNumberOfMembers() and + nMessage = nMember + 1 and + ( + none() + or + result = e.getMember(index - n) + or + index = nMember and result = e.getMessage() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -508,6 +745,18 @@ module Raw { override string toString() { result = "PrecedenceGroupDecl" } } + private Element getImmediateChildOfPrecedenceGroupDecl(PrecedenceGroupDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -520,6 +769,21 @@ module Raw { BraceStmt getBody() { top_level_code_decls(this, result) } } + private Element getImmediateChildOfTopLevelCodeDecl(TopLevelCodeDecl e, int index) { + exists(int n, int nMember, int nBody | + n = 0 and + nMember = n + e.getNumberOfMembers() and + nBody = nMember + 1 and + ( + none() + or + result = e.getMember(index - n) + or + index = nMember and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -537,6 +801,18 @@ module Raw { predicate isNonisolated() { using_decl_is_nonisolated(this) } } + private Element getImmediateChildOfUsingDecl(UsingDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -555,6 +831,13 @@ module Raw { * Gets the `index`th accessor of this abstract storage declaration (0-based). */ Accessor getAccessor(int index) { abstract_storage_decl_accessors(this, index, result) } + + /** + * Gets the number of accessors of this abstract storage declaration. + */ + int getNumberOfAccessors() { + result = count(int i | abstract_storage_decl_accessors(this, i, _)) + } } /** @@ -572,6 +855,26 @@ module Raw { * Gets the `index`th parameter of this enum element declaration (0-based). */ ParamDecl getParam(int index) { enum_element_decl_params(this, index, result) } + + /** + * Gets the number of parameters of this enum element declaration. + */ + int getNumberOfParams() { result = count(int i | enum_element_decl_params(this, i, _)) } + } + + private Element getImmediateChildOfEnumElementDecl(EnumElementDecl e, int index) { + exists(int n, int nMember, int nParam | + n = 0 and + nMember = n + e.getNumberOfMembers() and + nParam = nMember + e.getNumberOfParams() and + ( + none() + or + result = e.getMember(index - n) + or + result = e.getParam(index - nMember) + ) + ) } /** @@ -591,6 +894,18 @@ module Raw { PrecedenceGroupDecl getPrecedenceGroup() { infix_operator_decl_precedence_groups(this, result) } } + private Element getImmediateChildOfInfixOperatorDecl(InfixOperatorDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. * A declaration of a macro. Some examples: @@ -617,10 +932,35 @@ module Raw { */ ParamDecl getParameter(int index) { macro_decl_parameters(this, index, result) } + /** + * Gets the number of parameters of this macro. + */ + int getNumberOfParameters() { result = count(int i | macro_decl_parameters(this, i, _)) } + /** * Gets the `index`th role of this macro (0-based). */ MacroRole getRole(int index) { macro_decl_roles(this, index, result) } + + /** + * Gets the number of roles of this macro. + */ + int getNumberOfRoles() { result = count(int i | macro_decl_roles(this, i, _)) } + } + + private Element getImmediateChildOfMacroDecl(MacroDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) } /** @@ -630,6 +970,18 @@ module Raw { override string toString() { result = "PostfixOperatorDecl" } } + private Element getImmediateChildOfPostfixOperatorDecl(PostfixOperatorDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -637,6 +989,18 @@ module Raw { override string toString() { result = "PrefixOperatorDecl" } } + private Element getImmediateChildOfPrefixOperatorDecl(PrefixOperatorDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -653,6 +1017,13 @@ module Raw { * will not resolve `TypeAliasDecl`s or consider base types added by extensions. */ Type getInheritedType(int index) { type_decl_inherited_types(this, index, result) } + + /** + * Gets the number of inherited types of this type declaration. + */ + int getNumberOfInheritedTypes() { + result = count(int i | type_decl_inherited_types(this, i, _)) + } } /** @@ -672,6 +1043,35 @@ module Raw { override string toString() { result = "Deinitializer" } } + private Element getImmediateChildOfDeinitializer(Deinitializer e, int index) { + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + nSelfParam = nMember + 1 and + nParam = nSelfParam + e.getNumberOfParams() and + nBody = nParam + 1 and + nCapture = nBody + e.getNumberOfCaptures() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + or + index = nMember and result = e.getSelfParam() + or + result = e.getParam(index - nSelfParam) + or + index = nParam and result = e.getBody() + or + result = e.getCapture(index - nBody) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -684,6 +1084,35 @@ module Raw { override string toString() { result = "Initializer" } } + private Element getImmediateChildOfInitializer(Initializer e, int index) { + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + nSelfParam = nMember + 1 and + nParam = nSelfParam + e.getNumberOfParams() and + nBody = nParam + 1 and + nCapture = nBody + e.getNumberOfCaptures() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + or + index = nMember and result = e.getSelfParam() + or + result = e.getParam(index - nSelfParam) + or + index = nParam and result = e.getBody() + or + result = e.getCapture(index - nBody) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -713,6 +1142,18 @@ module Raw { ModuleDecl getAnExportedModule() { module_decl_exported_modules(this, result) } } + private Element getImmediateChildOfModuleDecl(ModuleDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -724,12 +1165,38 @@ module Raw { */ ParamDecl getParam(int index) { subscript_decl_params(this, index, result) } + /** + * Gets the number of parameters of this subscript declaration. + */ + int getNumberOfParams() { result = count(int i | subscript_decl_params(this, i, _)) } + /** * Gets the element type of this subscript declaration. */ Type getElementType() { subscript_decls(this, result) } } + private Element getImmediateChildOfSubscriptDecl(SubscriptDecl e, int index) { + exists(int n, int nMember, int nAccessor, int nGenericTypeParam, int nParam | + n = 0 and + nMember = n + e.getNumberOfMembers() and + nAccessor = nMember + e.getNumberOfAccessors() and + nGenericTypeParam = nAccessor + e.getNumberOfGenericTypeParams() and + nParam = nGenericTypeParam + e.getNumberOfParams() and + ( + none() + or + result = e.getMember(index - n) + or + result = e.getAccessor(index - nMember) + or + result = e.getGenericTypeParam(index - nAccessor) + or + result = e.getParam(index - nGenericTypeParam) + ) + ) + } + /** * INTERNAL: Do not use. * A declaration of a variable such as @@ -913,6 +1380,35 @@ module Raw { predicate isInit() { accessor_is_init(this) } } + private Element getImmediateChildOfAccessor(Accessor e, int index) { + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + nSelfParam = nMember + 1 and + nParam = nSelfParam + e.getNumberOfParams() and + nBody = nParam + 1 and + nCapture = nBody + e.getNumberOfCaptures() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + or + index = nMember and result = e.getSelfParam() + or + result = e.getParam(index - nSelfParam) + or + index = nParam and result = e.getBody() + or + result = e.getCapture(index - nBody) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -920,6 +1416,18 @@ module Raw { override string toString() { result = "AssociatedTypeDecl" } } + private Element getImmediateChildOfAssociatedTypeDecl(AssociatedTypeDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -934,6 +1442,38 @@ module Raw { int getIntroducerInt() { concrete_var_decls(this, result) } } + private Element getImmediateChildOfConcreteVarDecl(ConcreteVarDecl e, int index) { + exists( + int n, int nMember, int nAccessor, int nPropertyWrapperBackingVarBinding, + int nPropertyWrapperBackingVar, int nPropertyWrapperProjectionVarBinding, + int nPropertyWrapperProjectionVar + | + n = 0 and + nMember = n + e.getNumberOfMembers() and + nAccessor = nMember + e.getNumberOfAccessors() and + nPropertyWrapperBackingVarBinding = nAccessor + 1 and + nPropertyWrapperBackingVar = nPropertyWrapperBackingVarBinding + 1 and + nPropertyWrapperProjectionVarBinding = nPropertyWrapperBackingVar + 1 and + nPropertyWrapperProjectionVar = nPropertyWrapperProjectionVarBinding + 1 and + ( + none() + or + result = e.getMember(index - n) + or + result = e.getAccessor(index - nMember) + or + index = nAccessor and result = e.getPropertyWrapperBackingVarBinding() + or + index = nPropertyWrapperBackingVarBinding and result = e.getPropertyWrapperBackingVar() + or + index = nPropertyWrapperBackingVar and result = e.getPropertyWrapperProjectionVarBinding() + or + index = nPropertyWrapperProjectionVarBinding and + result = e.getPropertyWrapperProjectionVar() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -941,6 +1481,18 @@ module Raw { override string toString() { result = "GenericTypeParamDecl" } } + private Element getImmediateChildOfGenericTypeParamDecl(GenericTypeParamDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -948,6 +1500,35 @@ module Raw { override string toString() { result = "NamedFunction" } } + private Element getImmediateChildOfNamedFunction(NamedFunction e, int index) { + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + nSelfParam = nMember + 1 and + nParam = nSelfParam + e.getNumberOfParams() and + nBody = nParam + 1 and + nCapture = nBody + e.getNumberOfCaptures() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + or + index = nMember and result = e.getSelfParam() + or + result = e.getParam(index - nSelfParam) + or + index = nParam and result = e.getBody() + or + result = e.getCapture(index - nBody) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -984,6 +1565,28 @@ module Raw { GenericTypeParamType getOpaqueGenericParam(int index) { opaque_type_decl_opaque_generic_params(this, index, result) } + + /** + * Gets the number of opaque generic parameters of this opaque type declaration. + */ + int getNumberOfOpaqueGenericParams() { + result = count(int i | opaque_type_decl_opaque_generic_params(this, i, _)) + } + } + + private Element getImmediateChildOfOpaqueTypeDecl(OpaqueTypeDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) } /** @@ -1018,6 +1621,47 @@ module Raw { } } + private Element getImmediateChildOfParamDecl(ParamDecl e, int index) { + exists( + int n, int nMember, int nAccessor, int nPropertyWrapperBackingVarBinding, + int nPropertyWrapperBackingVar, int nPropertyWrapperProjectionVarBinding, + int nPropertyWrapperProjectionVar, int nPropertyWrapperLocalWrappedVarBinding, + int nPropertyWrapperLocalWrappedVar + | + n = 0 and + nMember = n + e.getNumberOfMembers() and + nAccessor = nMember + e.getNumberOfAccessors() and + nPropertyWrapperBackingVarBinding = nAccessor + 1 and + nPropertyWrapperBackingVar = nPropertyWrapperBackingVarBinding + 1 and + nPropertyWrapperProjectionVarBinding = nPropertyWrapperBackingVar + 1 and + nPropertyWrapperProjectionVar = nPropertyWrapperProjectionVarBinding + 1 and + nPropertyWrapperLocalWrappedVarBinding = nPropertyWrapperProjectionVar + 1 and + nPropertyWrapperLocalWrappedVar = nPropertyWrapperLocalWrappedVarBinding + 1 and + ( + none() + or + result = e.getMember(index - n) + or + result = e.getAccessor(index - nMember) + or + index = nAccessor and result = e.getPropertyWrapperBackingVarBinding() + or + index = nPropertyWrapperBackingVarBinding and result = e.getPropertyWrapperBackingVar() + or + index = nPropertyWrapperBackingVar and result = e.getPropertyWrapperProjectionVarBinding() + or + index = nPropertyWrapperProjectionVarBinding and + result = e.getPropertyWrapperProjectionVar() + or + index = nPropertyWrapperProjectionVar and + result = e.getPropertyWrapperLocalWrappedVarBinding() + or + index = nPropertyWrapperLocalWrappedVarBinding and + result = e.getPropertyWrapperLocalWrappedVar() + ) + ) + } + /** * INTERNAL: Do not use. * A declaration of a type alias to another type. For example: @@ -1039,6 +1683,21 @@ module Raw { Type getAliasedType() { type_alias_decls(this, result) } } + private Element getImmediateChildOfTypeAliasDecl(TypeAliasDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1046,6 +1705,21 @@ module Raw { override string toString() { result = "ClassDecl" } } + private Element getImmediateChildOfClassDecl(ClassDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1053,6 +1727,21 @@ module Raw { override string toString() { result = "EnumDecl" } } + private Element getImmediateChildOfEnumDecl(EnumDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1060,6 +1749,21 @@ module Raw { override string toString() { result = "ProtocolDecl" } } + private Element getImmediateChildOfProtocolDecl(ProtocolDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1067,6 +1771,21 @@ module Raw { override string toString() { result = "StructDecl" } } + private Element getImmediateChildOfStructDecl(StructDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1084,6 +1803,18 @@ module Raw { Expr getExpr() { arguments(this, _, result) } } + private Element getImmediateChildOfArgument(Argument e, int index) { + exists(int n, int nExpr | + n = 0 and + nExpr = n + 1 and + ( + none() + or + index = n and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * The base class for all expressions in Swift. @@ -1132,6 +1863,20 @@ module Raw { ParamDecl getParam() { applied_property_wrapper_exprs(this, _, _, result) } } + private Element getImmediateChildOfAppliedPropertyWrapperExpr( + AppliedPropertyWrapperExpr e, int index + ) { + exists(int n, int nValue | + n = 0 and + nValue = n + 1 and + ( + none() + or + index = n and result = e.getValue() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1145,6 +1890,11 @@ module Raw { * Gets the `index`th argument passed to the applied function (0-based). */ Argument getArgument(int index) { apply_expr_arguments(this, index, result) } + + /** + * Gets the number of arguments passed to the applied function. + */ + int getNumberOfArguments() { result = count(int i | apply_expr_arguments(this, i, _)) } } /** @@ -1164,6 +1914,21 @@ module Raw { Expr getSource() { assign_exprs(this, _, result) } } + private Element getImmediateChildOfAssignExpr(AssignExpr e, int index) { + exists(int n, int nDest, int nSource | + n = 0 and + nDest = n + 1 and + nSource = nDest + 1 and + ( + none() + or + index = n and result = e.getDest() + or + index = nDest and result = e.getSource() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1176,6 +1941,18 @@ module Raw { Expr getSubExpr() { bind_optional_exprs(this, result) } } + private Element getImmediateChildOfBindOptionalExpr(BindOptionalExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1189,12 +1966,35 @@ module Raw { capture_list_expr_binding_decls(this, index, result) } + /** + * Gets the number of binding declarations of this capture list expression. + */ + int getNumberOfBindingDecls() { + result = count(int i | capture_list_expr_binding_decls(this, i, _)) + } + /** * Gets the closure body of this capture list expression. */ ClosureExpr getClosureBody() { capture_list_exprs(this, result) } } + private Element getImmediateChildOfCaptureListExpr(CaptureListExpr e, int index) { + exists(int n, int nBindingDecl, int nVariable, int nClosureBody | + n = 0 and + nBindingDecl = n + e.getNumberOfBindingDecls() and + nVariable = nBindingDecl and + nClosureBody = nVariable + 1 and + ( + none() + or + result = e.getBindingDecl(index - n) + or + index = nVariable and result = e.getClosureBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1223,6 +2023,18 @@ module Raw { Expr getSubExpr() { consume_exprs(this, result) } } + private Element getImmediateChildOfConsumeExpr(ConsumeExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * An expression that forces value to be copied. In the example below, `copy` marks the copy expression: @@ -1241,6 +2053,18 @@ module Raw { Expr getSubExpr() { copy_exprs(this, result) } } + private Element getImmediateChildOfCopyExpr(CopyExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * An expression that extracts the actor isolation of the current context, of type `(any Actor)?`. @@ -1256,6 +2080,12 @@ module Raw { Expr getActor() { current_context_isolation_exprs(this, result) } } + private Element getImmediateChildOfCurrentContextIsolationExpr( + CurrentContextIsolationExpr e, int index + ) { + none() + } + /** * INTERNAL: Do not use. */ @@ -1272,6 +2102,13 @@ module Raw { */ Type getReplacementType(int index) { decl_ref_expr_replacement_types(this, index, result) } + /** + * Gets the number of replacement types of this declaration reference expression. + */ + int getNumberOfReplacementTypes() { + result = count(int i | decl_ref_expr_replacement_types(this, i, _)) + } + /** * Holds if this declaration reference expression has direct to storage semantics. */ @@ -1295,6 +2132,8 @@ module Raw { predicate hasDistributedThunkSemantics() { decl_ref_expr_has_distributed_thunk_semantics(this) } } + private Element getImmediateChildOfDeclRefExpr(DeclRefExpr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -1317,6 +2156,10 @@ module Raw { Expr getCallerSideDefault() { default_argument_expr_caller_side_defaults(this, result) } } + private Element getImmediateChildOfDefaultArgumentExpr(DefaultArgumentExpr e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -1324,6 +2167,10 @@ module Raw { override string toString() { result = "DiscardAssignmentExpr" } } + private Element getImmediateChildOfDiscardAssignmentExpr(DiscardAssignmentExpr e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -1341,6 +2188,21 @@ module Raw { Expr getSubExpr() { dot_syntax_base_ignored_exprs(this, _, result) } } + private Element getImmediateChildOfDotSyntaxBaseIgnoredExpr(DotSyntaxBaseIgnoredExpr e, int index) { + exists(int n, int nQualifier, int nSubExpr | + n = 0 and + nQualifier = n + 1 and + nSubExpr = nQualifier + 1 and + ( + none() + or + index = n and result = e.getQualifier() + or + index = nQualifier and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1353,6 +2215,18 @@ module Raw { Expr getBase() { dynamic_type_exprs(this, result) } } + private Element getImmediateChildOfDynamicTypeExpr(DynamicTypeExpr e, int index) { + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and + ( + none() + or + index = n and result = e.getBase() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1370,6 +2244,18 @@ module Raw { EnumElementDecl getElement() { enum_is_case_exprs(this, _, result) } } + private Element getImmediateChildOfEnumIsCaseExpr(EnumIsCaseExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1377,6 +2263,8 @@ module Raw { override string toString() { result = "ErrorExpr" } } + private Element getImmediateChildOfErrorExpr(ErrorExpr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -1408,6 +2296,20 @@ module Raw { Expr getFunctionExpr() { extract_function_isolation_exprs(this, result) } } + private Element getImmediateChildOfExtractFunctionIsolationExpr( + ExtractFunctionIsolationExpr e, int index + ) { + exists(int n, int nFunctionExpr | + n = 0 and + nFunctionExpr = n + 1 and + ( + none() + or + index = n and result = e.getFunctionExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1420,6 +2322,18 @@ module Raw { Expr getSubExpr() { force_value_exprs(this, result) } } + private Element getImmediateChildOfForceValueExpr(ForceValueExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1452,6 +2366,24 @@ module Raw { Expr getElseExpr() { if_exprs(this, _, _, result) } } + private Element getImmediateChildOfIfExpr(IfExpr e, int index) { + exists(int n, int nCondition, int nThenExpr, int nElseExpr | + n = 0 and + nCondition = n + 1 and + nThenExpr = nCondition + 1 and + nElseExpr = nThenExpr + 1 and + ( + none() + or + index = n and result = e.getCondition() + or + index = nCondition and result = e.getThenExpr() + or + index = nThenExpr and result = e.getElseExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1474,6 +2406,18 @@ module Raw { Expr getSubExpr() { in_out_exprs(this, result) } } + private Element getImmediateChildOfInOutExpr(InOutExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1491,6 +2435,21 @@ module Raw { Expr getKeyPath() { key_path_application_exprs(this, _, result) } } + private Element getImmediateChildOfKeyPathApplicationExpr(KeyPathApplicationExpr e, int index) { + exists(int n, int nBase, int nKeyPath | + n = 0 and + nBase = n + 1 and + nKeyPath = nBase + 1 and + ( + none() + or + index = n and result = e.getBase() + or + index = nBase and result = e.getKeyPath() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1498,6 +2457,8 @@ module Raw { override string toString() { result = "KeyPathDotExpr" } } + private Element getImmediateChildOfKeyPathDotExpr(KeyPathDotExpr e, int index) { none() } + /** * INTERNAL: Do not use. * A key-path expression. @@ -1514,6 +2475,26 @@ module Raw { * Gets the `index`th component of this key path expression (0-based). */ KeyPathComponent getComponent(int index) { key_path_expr_components(this, index, result) } + + /** + * Gets the number of components of this key path expression. + */ + int getNumberOfComponents() { result = count(int i | key_path_expr_components(this, i, _)) } + } + + private Element getImmediateChildOfKeyPathExpr(KeyPathExpr e, int index) { + exists(int n, int nRoot, int nComponent | + n = 0 and + nRoot = n + 1 and + nComponent = nRoot + e.getNumberOfComponents() and + ( + none() + or + index = n and result = e.getRoot() + or + result = e.getComponent(index - nRoot) + ) + ) } /** @@ -1528,6 +2509,18 @@ module Raw { Expr getSubExpr() { lazy_initialization_exprs(this, result) } } + private Element getImmediateChildOfLazyInitializationExpr(LazyInitializationExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1570,6 +2563,26 @@ module Raw { Expr getSubExpr() { make_temporarily_escapable_exprs(this, _, _, result) } } + private Element getImmediateChildOfMakeTemporarilyEscapableExpr( + MakeTemporarilyEscapableExpr e, int index + ) { + exists(int n, int nEscapingClosure, int nNonescapingClosure, int nSubExpr | + n = 0 and + nEscapingClosure = n + 1 and + nNonescapingClosure = nEscapingClosure + 1 and + nSubExpr = nNonescapingClosure + 1 and + ( + none() + or + index = n and result = e.getEscapingClosure() + or + index = nEscapingClosure and result = e.getNonescapingClosure() + or + index = nNonescapingClosure and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * An expression that materializes a pack during expansion. Appears around PackExpansionExpr. @@ -1586,6 +2599,18 @@ module Raw { Expr getSubExpr() { materialize_pack_exprs(this, result) } } + private Element getImmediateChildOfMaterializePackExpr(MaterializePackExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1603,6 +2628,18 @@ module Raw { Function getMethod() { obj_c_selector_exprs(this, _, result) } } + private Element getImmediateChildOfObjCSelectorExpr(ObjCSelectorExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1615,6 +2652,18 @@ module Raw { Expr getSubExpr() { one_way_exprs(this, result) } } + private Element getImmediateChildOfOneWayExpr(OneWayExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1622,6 +2671,8 @@ module Raw { override string toString() { result = "OpaqueValueExpr" } } + private Element getImmediateChildOfOpaqueValueExpr(OpaqueValueExpr e, int index) { none() } + /** * INTERNAL: Do not use. * An implicit expression created by the compiler when a method is called on a protocol. For example in @@ -1657,6 +2708,21 @@ module Raw { OpaqueValueExpr getOpaqueExpr() { open_existential_exprs(this, _, _, result) } } + private Element getImmediateChildOfOpenExistentialExpr(OpenExistentialExpr e, int index) { + exists(int n, int nSubExpr, int nExistential | + n = 0 and + nSubExpr = n + 1 and + nExistential = nSubExpr + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + or + index = nSubExpr and result = e.getExistential() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1669,6 +2735,18 @@ module Raw { Expr getSubExpr() { optional_evaluation_exprs(this, result) } } + private Element getImmediateChildOfOptionalEvaluationExpr(OptionalEvaluationExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1681,6 +2759,10 @@ module Raw { Initializer getInitializer() { other_initializer_ref_exprs(this, result) } } + private Element getImmediateChildOfOtherInitializerRefExpr(OtherInitializerRefExpr e, int index) { + none() + } + /** * INTERNAL: Do not use. * An ambiguous expression that might refer to multiple declarations. This will be present only @@ -1695,6 +2777,17 @@ module Raw { ValueDecl getPossibleDeclaration(int index) { overloaded_decl_ref_expr_possible_declarations(this, index, result) } + + /** + * Gets the number of possible declarations of this overloaded declaration reference expression. + */ + int getNumberOfPossibleDeclarations() { + result = count(int i | overloaded_decl_ref_expr_possible_declarations(this, i, _)) + } + } + + private Element getImmediateChildOfOverloadedDeclRefExpr(OverloadedDeclRefExpr e, int index) { + none() } /** @@ -1720,6 +2813,18 @@ module Raw { Expr getSubExpr() { pack_element_exprs(this, result) } } + private Element getImmediateChildOfPackElementExpr(PackElementExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A pack expansion expression. @@ -1743,6 +2848,18 @@ module Raw { Expr getPatternExpr() { pack_expansion_exprs(this, result) } } + private Element getImmediateChildOfPackExpansionExpr(PackExpansionExpr e, int index) { + exists(int n, int nPatternExpr | + n = 0 and + nPatternExpr = n + 1 and + ( + none() + or + index = n and result = e.getPatternExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A placeholder substituting property initializations with `=` when the property has a property @@ -1762,6 +2879,12 @@ module Raw { OpaqueValueExpr getPlaceholder() { property_wrapper_value_placeholder_exprs(this, result) } } + private Element getImmediateChildOfPropertyWrapperValuePlaceholderExpr( + PropertyWrapperValuePlaceholderExpr e, int index + ) { + none() + } + /** * INTERNAL: Do not use. */ @@ -1779,6 +2902,20 @@ module Raw { VarDecl getSelf() { rebind_self_in_initializer_exprs(this, _, result) } } + private Element getImmediateChildOfRebindSelfInInitializerExpr( + RebindSelfInInitializerExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1789,6 +2926,23 @@ module Raw { * Gets the `index`th element of this sequence expression (0-based). */ Expr getElement(int index) { sequence_expr_elements(this, index, result) } + + /** + * Gets the number of elements of this sequence expression. + */ + int getNumberOfElements() { result = count(int i | sequence_expr_elements(this, i, _)) } + } + + private Element getImmediateChildOfSequenceExpr(SequenceExpr e, int index) { + exists(int n, int nElement | + n = 0 and + nElement = n + e.getNumberOfElements() and + ( + none() + or + result = e.getElement(index - n) + ) + ) } /** @@ -1804,6 +2958,18 @@ module Raw { Stmt getStmt() { single_value_stmt_exprs(this, result) } } + private Element getImmediateChildOfSingleValueStmtExpr(SingleValueStmtExpr e, int index) { + exists(int n, int nStmt | + n = 0 and + nStmt = n + 1 and + ( + none() + or + index = n and result = e.getStmt() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1816,6 +2982,8 @@ module Raw { VarDecl getSelf() { super_ref_exprs(this, result) } } + private Element getImmediateChildOfSuperRefExpr(SuperRefExpr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -1838,6 +3006,21 @@ module Raw { VarDecl getVar() { tap_exprs(this, _, result) } } + private Element getImmediateChildOfTapExpr(TapExpr e, int index) { + exists(int n, int nSubExpr, int nBody | + n = 0 and + nSubExpr = n + 1 and + nBody = nSubExpr + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + or + index = nSubExpr and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1855,6 +3038,18 @@ module Raw { int getIndex() { tuple_element_exprs(this, _, result) } } + private Element getImmediateChildOfTupleElementExpr(TupleElementExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1865,6 +3060,23 @@ module Raw { * Gets the `index`th element of this tuple expression (0-based). */ Expr getElement(int index) { tuple_expr_elements(this, index, result) } + + /** + * Gets the number of elements of this tuple expression. + */ + int getNumberOfElements() { result = count(int i | tuple_expr_elements(this, i, _)) } + } + + private Element getImmediateChildOfTupleExpr(TupleExpr e, int index) { + exists(int n, int nElement | + n = 0 and + nElement = n + e.getNumberOfElements() and + ( + none() + or + result = e.getElement(index - n) + ) + ) } /** @@ -1879,6 +3091,18 @@ module Raw { TypeRepr getTypeRepr() { type_expr_type_reprs(this, result) } } + private Element getImmediateChildOfTypeExpr(TypeExpr e, int index) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1891,6 +3115,18 @@ module Raw { TypeRepr getTypeRepr() { type_value_exprs(this, result) } } + private Element getImmediateChildOfTypeValueExpr(TypeValueExpr e, int index) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1903,7 +3139,11 @@ module Raw { string getName() { unresolved_decl_ref_expr_names(this, result) } } - /** + private Element getImmediateChildOfUnresolvedDeclRefExpr(UnresolvedDeclRefExpr e, int index) { + none() + } + + /** * INTERNAL: Do not use. */ class UnresolvedDotExpr extends @unresolved_dot_expr, Expr, ErrorElement { @@ -1920,6 +3160,18 @@ module Raw { string getName() { unresolved_dot_exprs(this, _, result) } } + private Element getImmediateChildOfUnresolvedDotExpr(UnresolvedDotExpr e, int index) { + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and + ( + none() + or + index = n and result = e.getBase() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1932,6 +3184,10 @@ module Raw { string getName() { unresolved_member_exprs(this, result) } } + private Element getImmediateChildOfUnresolvedMemberExpr(UnresolvedMemberExpr e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -1944,6 +3200,18 @@ module Raw { Pattern getSubPattern() { unresolved_pattern_exprs(this, result) } } + private Element getImmediateChildOfUnresolvedPatternExpr(UnresolvedPatternExpr e, int index) { + exists(int n, int nSubPattern | + n = 0 and + nSubPattern = n + 1 and + ( + none() + or + index = n and result = e.getSubPattern() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1956,6 +3224,18 @@ module Raw { Expr getSubExpr() { unresolved_specialize_exprs(this, result) } } + private Element getImmediateChildOfUnresolvedSpecializeExpr(UnresolvedSpecializeExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1968,6 +3248,18 @@ module Raw { Expr getSubExpr() { vararg_expansion_exprs(this, result) } } + private Element getImmediateChildOfVarargExpansionExpr(VarargExpansionExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1975,6 +3267,18 @@ module Raw { override string toString() { result = "AbiSafeConversionExpr" } } + private Element getImmediateChildOfAbiSafeConversionExpr(AbiSafeConversionExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A conversion that erases the actor isolation of an expression with `@isolated(any)` function @@ -1984,6 +3288,20 @@ module Raw { override string toString() { result = "ActorIsolationErasureExpr" } } + private Element getImmediateChildOfActorIsolationErasureExpr( + ActorIsolationErasureExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1991,6 +3309,18 @@ module Raw { override string toString() { result = "AnyHashableErasureExpr" } } + private Element getImmediateChildOfAnyHashableErasureExpr(AnyHashableErasureExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1998,6 +3328,18 @@ module Raw { override string toString() { result = "ArchetypeToSuperExpr" } } + private Element getImmediateChildOfArchetypeToSuperExpr(ArchetypeToSuperExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2008,6 +3350,23 @@ module Raw { * Gets the `index`th element of this array expression (0-based). */ Expr getElement(int index) { array_expr_elements(this, index, result) } + + /** + * Gets the number of elements of this array expression. + */ + int getNumberOfElements() { result = count(int i | array_expr_elements(this, i, _)) } + } + + private Element getImmediateChildOfArrayExpr(ArrayExpr e, int index) { + exists(int n, int nElement | + n = 0 and + nElement = n + e.getNumberOfElements() and + ( + none() + or + result = e.getElement(index - n) + ) + ) } /** @@ -2017,6 +3376,18 @@ module Raw { override string toString() { result = "ArrayToPointerExpr" } } + private Element getImmediateChildOfArrayToPointerExpr(ArrayToPointerExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2024,6 +3395,27 @@ module Raw { override string toString() { result = "AutoClosureExpr" } } + private Element getImmediateChildOfAutoClosureExpr(AutoClosureExpr e, int index) { + exists(int n, int nSelfParam, int nParam, int nBody, int nCapture | + n = 0 and + nSelfParam = n + 1 and + nParam = nSelfParam + e.getNumberOfParams() and + nBody = nParam + 1 and + nCapture = nBody + e.getNumberOfCaptures() and + ( + none() + or + index = n and result = e.getSelfParam() + or + result = e.getParam(index - nSelfParam) + or + index = nParam and result = e.getBody() + or + result = e.getCapture(index - nBody) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2031,6 +3423,18 @@ module Raw { override string toString() { result = "AwaitExpr" } } + private Element getImmediateChildOfAwaitExpr(AwaitExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2038,6 +3442,21 @@ module Raw { override string toString() { result = "BinaryExpr" } } + private Element getImmediateChildOfBinaryExpr(BinaryExpr e, int index) { + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + e.getNumberOfArguments() and + ( + none() + or + index = n and result = e.getFunction() + or + result = e.getArgument(index - nFunction) + ) + ) + } + /** * INTERNAL: Do not use. * An expression that marks value as borrowed. In the example below, `_borrow` marks the borrow expression: @@ -2051,6 +3470,18 @@ module Raw { override string toString() { result = "BorrowExpr" } } + private Element getImmediateChildOfBorrowExpr(BorrowExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2058,6 +3489,18 @@ module Raw { override string toString() { result = "BridgeFromObjCExpr" } } + private Element getImmediateChildOfBridgeFromObjCExpr(BridgeFromObjCExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2065,6 +3508,18 @@ module Raw { override string toString() { result = "BridgeToObjCExpr" } } + private Element getImmediateChildOfBridgeToObjCExpr(BridgeToObjCExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2077,6 +3532,21 @@ module Raw { override string toString() { result = "CallExpr" } } + private Element getImmediateChildOfCallExpr(CallExpr e, int index) { + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + e.getNumberOfArguments() and + ( + none() + or + index = n and result = e.getFunction() + or + result = e.getArgument(index - nFunction) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2089,6 +3559,20 @@ module Raw { override string toString() { result = "ClassMetatypeToObjectExpr" } } + private Element getImmediateChildOfClassMetatypeToObjectExpr( + ClassMetatypeToObjectExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2096,6 +3580,18 @@ module Raw { override string toString() { result = "CoerceExpr" } } + private Element getImmediateChildOfCoerceExpr(CoerceExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2105,6 +3601,20 @@ module Raw { override string toString() { result = "CollectionUpcastConversionExpr" } } + private Element getImmediateChildOfCollectionUpcastConversionExpr( + CollectionUpcastConversionExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2114,6 +3624,20 @@ module Raw { override string toString() { result = "ConditionalBridgeFromObjCExpr" } } + private Element getImmediateChildOfConditionalBridgeFromObjCExpr( + ConditionalBridgeFromObjCExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2123,6 +3647,20 @@ module Raw { override string toString() { result = "CovariantFunctionConversionExpr" } } + private Element getImmediateChildOfCovariantFunctionConversionExpr( + CovariantFunctionConversionExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2132,6 +3670,20 @@ module Raw { override string toString() { result = "CovariantReturnConversionExpr" } } + private Element getImmediateChildOfCovariantReturnConversionExpr( + CovariantReturnConversionExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2139,6 +3691,18 @@ module Raw { override string toString() { result = "DerivedToBaseExpr" } } + private Element getImmediateChildOfDerivedToBaseExpr(DerivedToBaseExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2146,6 +3710,18 @@ module Raw { override string toString() { result = "DestructureTupleExpr" } } + private Element getImmediateChildOfDestructureTupleExpr(DestructureTupleExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2156,6 +3732,23 @@ module Raw { * Gets the `index`th element of this dictionary expression (0-based). */ Expr getElement(int index) { dictionary_expr_elements(this, index, result) } + + /** + * Gets the number of elements of this dictionary expression. + */ + int getNumberOfElements() { result = count(int i | dictionary_expr_elements(this, i, _)) } + } + + private Element getImmediateChildOfDictionaryExpr(DictionaryExpr e, int index) { + exists(int n, int nElement | + n = 0 and + nElement = n + e.getNumberOfElements() and + ( + none() + or + result = e.getElement(index - n) + ) + ) } /** @@ -2165,6 +3758,20 @@ module Raw { override string toString() { result = "DifferentiableFunctionExpr" } } + private Element getImmediateChildOfDifferentiableFunctionExpr( + DifferentiableFunctionExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2174,6 +3781,20 @@ module Raw { override string toString() { result = "DifferentiableFunctionExtractOriginalExpr" } } + private Element getImmediateChildOfDifferentiableFunctionExtractOriginalExpr( + DifferentiableFunctionExtractOriginalExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2181,6 +3802,18 @@ module Raw { override string toString() { result = "DotSelfExpr" } } + private Element getImmediateChildOfDotSelfExpr(DotSelfExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2193,6 +3826,18 @@ module Raw { override string toString() { result = "ErasureExpr" } } + private Element getImmediateChildOfErasureExpr(ErasureExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2202,6 +3847,20 @@ module Raw { override string toString() { result = "ExistentialMetatypeToObjectExpr" } } + private Element getImmediateChildOfExistentialMetatypeToObjectExpr( + ExistentialMetatypeToObjectExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2209,6 +3868,27 @@ module Raw { override string toString() { result = "ExplicitClosureExpr" } } + private Element getImmediateChildOfExplicitClosureExpr(ExplicitClosureExpr e, int index) { + exists(int n, int nSelfParam, int nParam, int nBody, int nCapture | + n = 0 and + nSelfParam = n + 1 and + nParam = nSelfParam + e.getNumberOfParams() and + nBody = nParam + 1 and + nCapture = nBody + e.getNumberOfCaptures() and + ( + none() + or + index = n and result = e.getSelfParam() + or + result = e.getParam(index - nSelfParam) + or + index = nParam and result = e.getBody() + or + result = e.getCapture(index - nBody) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2216,6 +3896,18 @@ module Raw { override string toString() { result = "ForceTryExpr" } } + private Element getImmediateChildOfForceTryExpr(ForceTryExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2223,6 +3915,20 @@ module Raw { override string toString() { result = "ForeignObjectConversionExpr" } } + private Element getImmediateChildOfForeignObjectConversionExpr( + ForeignObjectConversionExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2230,6 +3936,18 @@ module Raw { override string toString() { result = "FunctionConversionExpr" } } + private Element getImmediateChildOfFunctionConversionExpr(FunctionConversionExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2237,6 +3955,18 @@ module Raw { override string toString() { result = "InOutToPointerExpr" } } + private Element getImmediateChildOfInOutToPointerExpr(InOutToPointerExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2244,6 +3974,18 @@ module Raw { override string toString() { result = "InjectIntoOptionalExpr" } } + private Element getImmediateChildOfInjectIntoOptionalExpr(InjectIntoOptionalExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2263,6 +4005,20 @@ module Raw { TapExpr getAppendingExpr() { interpolated_string_literal_expr_appending_exprs(this, result) } } + private Element getImmediateChildOfInterpolatedStringLiteralExpr( + InterpolatedStringLiteralExpr e, int index + ) { + exists(int n, int nAppendingExpr | + n = 0 and + nAppendingExpr = n + 1 and + ( + none() + or + index = n and result = e.getAppendingExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2270,6 +4026,18 @@ module Raw { override string toString() { result = "LinearFunctionExpr" } } + private Element getImmediateChildOfLinearFunctionExpr(LinearFunctionExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2279,6 +4047,20 @@ module Raw { override string toString() { result = "LinearFunctionExtractOriginalExpr" } } + private Element getImmediateChildOfLinearFunctionExtractOriginalExpr( + LinearFunctionExtractOriginalExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2288,6 +4070,20 @@ module Raw { override string toString() { result = "LinearToDifferentiableFunctionExpr" } } + private Element getImmediateChildOfLinearToDifferentiableFunctionExpr( + LinearToDifferentiableFunctionExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2295,6 +4091,18 @@ module Raw { override string toString() { result = "LoadExpr" } } + private Element getImmediateChildOfLoadExpr(LoadExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2328,6 +4136,18 @@ module Raw { } } + private Element getImmediateChildOfMemberRefExpr(MemberRefExpr e, int index) { + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and + ( + none() + or + index = n and result = e.getBase() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2335,6 +4155,18 @@ module Raw { override string toString() { result = "MetatypeConversionExpr" } } + private Element getImmediateChildOfMetatypeConversionExpr(MetatypeConversionExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2342,6 +4174,8 @@ module Raw { override string toString() { result = "NilLiteralExpr" } } + private Element getImmediateChildOfNilLiteralExpr(NilLiteralExpr e, int index) { none() } + /** * INTERNAL: Do not use. * An instance of `#fileLiteral`, `#imageLiteral` or `#colorLiteral` expressions, which are used in playgrounds. @@ -2360,6 +4194,23 @@ module Raw { * Gets the `index`th argument of this object literal expression (0-based). */ Argument getArgument(int index) { object_literal_expr_arguments(this, index, result) } + + /** + * Gets the number of arguments of this object literal expression. + */ + int getNumberOfArguments() { result = count(int i | object_literal_expr_arguments(this, i, _)) } + } + + private Element getImmediateChildOfObjectLiteralExpr(ObjectLiteralExpr e, int index) { + exists(int n, int nArgument | + n = 0 and + nArgument = n + e.getNumberOfArguments() and + ( + none() + or + result = e.getArgument(index - n) + ) + ) } /** @@ -2369,6 +4220,18 @@ module Raw { override string toString() { result = "OptionalTryExpr" } } + private Element getImmediateChildOfOptionalTryExpr(OptionalTryExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2376,6 +4239,18 @@ module Raw { override string toString() { result = "ParenExpr" } } + private Element getImmediateChildOfParenExpr(ParenExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2383,6 +4258,18 @@ module Raw { override string toString() { result = "PointerToPointerExpr" } } + private Element getImmediateChildOfPointerToPointerExpr(PointerToPointerExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2390,6 +4277,21 @@ module Raw { override string toString() { result = "PostfixUnaryExpr" } } + private Element getImmediateChildOfPostfixUnaryExpr(PostfixUnaryExpr e, int index) { + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + e.getNumberOfArguments() and + ( + none() + or + index = n and result = e.getFunction() + or + result = e.getArgument(index - nFunction) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2397,6 +4299,21 @@ module Raw { override string toString() { result = "PrefixUnaryExpr" } } + private Element getImmediateChildOfPrefixUnaryExpr(PrefixUnaryExpr e, int index) { + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + e.getNumberOfArguments() and + ( + none() + or + index = n and result = e.getFunction() + or + result = e.getArgument(index - nFunction) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2406,6 +4323,20 @@ module Raw { override string toString() { result = "ProtocolMetatypeToObjectExpr" } } + private Element getImmediateChildOfProtocolMetatypeToObjectExpr( + ProtocolMetatypeToObjectExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A regular expression literal which is checked at compile time, for example `/a(a|b)*b/`. @@ -2424,6 +4355,8 @@ module Raw { int getVersion() { regex_literal_exprs(this, _, result) } } + private Element getImmediateChildOfRegexLiteralExpr(RegexLiteralExpr e, int index) { none() } + /** * INTERNAL: Do not use. * An internal raw instance of method lookups like `x.foo` in `x.foo()`. @@ -2443,6 +4376,18 @@ module Raw { override string toString() { result = "StringToPointerExpr" } } + private Element getImmediateChildOfStringToPointerExpr(StringToPointerExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2454,6 +4399,11 @@ module Raw { */ Argument getArgument(int index) { subscript_expr_arguments(this, index, result) } + /** + * Gets the number of arguments of this subscript expression. + */ + int getNumberOfArguments() { result = count(int i | subscript_expr_arguments(this, i, _)) } + /** * Holds if this subscript expression has direct to storage semantics. */ @@ -2479,6 +4429,21 @@ module Raw { } } + private Element getImmediateChildOfSubscriptExpr(SubscriptExpr e, int index) { + exists(int n, int nBase, int nArgument | + n = 0 and + nBase = n + 1 and + nArgument = nBase + e.getNumberOfArguments() and + ( + none() + or + index = n and result = e.getBase() + or + result = e.getArgument(index - nBase) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2486,6 +4451,18 @@ module Raw { override string toString() { result = "TryExpr" } } + private Element getImmediateChildOfTryExpr(TryExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2493,6 +4470,18 @@ module Raw { override string toString() { result = "UnderlyingToOpaqueExpr" } } + private Element getImmediateChildOfUnderlyingToOpaqueExpr(UnderlyingToOpaqueExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2500,6 +4489,18 @@ module Raw { override string toString() { result = "UnevaluatedInstanceExpr" } } + private Element getImmediateChildOfUnevaluatedInstanceExpr(UnevaluatedInstanceExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A conversion from the uninhabited type to any other type. It's never evaluated. @@ -2508,6 +4509,18 @@ module Raw { override string toString() { result = "UnreachableExpr" } } + private Element getImmediateChildOfUnreachableExpr(UnreachableExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2517,6 +4530,20 @@ module Raw { override string toString() { result = "UnresolvedMemberChainResultExpr" } } + private Element getImmediateChildOfUnresolvedMemberChainResultExpr( + UnresolvedMemberChainResultExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2526,6 +4553,20 @@ module Raw { override string toString() { result = "UnresolvedTypeConversionExpr" } } + private Element getImmediateChildOfUnresolvedTypeConversionExpr( + UnresolvedTypeConversionExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A conversion that performs an unsafe bitcast. @@ -2534,6 +4575,18 @@ module Raw { override string toString() { result = "UnsafeCastExpr" } } + private Element getImmediateChildOfUnsafeCastExpr(UnsafeCastExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2541,6 +4594,18 @@ module Raw { override string toString() { result = "UnsafeExpr" } } + private Element getImmediateChildOfUnsafeExpr(UnsafeExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2553,6 +4618,8 @@ module Raw { boolean getValue() { boolean_literal_exprs(this, result) } } + private Element getImmediateChildOfBooleanLiteralExpr(BooleanLiteralExpr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2560,6 +4627,20 @@ module Raw { override string toString() { result = "ConditionalCheckedCastExpr" } } + private Element getImmediateChildOfConditionalCheckedCastExpr( + ConditionalCheckedCastExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2567,6 +4648,21 @@ module Raw { override string toString() { result = "DotSyntaxCallExpr" } } + private Element getImmediateChildOfDotSyntaxCallExpr(DotSyntaxCallExpr e, int index) { + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + e.getNumberOfArguments() and + ( + none() + or + index = n and result = e.getFunction() + or + result = e.getArgument(index - nFunction) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2574,6 +4670,18 @@ module Raw { override string toString() { result = "DynamicMemberRefExpr" } } + private Element getImmediateChildOfDynamicMemberRefExpr(DynamicMemberRefExpr e, int index) { + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and + ( + none() + or + index = n and result = e.getBase() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2581,6 +4689,18 @@ module Raw { override string toString() { result = "DynamicSubscriptExpr" } } + private Element getImmediateChildOfDynamicSubscriptExpr(DynamicSubscriptExpr e, int index) { + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and + ( + none() + or + index = n and result = e.getBase() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2588,6 +4708,18 @@ module Raw { override string toString() { result = "ForcedCheckedCastExpr" } } + private Element getImmediateChildOfForcedCheckedCastExpr(ForcedCheckedCastExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2595,6 +4727,21 @@ module Raw { override string toString() { result = "InitializerRefCallExpr" } } + private Element getImmediateChildOfInitializerRefCallExpr(InitializerRefCallExpr e, int index) { + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + e.getNumberOfArguments() and + ( + none() + or + index = n and result = e.getFunction() + or + result = e.getArgument(index - nFunction) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2602,6 +4749,18 @@ module Raw { override string toString() { result = "IsExpr" } } + private Element getImmediateChildOfIsExpr(IsExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2614,6 +4773,12 @@ module Raw { string getKind() { magic_identifier_literal_exprs(this, result) } } + private Element getImmediateChildOfMagicIdentifierLiteralExpr( + MagicIdentifierLiteralExpr e, int index + ) { + none() + } + /** * INTERNAL: Do not use. */ @@ -2631,6 +4796,8 @@ module Raw { string getValue() { string_literal_exprs(this, result) } } + private Element getImmediateChildOfStringLiteralExpr(StringLiteralExpr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2643,6 +4810,8 @@ module Raw { string getStringValue() { float_literal_exprs(this, result) } } + private Element getImmediateChildOfFloatLiteralExpr(FloatLiteralExpr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2655,6 +4824,8 @@ module Raw { string getStringValue() { integer_literal_exprs(this, result) } } + private Element getImmediateChildOfIntegerLiteralExpr(IntegerLiteralExpr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2672,6 +4843,8 @@ module Raw { override string toString() { result = "AnyPattern" } } + private Element getImmediateChildOfAnyPattern(AnyPattern e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2684,6 +4857,18 @@ module Raw { Pattern getSubPattern() { binding_patterns(this, result) } } + private Element getImmediateChildOfBindingPattern(BindingPattern e, int index) { + exists(int n, int nSubPattern | + n = 0 and + nSubPattern = n + 1 and + ( + none() + or + index = n and result = e.getSubPattern() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2696,6 +4881,8 @@ module Raw { boolean getValue() { bool_patterns(this, result) } } + private Element getImmediateChildOfBoolPattern(BoolPattern e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2713,6 +4900,18 @@ module Raw { Pattern getSubPattern() { enum_element_pattern_sub_patterns(this, result) } } + private Element getImmediateChildOfEnumElementPattern(EnumElementPattern e, int index) { + exists(int n, int nSubPattern | + n = 0 and + nSubPattern = n + 1 and + ( + none() + or + index = n and result = e.getSubPattern() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2725,6 +4924,18 @@ module Raw { Expr getSubExpr() { expr_patterns(this, result) } } + private Element getImmediateChildOfExprPattern(ExprPattern e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2742,6 +4953,21 @@ module Raw { Pattern getSubPattern() { is_pattern_sub_patterns(this, result) } } + private Element getImmediateChildOfIsPattern(IsPattern e, int index) { + exists(int n, int nCastTypeRepr, int nSubPattern | + n = 0 and + nCastTypeRepr = n + 1 and + nSubPattern = nCastTypeRepr + 1 and + ( + none() + or + index = n and result = e.getCastTypeRepr() + or + index = nCastTypeRepr and result = e.getSubPattern() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2754,6 +4980,8 @@ module Raw { VarDecl getVarDecl() { named_patterns(this, result) } } + private Element getImmediateChildOfNamedPattern(NamedPattern e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2766,6 +4994,18 @@ module Raw { Pattern getSubPattern() { optional_some_patterns(this, result) } } + private Element getImmediateChildOfOptionalSomePattern(OptionalSomePattern e, int index) { + exists(int n, int nSubPattern | + n = 0 and + nSubPattern = n + 1 and + ( + none() + or + index = n and result = e.getSubPattern() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2778,6 +5018,18 @@ module Raw { Pattern getSubPattern() { paren_patterns(this, result) } } + private Element getImmediateChildOfParenPattern(ParenPattern e, int index) { + exists(int n, int nSubPattern | + n = 0 and + nSubPattern = n + 1 and + ( + none() + or + index = n and result = e.getSubPattern() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2788,6 +5040,23 @@ module Raw { * Gets the `index`th element of this tuple pattern (0-based). */ Pattern getElement(int index) { tuple_pattern_elements(this, index, result) } + + /** + * Gets the number of elements of this tuple pattern. + */ + int getNumberOfElements() { result = count(int i | tuple_pattern_elements(this, i, _)) } + } + + private Element getImmediateChildOfTuplePattern(TuplePattern e, int index) { + exists(int n, int nElement | + n = 0 and + nElement = n + e.getNumberOfElements() and + ( + none() + or + result = e.getElement(index - n) + ) + ) } /** @@ -2807,6 +5076,21 @@ module Raw { TypeRepr getTypeRepr() { typed_pattern_type_reprs(this, result) } } + private Element getImmediateChildOfTypedPattern(TypedPattern e, int index) { + exists(int n, int nSubPattern, int nTypeRepr | + n = 0 and + nSubPattern = n + 1 and + nTypeRepr = nSubPattern + 1 and + ( + none() + or + index = n and result = e.getSubPattern() + or + index = nSubPattern and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2824,6 +5108,21 @@ module Raw { Expr getGuard() { case_label_item_guards(this, result) } } + private Element getImmediateChildOfCaseLabelItem(CaseLabelItem e, int index) { + exists(int n, int nPattern, int nGuard | + n = 0 and + nPattern = n + 1 and + nGuard = nPattern + 1 and + ( + none() + or + index = n and result = e.getPattern() + or + index = nPattern and result = e.getGuard() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2851,6 +5150,27 @@ module Raw { AvailabilityInfo getAvailability() { condition_element_availabilities(this, result) } } + private Element getImmediateChildOfConditionElement(ConditionElement e, int index) { + exists(int n, int nBoolean, int nPattern, int nInitializer, int nAvailability | + n = 0 and + nBoolean = n + 1 and + nPattern = nBoolean + 1 and + nInitializer = nPattern + 1 and + nAvailability = nInitializer + 1 and + ( + none() + or + index = n and result = e.getBoolean() + or + index = nBoolean and result = e.getPattern() + or + index = nPattern and result = e.getInitializer() + or + index = nInitializer and result = e.getAvailability() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2866,6 +5186,23 @@ module Raw { * Gets the `index`th element of this statement condition (0-based). */ ConditionElement getElement(int index) { stmt_condition_elements(this, index, result) } + + /** + * Gets the number of elements of this statement condition. + */ + int getNumberOfElements() { result = count(int i | stmt_condition_elements(this, i, _)) } + } + + private Element getImmediateChildOfStmtCondition(StmtCondition e, int index) { + exists(int n, int nElement | + n = 0 and + nElement = n + e.getNumberOfElements() and + ( + none() + or + result = e.getElement(index - n) + ) + ) } /** @@ -2878,6 +5215,24 @@ module Raw { * Gets the `index`th element of this brace statement (0-based). */ AstNode getElement(int index) { brace_stmt_elements(this, index, result) } + + /** + * Gets the number of elements of this brace statement. + */ + int getNumberOfElements() { result = count(int i | brace_stmt_elements(this, i, _)) } + } + + private Element getImmediateChildOfBraceStmt(BraceStmt e, int index) { + exists(int n, int nVariable, int nElement | + n = 0 and + nVariable = n and + nElement = nVariable + e.getNumberOfElements() and + ( + none() + or + result = e.getElement(index - nVariable) + ) + ) } /** @@ -2897,6 +5252,8 @@ module Raw { Stmt getTarget() { break_stmt_targets(this, result) } } + private Element getImmediateChildOfBreakStmt(BreakStmt e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2908,17 +5265,45 @@ module Raw { */ CaseLabelItem getLabel(int index) { case_stmt_labels(this, index, result) } + /** + * Gets the number of labels of this case statement. + */ + int getNumberOfLabels() { result = count(int i | case_stmt_labels(this, i, _)) } + /** * Gets the `index`th variable of this case statement (0-based). */ VarDecl getVariable(int index) { case_stmt_variables(this, index, result) } + /** + * Gets the number of variables of this case statement. + */ + int getNumberOfVariables() { result = count(int i | case_stmt_variables(this, i, _)) } + /** * Gets the body of this case statement. */ Stmt getBody() { case_stmts(this, result) } } + private Element getImmediateChildOfCaseStmt(CaseStmt e, int index) { + exists(int n, int nLabel, int nVariable, int nBody | + n = 0 and + nLabel = n + e.getNumberOfLabels() and + nVariable = nLabel + e.getNumberOfVariables() and + nBody = nVariable + 1 and + ( + none() + or + result = e.getLabel(index - n) + or + result = e.getVariable(index - nLabel) + or + index = nVariable and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2936,6 +5321,8 @@ module Raw { Stmt getTarget() { continue_stmt_targets(this, result) } } + private Element getImmediateChildOfContinueStmt(ContinueStmt e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2948,6 +5335,18 @@ module Raw { BraceStmt getBody() { defer_stmts(this, result) } } + private Element getImmediateChildOfDeferStmt(DeferStmt e, int index) { + exists(int n, int nBody | + n = 0 and + nBody = n + 1 and + ( + none() + or + index = n and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. * A statement that takes a non-copyable value and destructs its members/fields. @@ -2966,6 +5365,18 @@ module Raw { Expr getSubExpr() { discard_stmts(this, result) } } + private Element getImmediateChildOfDiscardStmt(DiscardStmt e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2973,6 +5384,8 @@ module Raw { override string toString() { result = "FailStmt" } } + private Element getImmediateChildOfFailStmt(FailStmt e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2990,6 +5403,8 @@ module Raw { CaseStmt getFallthroughDest() { fallthrough_stmts(this, _, result) } } + private Element getImmediateChildOfFallthroughStmt(FallthroughStmt e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3017,6 +5432,8 @@ module Raw { string getMessage() { pound_assert_stmts(this, _, result) } } + private Element getImmediateChildOfPoundAssertStmt(PoundAssertStmt e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3029,6 +5446,18 @@ module Raw { Expr getResult() { return_stmt_results(this, result) } } + private Element getImmediateChildOfReturnStmt(ReturnStmt e, int index) { + exists(int n, int nResult | + n = 0 and + nResult = n + 1 and + ( + none() + or + index = n and result = e.getResult() + ) + ) + } + /** * INTERNAL: Do not use. * A statement implicitly wrapping values to be used in branches of if/switch expressions. For example in: @@ -3050,6 +5479,18 @@ module Raw { Expr getResult() { then_stmts(this, result) } } + private Element getImmediateChildOfThenStmt(ThenStmt e, int index) { + exists(int n, int nResult | + n = 0 and + nResult = n + 1 and + ( + none() + or + index = n and result = e.getResult() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3062,6 +5503,18 @@ module Raw { Expr getSubExpr() { throw_stmts(this, result) } } + private Element getImmediateChildOfThrowStmt(ThrowStmt e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3072,6 +5525,23 @@ module Raw { * Gets the `index`th result of this yield statement (0-based). */ Expr getResult(int index) { yield_stmt_results(this, index, result) } + + /** + * Gets the number of results of this yield statement. + */ + int getNumberOfResults() { result = count(int i | yield_stmt_results(this, i, _)) } + } + + private Element getImmediateChildOfYieldStmt(YieldStmt e, int index) { + exists(int n, int nResult | + n = 0 and + nResult = n + e.getNumberOfResults() and + ( + none() + or + result = e.getResult(index - n) + ) + ) } /** @@ -3089,6 +5559,26 @@ module Raw { * Gets the `index`th catch of this do catch statement (0-based). */ CaseStmt getCatch(int index) { do_catch_stmt_catches(this, index, result) } + + /** + * Gets the number of catches of this do catch statement. + */ + int getNumberOfCatches() { result = count(int i | do_catch_stmt_catches(this, i, _)) } + } + + private Element getImmediateChildOfDoCatchStmt(DoCatchStmt e, int index) { + exists(int n, int nBody, int nCatch | + n = 0 and + nBody = n + 1 and + nCatch = nBody + e.getNumberOfCatches() and + ( + none() + or + index = n and result = e.getBody() + or + result = e.getCatch(index - nBody) + ) + ) } /** @@ -3103,6 +5593,18 @@ module Raw { BraceStmt getBody() { do_stmts(this, result) } } + private Element getImmediateChildOfDoStmt(DoStmt e, int index) { + exists(int n, int nBody | + n = 0 and + nBody = n + 1 and + ( + none() + or + index = n and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3114,6 +5616,11 @@ module Raw { */ VarDecl getVariable(int index) { for_each_stmt_variables(this, index, result) } + /** + * Gets the number of variables of this for each statement. + */ + int getNumberOfVariables() { result = count(int i | for_each_stmt_variables(this, i, _)) } + /** * Gets the pattern of this for each statement. */ @@ -3140,6 +5647,35 @@ module Raw { BraceStmt getBody() { for_each_stmts(this, _, result) } } + private Element getImmediateChildOfForEachStmt(ForEachStmt e, int index) { + exists( + int n, int nVariable, int nPattern, int nWhere, int nIteratorVar, int nNextCall, int nBody + | + n = 0 and + nVariable = n + e.getNumberOfVariables() and + nPattern = nVariable + 1 and + nWhere = nPattern + 1 and + nIteratorVar = nWhere + 1 and + nNextCall = nIteratorVar + 1 and + nBody = nNextCall + 1 and + ( + none() + or + result = e.getVariable(index - n) + or + index = nVariable and result = e.getPattern() + or + index = nPattern and result = e.getWhere() + or + index = nWhere and result = e.getIteratorVar() + or + index = nIteratorVar and result = e.getNextCall() + or + index = nNextCall and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3167,6 +5703,21 @@ module Raw { Stmt getBody() { repeat_while_stmts(this, _, result) } } + private Element getImmediateChildOfRepeatWhileStmt(RepeatWhileStmt e, int index) { + exists(int n, int nCondition, int nBody | + n = 0 and + nCondition = n + 1 and + nBody = nCondition + 1 and + ( + none() + or + index = n and result = e.getCondition() + or + index = nCondition and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3182,6 +5733,26 @@ module Raw { * Gets the `index`th case of this switch statement (0-based). */ CaseStmt getCase(int index) { switch_stmt_cases(this, index, result) } + + /** + * Gets the number of cases of this switch statement. + */ + int getNumberOfCases() { result = count(int i | switch_stmt_cases(this, i, _)) } + } + + private Element getImmediateChildOfSwitchStmt(SwitchStmt e, int index) { + exists(int n, int nExpr, int nCase | + n = 0 and + nExpr = n + 1 and + nCase = nExpr + e.getNumberOfCases() and + ( + none() + or + index = n and result = e.getExpr() + or + result = e.getCase(index - nExpr) + ) + ) } /** @@ -3196,6 +5767,21 @@ module Raw { BraceStmt getBody() { guard_stmts(this, result) } } + private Element getImmediateChildOfGuardStmt(GuardStmt e, int index) { + exists(int n, int nCondition, int nBody | + n = 0 and + nCondition = n + 1 and + nBody = nCondition + 1 and + ( + none() + or + index = n and result = e.getCondition() + or + index = nCondition and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3213,6 +5799,24 @@ module Raw { Stmt getElse() { if_stmt_elses(this, result) } } + private Element getImmediateChildOfIfStmt(IfStmt e, int index) { + exists(int n, int nCondition, int nThen, int nElse | + n = 0 and + nCondition = n + 1 and + nThen = nCondition + 1 and + nElse = nThen + 1 and + ( + none() + or + index = n and result = e.getCondition() + or + index = nCondition and result = e.getThen() + or + index = nThen and result = e.getElse() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3225,6 +5829,21 @@ module Raw { Stmt getBody() { while_stmts(this, result) } } + private Element getImmediateChildOfWhileStmt(WhileStmt e, int index) { + exists(int n, int nCondition, int nBody | + n = 0 and + nCondition = n + 1 and + nBody = nCondition + 1 and + ( + none() + or + index = n and result = e.getCondition() + or + index = nCondition and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3258,6 +5877,8 @@ module Raw { Type getType() { type_reprs(this, result) } } + private Element getImmediateChildOfTypeRepr(TypeRepr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3272,6 +5893,13 @@ module Raw { */ Type getParamType(int index) { any_function_type_param_types(this, index, result) } + /** + * Gets the number of parameter types of this function type. + */ + int getNumberOfParamTypes() { + result = count(int i | any_function_type_param_types(this, i, _)) + } + /** * Holds if this type refers to a throwing function. */ @@ -3325,6 +5953,10 @@ module Raw { AssociatedTypeDecl getAssociatedTypeDecl() { dependent_member_types(this, _, result) } } + private Element getImmediateChildOfDependentMemberType(DependentMemberType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3337,6 +5969,8 @@ module Raw { Type getStaticSelfType() { dynamic_self_types(this, result) } } + private Element getImmediateChildOfDynamicSelfType(DynamicSelfType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3344,6 +5978,8 @@ module Raw { override string toString() { result = "ErrorType" } } + private Element getImmediateChildOfErrorType(ErrorType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3356,6 +5992,8 @@ module Raw { Type getConstraint() { existential_types(this, result) } } + private Element getImmediateChildOfExistentialType(ExistentialType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3368,6 +6006,8 @@ module Raw { Type getObjectType() { in_out_types(this, result) } } + private Element getImmediateChildOfInOutType(InOutType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3380,6 +6020,8 @@ module Raw { string getValue() { integer_types(this, result) } } + private Element getImmediateChildOfIntegerType(IntegerType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3392,6 +6034,8 @@ module Raw { Type getObjectType() { l_value_types(this, result) } } + private Element getImmediateChildOfLValueType(LValueType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3404,6 +6048,8 @@ module Raw { ModuleDecl getModule() { module_types(this, result) } } + private Element getImmediateChildOfModuleType(ModuleType e, int index) { none() } + /** * INTERNAL: Do not use. * A type of PackElementExpr, see PackElementExpr for more information. @@ -3417,6 +6063,8 @@ module Raw { Type getPackType() { pack_element_types(this, result) } } + private Element getImmediateChildOfPackElementType(PackElementType e, int index) { none() } + /** * INTERNAL: Do not use. * A type of PackExpansionExpr, see PackExpansionExpr for more information. @@ -3435,6 +6083,8 @@ module Raw { Type getCountType() { pack_expansion_types(this, _, result) } } + private Element getImmediateChildOfPackExpansionType(PackExpansionType e, int index) { none() } + /** * INTERNAL: Do not use. * An actual type of a pack expression at the instatiation point. @@ -3455,8 +6105,15 @@ module Raw { * Gets the `index`th element of this pack type (0-based). */ Type getElement(int index) { pack_type_elements(this, index, result) } + + /** + * Gets the number of elements of this pack type. + */ + int getNumberOfElements() { result = count(int i | pack_type_elements(this, i, _)) } } + private Element getImmediateChildOfPackType(PackType e, int index) { none() } + /** * INTERNAL: Do not use. * A sugar type of the form `P` with `P` a protocol. @@ -3475,6 +6132,17 @@ module Raw { * Gets the `index`th argument of this parameterized protocol type (0-based). */ Type getArg(int index) { parameterized_protocol_type_args(this, index, result) } + + /** + * Gets the number of arguments of this parameterized protocol type. + */ + int getNumberOfArgs() { result = count(int i | parameterized_protocol_type_args(this, i, _)) } + } + + private Element getImmediateChildOfParameterizedProtocolType( + ParameterizedProtocolType e, int index + ) { + none() } /** @@ -3487,6 +6155,17 @@ module Raw { * Gets the `index`th member of this protocol composition type (0-based). */ Type getMember(int index) { protocol_composition_type_members(this, index, result) } + + /** + * Gets the number of members of this protocol composition type. + */ + int getNumberOfMembers() { + result = count(int i | protocol_composition_type_members(this, i, _)) + } + } + + private Element getImmediateChildOfProtocolCompositionType(ProtocolCompositionType e, int index) { + none() } /** @@ -3520,12 +6199,24 @@ module Raw { */ Type getType(int index) { tuple_type_types(this, index, result) } + /** + * Gets the number of types of this tuple type. + */ + int getNumberOfTypes() { result = count(int i | tuple_type_types(this, i, _)) } + /** * Gets the `index`th name of this tuple type (0-based), if it exists. */ string getName(int index) { tuple_type_names(this, index, result) } + + /** + * Gets the number of names of this tuple type. + */ + int getNumberOfNames() { result = count(int i | tuple_type_names(this, i, _)) } } + private Element getImmediateChildOfTupleType(TupleType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3533,6 +6224,8 @@ module Raw { override string toString() { result = "UnresolvedType" } } + private Element getImmediateChildOfUnresolvedType(UnresolvedType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3556,6 +6249,11 @@ module Raw { * Gets the `index`th protocol of this archetype type (0-based). */ ProtocolDecl getProtocol(int index) { archetype_type_protocols(this, index, result) } + + /** + * Gets the number of protocols of this archetype type. + */ + int getNumberOfProtocols() { result = count(int i | archetype_type_protocols(this, i, _)) } } /** @@ -3565,6 +6263,10 @@ module Raw { override string toString() { result = "BuiltinBridgeObjectType" } } + private Element getImmediateChildOfBuiltinBridgeObjectType(BuiltinBridgeObjectType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3572,6 +6274,12 @@ module Raw { override string toString() { result = "BuiltinDefaultActorStorageType" } } + private Element getImmediateChildOfBuiltinDefaultActorStorageType( + BuiltinDefaultActorStorageType e, int index + ) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3579,6 +6287,10 @@ module Raw { override string toString() { result = "BuiltinExecutorType" } } + private Element getImmediateChildOfBuiltinExecutorType(BuiltinExecutorType e, int index) { + none() + } + /** * INTERNAL: Do not use. * A builtin type representing N values stored contiguously. @@ -3587,6 +6299,10 @@ module Raw { override string toString() { result = "BuiltinFixedArrayType" } } + private Element getImmediateChildOfBuiltinFixedArrayType(BuiltinFixedArrayType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3594,6 +6310,8 @@ module Raw { override string toString() { result = "BuiltinFloatType" } } + private Element getImmediateChildOfBuiltinFloatType(BuiltinFloatType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3601,6 +6319,8 @@ module Raw { override string toString() { result = "BuiltinJobType" } } + private Element getImmediateChildOfBuiltinJobType(BuiltinJobType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3608,6 +6328,10 @@ module Raw { override string toString() { result = "BuiltinNativeObjectType" } } + private Element getImmediateChildOfBuiltinNativeObjectType(BuiltinNativeObjectType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3615,6 +6339,10 @@ module Raw { override string toString() { result = "BuiltinRawPointerType" } } + private Element getImmediateChildOfBuiltinRawPointerType(BuiltinRawPointerType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3622,6 +6350,12 @@ module Raw { override string toString() { result = "BuiltinRawUnsafeContinuationType" } } + private Element getImmediateChildOfBuiltinRawUnsafeContinuationType( + BuiltinRawUnsafeContinuationType e, int index + ) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3629,6 +6363,12 @@ module Raw { override string toString() { result = "BuiltinUnsafeValueBufferType" } } + private Element getImmediateChildOfBuiltinUnsafeValueBufferType( + BuiltinUnsafeValueBufferType e, int index + ) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3636,6 +6376,8 @@ module Raw { override string toString() { result = "BuiltinVectorType" } } + private Element getImmediateChildOfBuiltinVectorType(BuiltinVectorType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3643,6 +6385,10 @@ module Raw { override string toString() { result = "ExistentialMetatypeType" } } + private Element getImmediateChildOfExistentialMetatypeType(ExistentialMetatypeType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3650,6 +6396,8 @@ module Raw { override string toString() { result = "FunctionType" } } + private Element getImmediateChildOfFunctionType(FunctionType e, int index) { none() } + /** * INTERNAL: Do not use. * The type of a generic function with type parameters @@ -3663,6 +6411,17 @@ module Raw { GenericTypeParamType getGenericParam(int index) { generic_function_type_generic_params(this, index, result) } + + /** + * Gets the number of type parameters of this generic type. + */ + int getNumberOfGenericParams() { + result = count(int i | generic_function_type_generic_params(this, i, _)) + } + } + + private Element getImmediateChildOfGenericFunctionType(GenericFunctionType e, int index) { + none() } /** @@ -3672,6 +6431,10 @@ module Raw { override string toString() { result = "GenericTypeParamType" } } + private Element getImmediateChildOfGenericTypeParamType(GenericTypeParamType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3679,6 +6442,8 @@ module Raw { override string toString() { result = "MetatypeType" } } + private Element getImmediateChildOfMetatypeType(MetatypeType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3698,6 +6463,8 @@ module Raw { Type getType() { paren_types(this, result) } } + private Element getImmediateChildOfParenType(ParenType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3715,6 +6482,8 @@ module Raw { TypeAliasDecl getDecl() { type_alias_types(this, result) } } + private Element getImmediateChildOfTypeAliasType(TypeAliasType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3722,6 +6491,8 @@ module Raw { override string toString() { result = "UnboundGenericType" } } + private Element getImmediateChildOfUnboundGenericType(UnboundGenericType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3729,6 +6500,10 @@ module Raw { override string toString() { result = "UnmanagedStorageType" } } + private Element getImmediateChildOfUnmanagedStorageType(UnmanagedStorageType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3736,6 +6511,8 @@ module Raw { override string toString() { result = "UnownedStorageType" } } + private Element getImmediateChildOfUnownedStorageType(UnownedStorageType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3743,6 +6520,8 @@ module Raw { override string toString() { result = "WeakStorageType" } } + private Element getImmediateChildOfWeakStorageType(WeakStorageType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3751,6 +6530,11 @@ module Raw { * Gets the `index`th argument type of this bound generic type (0-based). */ Type getArgType(int index) { bound_generic_type_arg_types(this, index, result) } + + /** + * Gets the number of argument types of this bound generic type. + */ + int getNumberOfArgTypes() { result = count(int i | bound_generic_type_arg_types(this, i, _)) } } /** @@ -3760,6 +6544,12 @@ module Raw { override string toString() { result = "BuiltinIntegerLiteralType" } } + private Element getImmediateChildOfBuiltinIntegerLiteralType( + BuiltinIntegerLiteralType e, int index + ) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3772,6 +6562,8 @@ module Raw { int getWidth() { builtin_integer_type_widths(this, result) } } + private Element getImmediateChildOfBuiltinIntegerType(BuiltinIntegerType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3789,6 +6581,8 @@ module Raw { Type getValueType() { dictionary_types(this, _, result) } } + private Element getImmediateChildOfDictionaryType(DictionaryType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3806,6 +6600,8 @@ module Raw { Type getElementType() { inline_array_types(this, _, result) } } + private Element getImmediateChildOfInlineArrayType(InlineArrayType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3831,6 +6627,10 @@ module Raw { OpaqueTypeDecl getDeclaration() { opaque_type_archetype_types(this, result) } } + private Element getImmediateChildOfOpaqueTypeArchetypeType(OpaqueTypeArchetypeType e, int index) { + none() + } + /** * INTERNAL: Do not use. * An archetype type of PackType. @@ -3839,6 +6639,8 @@ module Raw { override string toString() { result = "PackArchetypeType" } } + private Element getImmediateChildOfPackArchetypeType(PackArchetypeType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3846,6 +6648,10 @@ module Raw { override string toString() { result = "PrimaryArchetypeType" } } + private Element getImmediateChildOfPrimaryArchetypeType(PrimaryArchetypeType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3863,6 +6669,8 @@ module Raw { override string toString() { result = "ArraySliceType" } } + private Element getImmediateChildOfArraySliceType(ArraySliceType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3870,6 +6678,10 @@ module Raw { override string toString() { result = "BoundGenericClassType" } } + private Element getImmediateChildOfBoundGenericClassType(BoundGenericClassType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3877,6 +6689,10 @@ module Raw { override string toString() { result = "BoundGenericEnumType" } } + private Element getImmediateChildOfBoundGenericEnumType(BoundGenericEnumType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3884,6 +6700,10 @@ module Raw { override string toString() { result = "BoundGenericStructType" } } + private Element getImmediateChildOfBoundGenericStructType(BoundGenericStructType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3891,6 +6711,8 @@ module Raw { override string toString() { result = "ClassType" } } + private Element getImmediateChildOfClassType(ClassType e, int index) { none() } + /** * INTERNAL: Do not use. * An archetype type of PackElementType. @@ -3899,6 +6721,10 @@ module Raw { override string toString() { result = "ElementArchetypeType" } } + private Element getImmediateChildOfElementArchetypeType(ElementArchetypeType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3906,6 +6732,8 @@ module Raw { override string toString() { result = "EnumType" } } + private Element getImmediateChildOfEnumType(EnumType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3913,6 +6741,10 @@ module Raw { override string toString() { result = "ExistentialArchetypeType" } } + private Element getImmediateChildOfExistentialArchetypeType(ExistentialArchetypeType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3920,6 +6752,8 @@ module Raw { override string toString() { result = "OptionalType" } } + private Element getImmediateChildOfOptionalType(OptionalType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3927,6 +6761,8 @@ module Raw { override string toString() { result = "ProtocolType" } } + private Element getImmediateChildOfProtocolType(ProtocolType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3934,10 +6770,534 @@ module Raw { override string toString() { result = "StructType" } } + private Element getImmediateChildOfStructType(StructType e, int index) { none() } + /** * INTERNAL: Do not use. */ class VariadicSequenceType extends @variadic_sequence_type, UnarySyntaxSugarType { override string toString() { result = "VariadicSequenceType" } } + + private Element getImmediateChildOfVariadicSequenceType(VariadicSequenceType e, int index) { + none() + } + + /** + * Gets the immediate child indexed at `index`. Indexes are not guaranteed to be contiguous, but are guaranteed to be distinct. + */ + pragma[nomagic] + Element getImmediateChild(Element e, int index) { + // why does this look more complicated than it should? + // * none() simplifies generation, as we can append `or ...` without a special case for the first item + none() + or + result = getImmediateChildOfComment(e, index) + or + result = getImmediateChildOfDbFile(e, index) + or + result = getImmediateChildOfDbLocation(e, index) + or + result = getImmediateChildOfDiagnostics(e, index) + or + result = getImmediateChildOfAvailabilityInfo(e, index) + or + result = getImmediateChildOfAvailabilitySpec(e, index) + or + result = getImmediateChildOfKeyPathComponent(e, index) + or + result = getImmediateChildOfMacroRole(e, index) + or + result = getImmediateChildOfUnspecifiedElement(e, index) + or + result = getImmediateChildOfCapturedDecl(e, index) + or + result = getImmediateChildOfEnumCaseDecl(e, index) + or + result = getImmediateChildOfExtensionDecl(e, index) + or + result = getImmediateChildOfIfConfigDecl(e, index) + or + result = getImmediateChildOfImportDecl(e, index) + or + result = getImmediateChildOfMissingMemberDecl(e, index) + or + result = getImmediateChildOfPatternBindingDecl(e, index) + or + result = getImmediateChildOfPoundDiagnosticDecl(e, index) + or + result = getImmediateChildOfPrecedenceGroupDecl(e, index) + or + result = getImmediateChildOfTopLevelCodeDecl(e, index) + or + result = getImmediateChildOfUsingDecl(e, index) + or + result = getImmediateChildOfEnumElementDecl(e, index) + or + result = getImmediateChildOfInfixOperatorDecl(e, index) + or + result = getImmediateChildOfMacroDecl(e, index) + or + result = getImmediateChildOfPostfixOperatorDecl(e, index) + or + result = getImmediateChildOfPrefixOperatorDecl(e, index) + or + result = getImmediateChildOfDeinitializer(e, index) + or + result = getImmediateChildOfInitializer(e, index) + or + result = getImmediateChildOfModuleDecl(e, index) + or + result = getImmediateChildOfSubscriptDecl(e, index) + or + result = getImmediateChildOfAccessor(e, index) + or + result = getImmediateChildOfAssociatedTypeDecl(e, index) + or + result = getImmediateChildOfConcreteVarDecl(e, index) + or + result = getImmediateChildOfGenericTypeParamDecl(e, index) + or + result = getImmediateChildOfNamedFunction(e, index) + or + result = getImmediateChildOfOpaqueTypeDecl(e, index) + or + result = getImmediateChildOfParamDecl(e, index) + or + result = getImmediateChildOfTypeAliasDecl(e, index) + or + result = getImmediateChildOfClassDecl(e, index) + or + result = getImmediateChildOfEnumDecl(e, index) + or + result = getImmediateChildOfProtocolDecl(e, index) + or + result = getImmediateChildOfStructDecl(e, index) + or + result = getImmediateChildOfArgument(e, index) + or + result = getImmediateChildOfAppliedPropertyWrapperExpr(e, index) + or + result = getImmediateChildOfAssignExpr(e, index) + or + result = getImmediateChildOfBindOptionalExpr(e, index) + or + result = getImmediateChildOfCaptureListExpr(e, index) + or + result = getImmediateChildOfConsumeExpr(e, index) + or + result = getImmediateChildOfCopyExpr(e, index) + or + result = getImmediateChildOfCurrentContextIsolationExpr(e, index) + or + result = getImmediateChildOfDeclRefExpr(e, index) + or + result = getImmediateChildOfDefaultArgumentExpr(e, index) + or + result = getImmediateChildOfDiscardAssignmentExpr(e, index) + or + result = getImmediateChildOfDotSyntaxBaseIgnoredExpr(e, index) + or + result = getImmediateChildOfDynamicTypeExpr(e, index) + or + result = getImmediateChildOfEnumIsCaseExpr(e, index) + or + result = getImmediateChildOfErrorExpr(e, index) + or + result = getImmediateChildOfExtractFunctionIsolationExpr(e, index) + or + result = getImmediateChildOfForceValueExpr(e, index) + or + result = getImmediateChildOfIfExpr(e, index) + or + result = getImmediateChildOfInOutExpr(e, index) + or + result = getImmediateChildOfKeyPathApplicationExpr(e, index) + or + result = getImmediateChildOfKeyPathDotExpr(e, index) + or + result = getImmediateChildOfKeyPathExpr(e, index) + or + result = getImmediateChildOfLazyInitializationExpr(e, index) + or + result = getImmediateChildOfMakeTemporarilyEscapableExpr(e, index) + or + result = getImmediateChildOfMaterializePackExpr(e, index) + or + result = getImmediateChildOfObjCSelectorExpr(e, index) + or + result = getImmediateChildOfOneWayExpr(e, index) + or + result = getImmediateChildOfOpaqueValueExpr(e, index) + or + result = getImmediateChildOfOpenExistentialExpr(e, index) + or + result = getImmediateChildOfOptionalEvaluationExpr(e, index) + or + result = getImmediateChildOfOtherInitializerRefExpr(e, index) + or + result = getImmediateChildOfOverloadedDeclRefExpr(e, index) + or + result = getImmediateChildOfPackElementExpr(e, index) + or + result = getImmediateChildOfPackExpansionExpr(e, index) + or + result = getImmediateChildOfPropertyWrapperValuePlaceholderExpr(e, index) + or + result = getImmediateChildOfRebindSelfInInitializerExpr(e, index) + or + result = getImmediateChildOfSequenceExpr(e, index) + or + result = getImmediateChildOfSingleValueStmtExpr(e, index) + or + result = getImmediateChildOfSuperRefExpr(e, index) + or + result = getImmediateChildOfTapExpr(e, index) + or + result = getImmediateChildOfTupleElementExpr(e, index) + or + result = getImmediateChildOfTupleExpr(e, index) + or + result = getImmediateChildOfTypeExpr(e, index) + or + result = getImmediateChildOfTypeValueExpr(e, index) + or + result = getImmediateChildOfUnresolvedDeclRefExpr(e, index) + or + result = getImmediateChildOfUnresolvedDotExpr(e, index) + or + result = getImmediateChildOfUnresolvedMemberExpr(e, index) + or + result = getImmediateChildOfUnresolvedPatternExpr(e, index) + or + result = getImmediateChildOfUnresolvedSpecializeExpr(e, index) + or + result = getImmediateChildOfVarargExpansionExpr(e, index) + or + result = getImmediateChildOfAbiSafeConversionExpr(e, index) + or + result = getImmediateChildOfActorIsolationErasureExpr(e, index) + or + result = getImmediateChildOfAnyHashableErasureExpr(e, index) + or + result = getImmediateChildOfArchetypeToSuperExpr(e, index) + or + result = getImmediateChildOfArrayExpr(e, index) + or + result = getImmediateChildOfArrayToPointerExpr(e, index) + or + result = getImmediateChildOfAutoClosureExpr(e, index) + or + result = getImmediateChildOfAwaitExpr(e, index) + or + result = getImmediateChildOfBinaryExpr(e, index) + or + result = getImmediateChildOfBorrowExpr(e, index) + or + result = getImmediateChildOfBridgeFromObjCExpr(e, index) + or + result = getImmediateChildOfBridgeToObjCExpr(e, index) + or + result = getImmediateChildOfCallExpr(e, index) + or + result = getImmediateChildOfClassMetatypeToObjectExpr(e, index) + or + result = getImmediateChildOfCoerceExpr(e, index) + or + result = getImmediateChildOfCollectionUpcastConversionExpr(e, index) + or + result = getImmediateChildOfConditionalBridgeFromObjCExpr(e, index) + or + result = getImmediateChildOfCovariantFunctionConversionExpr(e, index) + or + result = getImmediateChildOfCovariantReturnConversionExpr(e, index) + or + result = getImmediateChildOfDerivedToBaseExpr(e, index) + or + result = getImmediateChildOfDestructureTupleExpr(e, index) + or + result = getImmediateChildOfDictionaryExpr(e, index) + or + result = getImmediateChildOfDifferentiableFunctionExpr(e, index) + or + result = getImmediateChildOfDifferentiableFunctionExtractOriginalExpr(e, index) + or + result = getImmediateChildOfDotSelfExpr(e, index) + or + result = getImmediateChildOfErasureExpr(e, index) + or + result = getImmediateChildOfExistentialMetatypeToObjectExpr(e, index) + or + result = getImmediateChildOfExplicitClosureExpr(e, index) + or + result = getImmediateChildOfForceTryExpr(e, index) + or + result = getImmediateChildOfForeignObjectConversionExpr(e, index) + or + result = getImmediateChildOfFunctionConversionExpr(e, index) + or + result = getImmediateChildOfInOutToPointerExpr(e, index) + or + result = getImmediateChildOfInjectIntoOptionalExpr(e, index) + or + result = getImmediateChildOfInterpolatedStringLiteralExpr(e, index) + or + result = getImmediateChildOfLinearFunctionExpr(e, index) + or + result = getImmediateChildOfLinearFunctionExtractOriginalExpr(e, index) + or + result = getImmediateChildOfLinearToDifferentiableFunctionExpr(e, index) + or + result = getImmediateChildOfLoadExpr(e, index) + or + result = getImmediateChildOfMemberRefExpr(e, index) + or + result = getImmediateChildOfMetatypeConversionExpr(e, index) + or + result = getImmediateChildOfNilLiteralExpr(e, index) + or + result = getImmediateChildOfObjectLiteralExpr(e, index) + or + result = getImmediateChildOfOptionalTryExpr(e, index) + or + result = getImmediateChildOfParenExpr(e, index) + or + result = getImmediateChildOfPointerToPointerExpr(e, index) + or + result = getImmediateChildOfPostfixUnaryExpr(e, index) + or + result = getImmediateChildOfPrefixUnaryExpr(e, index) + or + result = getImmediateChildOfProtocolMetatypeToObjectExpr(e, index) + or + result = getImmediateChildOfRegexLiteralExpr(e, index) + or + result = getImmediateChildOfStringToPointerExpr(e, index) + or + result = getImmediateChildOfSubscriptExpr(e, index) + or + result = getImmediateChildOfTryExpr(e, index) + or + result = getImmediateChildOfUnderlyingToOpaqueExpr(e, index) + or + result = getImmediateChildOfUnevaluatedInstanceExpr(e, index) + or + result = getImmediateChildOfUnreachableExpr(e, index) + or + result = getImmediateChildOfUnresolvedMemberChainResultExpr(e, index) + or + result = getImmediateChildOfUnresolvedTypeConversionExpr(e, index) + or + result = getImmediateChildOfUnsafeCastExpr(e, index) + or + result = getImmediateChildOfUnsafeExpr(e, index) + or + result = getImmediateChildOfBooleanLiteralExpr(e, index) + or + result = getImmediateChildOfConditionalCheckedCastExpr(e, index) + or + result = getImmediateChildOfDotSyntaxCallExpr(e, index) + or + result = getImmediateChildOfDynamicMemberRefExpr(e, index) + or + result = getImmediateChildOfDynamicSubscriptExpr(e, index) + or + result = getImmediateChildOfForcedCheckedCastExpr(e, index) + or + result = getImmediateChildOfInitializerRefCallExpr(e, index) + or + result = getImmediateChildOfIsExpr(e, index) + or + result = getImmediateChildOfMagicIdentifierLiteralExpr(e, index) + or + result = getImmediateChildOfStringLiteralExpr(e, index) + or + result = getImmediateChildOfFloatLiteralExpr(e, index) + or + result = getImmediateChildOfIntegerLiteralExpr(e, index) + or + result = getImmediateChildOfAnyPattern(e, index) + or + result = getImmediateChildOfBindingPattern(e, index) + or + result = getImmediateChildOfBoolPattern(e, index) + or + result = getImmediateChildOfEnumElementPattern(e, index) + or + result = getImmediateChildOfExprPattern(e, index) + or + result = getImmediateChildOfIsPattern(e, index) + or + result = getImmediateChildOfNamedPattern(e, index) + or + result = getImmediateChildOfOptionalSomePattern(e, index) + or + result = getImmediateChildOfParenPattern(e, index) + or + result = getImmediateChildOfTuplePattern(e, index) + or + result = getImmediateChildOfTypedPattern(e, index) + or + result = getImmediateChildOfCaseLabelItem(e, index) + or + result = getImmediateChildOfConditionElement(e, index) + or + result = getImmediateChildOfStmtCondition(e, index) + or + result = getImmediateChildOfBraceStmt(e, index) + or + result = getImmediateChildOfBreakStmt(e, index) + or + result = getImmediateChildOfCaseStmt(e, index) + or + result = getImmediateChildOfContinueStmt(e, index) + or + result = getImmediateChildOfDeferStmt(e, index) + or + result = getImmediateChildOfDiscardStmt(e, index) + or + result = getImmediateChildOfFailStmt(e, index) + or + result = getImmediateChildOfFallthroughStmt(e, index) + or + result = getImmediateChildOfPoundAssertStmt(e, index) + or + result = getImmediateChildOfReturnStmt(e, index) + or + result = getImmediateChildOfThenStmt(e, index) + or + result = getImmediateChildOfThrowStmt(e, index) + or + result = getImmediateChildOfYieldStmt(e, index) + or + result = getImmediateChildOfDoCatchStmt(e, index) + or + result = getImmediateChildOfDoStmt(e, index) + or + result = getImmediateChildOfForEachStmt(e, index) + or + result = getImmediateChildOfRepeatWhileStmt(e, index) + or + result = getImmediateChildOfSwitchStmt(e, index) + or + result = getImmediateChildOfGuardStmt(e, index) + or + result = getImmediateChildOfIfStmt(e, index) + or + result = getImmediateChildOfWhileStmt(e, index) + or + result = getImmediateChildOfTypeRepr(e, index) + or + result = getImmediateChildOfDependentMemberType(e, index) + or + result = getImmediateChildOfDynamicSelfType(e, index) + or + result = getImmediateChildOfErrorType(e, index) + or + result = getImmediateChildOfExistentialType(e, index) + or + result = getImmediateChildOfInOutType(e, index) + or + result = getImmediateChildOfIntegerType(e, index) + or + result = getImmediateChildOfLValueType(e, index) + or + result = getImmediateChildOfModuleType(e, index) + or + result = getImmediateChildOfPackElementType(e, index) + or + result = getImmediateChildOfPackExpansionType(e, index) + or + result = getImmediateChildOfPackType(e, index) + or + result = getImmediateChildOfParameterizedProtocolType(e, index) + or + result = getImmediateChildOfProtocolCompositionType(e, index) + or + result = getImmediateChildOfTupleType(e, index) + or + result = getImmediateChildOfUnresolvedType(e, index) + or + result = getImmediateChildOfBuiltinBridgeObjectType(e, index) + or + result = getImmediateChildOfBuiltinDefaultActorStorageType(e, index) + or + result = getImmediateChildOfBuiltinExecutorType(e, index) + or + result = getImmediateChildOfBuiltinFixedArrayType(e, index) + or + result = getImmediateChildOfBuiltinFloatType(e, index) + or + result = getImmediateChildOfBuiltinJobType(e, index) + or + result = getImmediateChildOfBuiltinNativeObjectType(e, index) + or + result = getImmediateChildOfBuiltinRawPointerType(e, index) + or + result = getImmediateChildOfBuiltinRawUnsafeContinuationType(e, index) + or + result = getImmediateChildOfBuiltinUnsafeValueBufferType(e, index) + or + result = getImmediateChildOfBuiltinVectorType(e, index) + or + result = getImmediateChildOfExistentialMetatypeType(e, index) + or + result = getImmediateChildOfFunctionType(e, index) + or + result = getImmediateChildOfGenericFunctionType(e, index) + or + result = getImmediateChildOfGenericTypeParamType(e, index) + or + result = getImmediateChildOfMetatypeType(e, index) + or + result = getImmediateChildOfParenType(e, index) + or + result = getImmediateChildOfTypeAliasType(e, index) + or + result = getImmediateChildOfUnboundGenericType(e, index) + or + result = getImmediateChildOfUnmanagedStorageType(e, index) + or + result = getImmediateChildOfUnownedStorageType(e, index) + or + result = getImmediateChildOfWeakStorageType(e, index) + or + result = getImmediateChildOfBuiltinIntegerLiteralType(e, index) + or + result = getImmediateChildOfBuiltinIntegerType(e, index) + or + result = getImmediateChildOfDictionaryType(e, index) + or + result = getImmediateChildOfInlineArrayType(e, index) + or + result = getImmediateChildOfOpaqueTypeArchetypeType(e, index) + or + result = getImmediateChildOfPackArchetypeType(e, index) + or + result = getImmediateChildOfPrimaryArchetypeType(e, index) + or + result = getImmediateChildOfArraySliceType(e, index) + or + result = getImmediateChildOfBoundGenericClassType(e, index) + or + result = getImmediateChildOfBoundGenericEnumType(e, index) + or + result = getImmediateChildOfBoundGenericStructType(e, index) + or + result = getImmediateChildOfClassType(e, index) + or + result = getImmediateChildOfElementArchetypeType(e, index) + or + result = getImmediateChildOfEnumType(e, index) + or + result = getImmediateChildOfExistentialArchetypeType(e, index) + or + result = getImmediateChildOfOptionalType(e, index) + or + result = getImmediateChildOfProtocolType(e, index) + or + result = getImmediateChildOfStructType(e, index) + or + result = getImmediateChildOfVariadicSequenceType(e, index) + } } diff --git a/swift/ql/lib/codeql/swift/generated/Synth.qll b/swift/ql/lib/codeql/swift/generated/Synth.qll index 886fb8550470..27508df94e97 100644 --- a/swift/ql/lib/codeql/swift/generated/Synth.qll +++ b/swift/ql/lib/codeql/swift/generated/Synth.qll @@ -1453,66 +1453,84 @@ module Synth { /** * INTERNAL: Do not use. + * + * Gets the parent of synthetic element `e`. + */ + Raw::Element getSynthParent(TElement e) { none() } + + /** + * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAvailabilityInfo`, if possible. */ TAvailabilityInfo convertAvailabilityInfoFromRaw(Raw::Element e) { result = TAvailabilityInfo(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAvailabilitySpec`, if possible. */ TAvailabilitySpec convertAvailabilitySpecFromRaw(Raw::Element e) { result = TAvailabilitySpec(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TComment`, if possible. */ TComment convertCommentFromRaw(Raw::Element e) { result = TComment(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDbFile`, if possible. */ TDbFile convertDbFileFromRaw(Raw::Element e) { result = TDbFile(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDbLocation`, if possible. */ TDbLocation convertDbLocationFromRaw(Raw::Element e) { result = TDbLocation(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDiagnostics`, if possible. */ TDiagnostics convertDiagnosticsFromRaw(Raw::Element e) { result = TDiagnostics(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TKeyPathComponent`, if possible. */ TKeyPathComponent convertKeyPathComponentFromRaw(Raw::Element e) { result = TKeyPathComponent(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroRole`, if possible. */ TMacroRole convertMacroRoleFromRaw(Raw::Element e) { result = TMacroRole(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnknownFile`, if possible. */ TUnknownFile convertUnknownFileFromRaw(Raw::Element e) { none() } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnknownLocation`, if possible. */ TUnknownLocation convertUnknownLocationFromRaw(Raw::Element e) { none() } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnspecifiedElement`, if possible. */ TUnspecifiedElement convertUnspecifiedElementFromRaw(Raw::Element e) { @@ -1521,12 +1539,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAccessor`, if possible. */ TAccessor convertAccessorFromRaw(Raw::Element e) { result = TAccessor(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAssociatedTypeDecl`, if possible. */ TAssociatedTypeDecl convertAssociatedTypeDeclFromRaw(Raw::Element e) { @@ -1535,54 +1555,63 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCapturedDecl`, if possible. */ TCapturedDecl convertCapturedDeclFromRaw(Raw::Element e) { result = TCapturedDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TClassDecl`, if possible. */ TClassDecl convertClassDeclFromRaw(Raw::Element e) { result = TClassDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConcreteVarDecl`, if possible. */ TConcreteVarDecl convertConcreteVarDeclFromRaw(Raw::Element e) { result = TConcreteVarDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDeinitializer`, if possible. */ TDeinitializer convertDeinitializerFromRaw(Raw::Element e) { result = TDeinitializer(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TEnumCaseDecl`, if possible. */ TEnumCaseDecl convertEnumCaseDeclFromRaw(Raw::Element e) { result = TEnumCaseDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TEnumDecl`, if possible. */ TEnumDecl convertEnumDeclFromRaw(Raw::Element e) { result = TEnumDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TEnumElementDecl`, if possible. */ TEnumElementDecl convertEnumElementDeclFromRaw(Raw::Element e) { result = TEnumElementDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExtensionDecl`, if possible. */ TExtensionDecl convertExtensionDeclFromRaw(Raw::Element e) { result = TExtensionDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TGenericTypeParamDecl`, if possible. */ TGenericTypeParamDecl convertGenericTypeParamDeclFromRaw(Raw::Element e) { @@ -1591,18 +1620,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIfConfigDecl`, if possible. */ TIfConfigDecl convertIfConfigDeclFromRaw(Raw::Element e) { result = TIfConfigDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TImportDecl`, if possible. */ TImportDecl convertImportDeclFromRaw(Raw::Element e) { result = TImportDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInfixOperatorDecl`, if possible. */ TInfixOperatorDecl convertInfixOperatorDeclFromRaw(Raw::Element e) { @@ -1611,18 +1643,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInitializer`, if possible. */ TInitializer convertInitializerFromRaw(Raw::Element e) { result = TInitializer(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroDecl`, if possible. */ TMacroDecl convertMacroDeclFromRaw(Raw::Element e) { result = TMacroDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMissingMemberDecl`, if possible. */ TMissingMemberDecl convertMissingMemberDeclFromRaw(Raw::Element e) { @@ -1631,30 +1666,35 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TModuleDecl`, if possible. */ TModuleDecl convertModuleDeclFromRaw(Raw::Element e) { result = TModuleDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TNamedFunction`, if possible. */ TNamedFunction convertNamedFunctionFromRaw(Raw::Element e) { result = TNamedFunction(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOpaqueTypeDecl`, if possible. */ TOpaqueTypeDecl convertOpaqueTypeDeclFromRaw(Raw::Element e) { result = TOpaqueTypeDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParamDecl`, if possible. */ TParamDecl convertParamDeclFromRaw(Raw::Element e) { result = TParamDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPatternBindingDecl`, if possible. */ TPatternBindingDecl convertPatternBindingDeclFromRaw(Raw::Element e) { @@ -1663,6 +1703,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPostfixOperatorDecl`, if possible. */ TPostfixOperatorDecl convertPostfixOperatorDeclFromRaw(Raw::Element e) { @@ -1671,6 +1712,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPoundDiagnosticDecl`, if possible. */ TPoundDiagnosticDecl convertPoundDiagnosticDeclFromRaw(Raw::Element e) { @@ -1679,6 +1721,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPrecedenceGroupDecl`, if possible. */ TPrecedenceGroupDecl convertPrecedenceGroupDeclFromRaw(Raw::Element e) { @@ -1687,6 +1730,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPrefixOperatorDecl`, if possible. */ TPrefixOperatorDecl convertPrefixOperatorDeclFromRaw(Raw::Element e) { @@ -1695,42 +1739,49 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TProtocolDecl`, if possible. */ TProtocolDecl convertProtocolDeclFromRaw(Raw::Element e) { result = TProtocolDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructDecl`, if possible. */ TStructDecl convertStructDeclFromRaw(Raw::Element e) { result = TStructDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSubscriptDecl`, if possible. */ TSubscriptDecl convertSubscriptDeclFromRaw(Raw::Element e) { result = TSubscriptDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTopLevelCodeDecl`, if possible. */ TTopLevelCodeDecl convertTopLevelCodeDeclFromRaw(Raw::Element e) { result = TTopLevelCodeDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeAliasDecl`, if possible. */ TTypeAliasDecl convertTypeAliasDeclFromRaw(Raw::Element e) { result = TTypeAliasDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUsingDecl`, if possible. */ TUsingDecl convertUsingDeclFromRaw(Raw::Element e) { result = TUsingDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAbiSafeConversionExpr`, if possible. */ TAbiSafeConversionExpr convertAbiSafeConversionExprFromRaw(Raw::Element e) { @@ -1739,6 +1790,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TActorIsolationErasureExpr`, if possible. */ TActorIsolationErasureExpr convertActorIsolationErasureExprFromRaw(Raw::Element e) { @@ -1747,6 +1799,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAnyHashableErasureExpr`, if possible. */ TAnyHashableErasureExpr convertAnyHashableErasureExprFromRaw(Raw::Element e) { @@ -1755,6 +1808,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAppliedPropertyWrapperExpr`, if possible. */ TAppliedPropertyWrapperExpr convertAppliedPropertyWrapperExprFromRaw(Raw::Element e) { @@ -1763,6 +1817,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArchetypeToSuperExpr`, if possible. */ TArchetypeToSuperExpr convertArchetypeToSuperExprFromRaw(Raw::Element e) { @@ -1771,18 +1826,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArgument`, if possible. */ TArgument convertArgumentFromRaw(Raw::Element e) { result = TArgument(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArrayExpr`, if possible. */ TArrayExpr convertArrayExprFromRaw(Raw::Element e) { result = TArrayExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArrayToPointerExpr`, if possible. */ TArrayToPointerExpr convertArrayToPointerExprFromRaw(Raw::Element e) { @@ -1791,36 +1849,42 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAssignExpr`, if possible. */ TAssignExpr convertAssignExprFromRaw(Raw::Element e) { result = TAssignExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAutoClosureExpr`, if possible. */ TAutoClosureExpr convertAutoClosureExprFromRaw(Raw::Element e) { result = TAutoClosureExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAwaitExpr`, if possible. */ TAwaitExpr convertAwaitExprFromRaw(Raw::Element e) { result = TAwaitExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBinaryExpr`, if possible. */ TBinaryExpr convertBinaryExprFromRaw(Raw::Element e) { result = TBinaryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBindOptionalExpr`, if possible. */ TBindOptionalExpr convertBindOptionalExprFromRaw(Raw::Element e) { result = TBindOptionalExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBooleanLiteralExpr`, if possible. */ TBooleanLiteralExpr convertBooleanLiteralExprFromRaw(Raw::Element e) { @@ -1829,12 +1893,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBorrowExpr`, if possible. */ TBorrowExpr convertBorrowExprFromRaw(Raw::Element e) { result = TBorrowExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBridgeFromObjCExpr`, if possible. */ TBridgeFromObjCExpr convertBridgeFromObjCExprFromRaw(Raw::Element e) { @@ -1843,24 +1909,28 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBridgeToObjCExpr`, if possible. */ TBridgeToObjCExpr convertBridgeToObjCExprFromRaw(Raw::Element e) { result = TBridgeToObjCExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCallExpr`, if possible. */ TCallExpr convertCallExprFromRaw(Raw::Element e) { result = TCallExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCaptureListExpr`, if possible. */ TCaptureListExpr convertCaptureListExprFromRaw(Raw::Element e) { result = TCaptureListExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TClassMetatypeToObjectExpr`, if possible. */ TClassMetatypeToObjectExpr convertClassMetatypeToObjectExprFromRaw(Raw::Element e) { @@ -1869,12 +1939,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCoerceExpr`, if possible. */ TCoerceExpr convertCoerceExprFromRaw(Raw::Element e) { result = TCoerceExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCollectionUpcastConversionExpr`, if possible. */ TCollectionUpcastConversionExpr convertCollectionUpcastConversionExprFromRaw(Raw::Element e) { @@ -1883,6 +1955,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConditionalBridgeFromObjCExpr`, if possible. */ TConditionalBridgeFromObjCExpr convertConditionalBridgeFromObjCExprFromRaw(Raw::Element e) { @@ -1891,6 +1964,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConditionalCheckedCastExpr`, if possible. */ TConditionalCheckedCastExpr convertConditionalCheckedCastExprFromRaw(Raw::Element e) { @@ -1899,18 +1973,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConsumeExpr`, if possible. */ TConsumeExpr convertConsumeExprFromRaw(Raw::Element e) { result = TConsumeExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCopyExpr`, if possible. */ TCopyExpr convertCopyExprFromRaw(Raw::Element e) { result = TCopyExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCovariantFunctionConversionExpr`, if possible. */ TCovariantFunctionConversionExpr convertCovariantFunctionConversionExprFromRaw(Raw::Element e) { @@ -1919,6 +1996,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCovariantReturnConversionExpr`, if possible. */ TCovariantReturnConversionExpr convertCovariantReturnConversionExprFromRaw(Raw::Element e) { @@ -1927,6 +2005,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCurrentContextIsolationExpr`, if possible. */ TCurrentContextIsolationExpr convertCurrentContextIsolationExprFromRaw(Raw::Element e) { @@ -1935,12 +2014,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDeclRefExpr`, if possible. */ TDeclRefExpr convertDeclRefExprFromRaw(Raw::Element e) { result = TDeclRefExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDefaultArgumentExpr`, if possible. */ TDefaultArgumentExpr convertDefaultArgumentExprFromRaw(Raw::Element e) { @@ -1949,6 +2030,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDerivedToBaseExpr`, if possible. */ TDerivedToBaseExpr convertDerivedToBaseExprFromRaw(Raw::Element e) { @@ -1957,6 +2039,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDestructureTupleExpr`, if possible. */ TDestructureTupleExpr convertDestructureTupleExprFromRaw(Raw::Element e) { @@ -1965,12 +2048,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDictionaryExpr`, if possible. */ TDictionaryExpr convertDictionaryExprFromRaw(Raw::Element e) { result = TDictionaryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDifferentiableFunctionExpr`, if possible. */ TDifferentiableFunctionExpr convertDifferentiableFunctionExprFromRaw(Raw::Element e) { @@ -1979,6 +2064,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDifferentiableFunctionExtractOriginalExpr`, if possible. */ TDifferentiableFunctionExtractOriginalExpr convertDifferentiableFunctionExtractOriginalExprFromRaw( @@ -1989,6 +2075,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDiscardAssignmentExpr`, if possible. */ TDiscardAssignmentExpr convertDiscardAssignmentExprFromRaw(Raw::Element e) { @@ -1997,12 +2084,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDotSelfExpr`, if possible. */ TDotSelfExpr convertDotSelfExprFromRaw(Raw::Element e) { result = TDotSelfExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDotSyntaxBaseIgnoredExpr`, if possible. */ TDotSyntaxBaseIgnoredExpr convertDotSyntaxBaseIgnoredExprFromRaw(Raw::Element e) { @@ -2011,6 +2100,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDotSyntaxCallExpr`, if possible. */ TDotSyntaxCallExpr convertDotSyntaxCallExprFromRaw(Raw::Element e) { @@ -2019,6 +2109,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDynamicMemberRefExpr`, if possible. */ TDynamicMemberRefExpr convertDynamicMemberRefExprFromRaw(Raw::Element e) { @@ -2027,6 +2118,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDynamicSubscriptExpr`, if possible. */ TDynamicSubscriptExpr convertDynamicSubscriptExprFromRaw(Raw::Element e) { @@ -2035,30 +2127,35 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDynamicTypeExpr`, if possible. */ TDynamicTypeExpr convertDynamicTypeExprFromRaw(Raw::Element e) { result = TDynamicTypeExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TEnumIsCaseExpr`, if possible. */ TEnumIsCaseExpr convertEnumIsCaseExprFromRaw(Raw::Element e) { result = TEnumIsCaseExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TErasureExpr`, if possible. */ TErasureExpr convertErasureExprFromRaw(Raw::Element e) { result = TErasureExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TErrorExpr`, if possible. */ TErrorExpr convertErrorExprFromRaw(Raw::Element e) { result = TErrorExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExistentialMetatypeToObjectExpr`, if possible. */ TExistentialMetatypeToObjectExpr convertExistentialMetatypeToObjectExprFromRaw(Raw::Element e) { @@ -2067,6 +2164,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExplicitClosureExpr`, if possible. */ TExplicitClosureExpr convertExplicitClosureExprFromRaw(Raw::Element e) { @@ -2075,6 +2173,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExtractFunctionIsolationExpr`, if possible. */ TExtractFunctionIsolationExpr convertExtractFunctionIsolationExprFromRaw(Raw::Element e) { @@ -2083,24 +2182,28 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFloatLiteralExpr`, if possible. */ TFloatLiteralExpr convertFloatLiteralExprFromRaw(Raw::Element e) { result = TFloatLiteralExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForceTryExpr`, if possible. */ TForceTryExpr convertForceTryExprFromRaw(Raw::Element e) { result = TForceTryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForceValueExpr`, if possible. */ TForceValueExpr convertForceValueExprFromRaw(Raw::Element e) { result = TForceValueExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForcedCheckedCastExpr`, if possible. */ TForcedCheckedCastExpr convertForcedCheckedCastExprFromRaw(Raw::Element e) { @@ -2109,6 +2212,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForeignObjectConversionExpr`, if possible. */ TForeignObjectConversionExpr convertForeignObjectConversionExprFromRaw(Raw::Element e) { @@ -2117,6 +2221,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFunctionConversionExpr`, if possible. */ TFunctionConversionExpr convertFunctionConversionExprFromRaw(Raw::Element e) { @@ -2125,18 +2230,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIfExpr`, if possible. */ TIfExpr convertIfExprFromRaw(Raw::Element e) { result = TIfExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInOutExpr`, if possible. */ TInOutExpr convertInOutExprFromRaw(Raw::Element e) { result = TInOutExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInOutToPointerExpr`, if possible. */ TInOutToPointerExpr convertInOutToPointerExprFromRaw(Raw::Element e) { @@ -2145,6 +2253,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInitializerRefCallExpr`, if possible. */ TInitializerRefCallExpr convertInitializerRefCallExprFromRaw(Raw::Element e) { @@ -2153,6 +2262,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInjectIntoOptionalExpr`, if possible. */ TInjectIntoOptionalExpr convertInjectIntoOptionalExprFromRaw(Raw::Element e) { @@ -2161,6 +2271,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIntegerLiteralExpr`, if possible. */ TIntegerLiteralExpr convertIntegerLiteralExprFromRaw(Raw::Element e) { @@ -2169,6 +2280,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInterpolatedStringLiteralExpr`, if possible. */ TInterpolatedStringLiteralExpr convertInterpolatedStringLiteralExprFromRaw(Raw::Element e) { @@ -2177,12 +2289,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIsExpr`, if possible. */ TIsExpr convertIsExprFromRaw(Raw::Element e) { result = TIsExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TKeyPathApplicationExpr`, if possible. */ TKeyPathApplicationExpr convertKeyPathApplicationExprFromRaw(Raw::Element e) { @@ -2191,18 +2305,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TKeyPathDotExpr`, if possible. */ TKeyPathDotExpr convertKeyPathDotExprFromRaw(Raw::Element e) { result = TKeyPathDotExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TKeyPathExpr`, if possible. */ TKeyPathExpr convertKeyPathExprFromRaw(Raw::Element e) { result = TKeyPathExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLazyInitializationExpr`, if possible. */ TLazyInitializationExpr convertLazyInitializationExprFromRaw(Raw::Element e) { @@ -2211,6 +2328,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLinearFunctionExpr`, if possible. */ TLinearFunctionExpr convertLinearFunctionExprFromRaw(Raw::Element e) { @@ -2219,6 +2337,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLinearFunctionExtractOriginalExpr`, if possible. */ TLinearFunctionExtractOriginalExpr convertLinearFunctionExtractOriginalExprFromRaw(Raw::Element e) { @@ -2227,6 +2346,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLinearToDifferentiableFunctionExpr`, if possible. */ TLinearToDifferentiableFunctionExpr convertLinearToDifferentiableFunctionExprFromRaw( @@ -2237,12 +2357,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLoadExpr`, if possible. */ TLoadExpr convertLoadExprFromRaw(Raw::Element e) { result = TLoadExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMagicIdentifierLiteralExpr`, if possible. */ TMagicIdentifierLiteralExpr convertMagicIdentifierLiteralExprFromRaw(Raw::Element e) { @@ -2251,6 +2373,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMakeTemporarilyEscapableExpr`, if possible. */ TMakeTemporarilyEscapableExpr convertMakeTemporarilyEscapableExprFromRaw(Raw::Element e) { @@ -2259,6 +2382,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMaterializePackExpr`, if possible. */ TMaterializePackExpr convertMaterializePackExprFromRaw(Raw::Element e) { @@ -2267,12 +2391,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMemberRefExpr`, if possible. */ TMemberRefExpr convertMemberRefExprFromRaw(Raw::Element e) { result = TMemberRefExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMetatypeConversionExpr`, if possible. */ TMetatypeConversionExpr convertMetatypeConversionExprFromRaw(Raw::Element e) { @@ -2281,24 +2407,28 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMethodLookupExpr`, if possible. */ TMethodLookupExpr convertMethodLookupExprFromRaw(Raw::Element e) { result = TMethodLookupExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TNilLiteralExpr`, if possible. */ TNilLiteralExpr convertNilLiteralExprFromRaw(Raw::Element e) { result = TNilLiteralExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TObjCSelectorExpr`, if possible. */ TObjCSelectorExpr convertObjCSelectorExprFromRaw(Raw::Element e) { result = TObjCSelectorExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TObjectLiteralExpr`, if possible. */ TObjectLiteralExpr convertObjectLiteralExprFromRaw(Raw::Element e) { @@ -2307,18 +2437,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOneWayExpr`, if possible. */ TOneWayExpr convertOneWayExprFromRaw(Raw::Element e) { result = TOneWayExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOpaqueValueExpr`, if possible. */ TOpaqueValueExpr convertOpaqueValueExprFromRaw(Raw::Element e) { result = TOpaqueValueExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOpenExistentialExpr`, if possible. */ TOpenExistentialExpr convertOpenExistentialExprFromRaw(Raw::Element e) { @@ -2327,6 +2460,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOptionalEvaluationExpr`, if possible. */ TOptionalEvaluationExpr convertOptionalEvaluationExprFromRaw(Raw::Element e) { @@ -2335,12 +2469,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOptionalTryExpr`, if possible. */ TOptionalTryExpr convertOptionalTryExprFromRaw(Raw::Element e) { result = TOptionalTryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOtherInitializerRefExpr`, if possible. */ TOtherInitializerRefExpr convertOtherInitializerRefExprFromRaw(Raw::Element e) { @@ -2349,6 +2485,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOverloadedDeclRefExpr`, if possible. */ TOverloadedDeclRefExpr convertOverloadedDeclRefExprFromRaw(Raw::Element e) { @@ -2357,12 +2494,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPackElementExpr`, if possible. */ TPackElementExpr convertPackElementExprFromRaw(Raw::Element e) { result = TPackElementExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPackExpansionExpr`, if possible. */ TPackExpansionExpr convertPackExpansionExprFromRaw(Raw::Element e) { @@ -2371,12 +2510,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParenExpr`, if possible. */ TParenExpr convertParenExprFromRaw(Raw::Element e) { result = TParenExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPointerToPointerExpr`, if possible. */ TPointerToPointerExpr convertPointerToPointerExprFromRaw(Raw::Element e) { @@ -2385,18 +2526,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPostfixUnaryExpr`, if possible. */ TPostfixUnaryExpr convertPostfixUnaryExprFromRaw(Raw::Element e) { result = TPostfixUnaryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPrefixUnaryExpr`, if possible. */ TPrefixUnaryExpr convertPrefixUnaryExprFromRaw(Raw::Element e) { result = TPrefixUnaryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPropertyWrapperValuePlaceholderExpr`, if possible. */ TPropertyWrapperValuePlaceholderExpr convertPropertyWrapperValuePlaceholderExprFromRaw( @@ -2407,6 +2551,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TProtocolMetatypeToObjectExpr`, if possible. */ TProtocolMetatypeToObjectExpr convertProtocolMetatypeToObjectExprFromRaw(Raw::Element e) { @@ -2415,6 +2560,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRebindSelfInInitializerExpr`, if possible. */ TRebindSelfInInitializerExpr convertRebindSelfInInitializerExprFromRaw(Raw::Element e) { @@ -2423,18 +2569,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRegexLiteralExpr`, if possible. */ TRegexLiteralExpr convertRegexLiteralExprFromRaw(Raw::Element e) { result = TRegexLiteralExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSequenceExpr`, if possible. */ TSequenceExpr convertSequenceExprFromRaw(Raw::Element e) { result = TSequenceExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSingleValueStmtExpr`, if possible. */ TSingleValueStmtExpr convertSingleValueStmtExprFromRaw(Raw::Element e) { @@ -2443,6 +2592,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStringLiteralExpr`, if possible. */ TStringLiteralExpr convertStringLiteralExprFromRaw(Raw::Element e) { @@ -2451,6 +2601,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStringToPointerExpr`, if possible. */ TStringToPointerExpr convertStringToPointerExprFromRaw(Raw::Element e) { @@ -2459,54 +2610,63 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSubscriptExpr`, if possible. */ TSubscriptExpr convertSubscriptExprFromRaw(Raw::Element e) { result = TSubscriptExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSuperRefExpr`, if possible. */ TSuperRefExpr convertSuperRefExprFromRaw(Raw::Element e) { result = TSuperRefExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTapExpr`, if possible. */ TTapExpr convertTapExprFromRaw(Raw::Element e) { result = TTapExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTryExpr`, if possible. */ TTryExpr convertTryExprFromRaw(Raw::Element e) { result = TTryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleElementExpr`, if possible. */ TTupleElementExpr convertTupleElementExprFromRaw(Raw::Element e) { result = TTupleElementExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleExpr`, if possible. */ TTupleExpr convertTupleExprFromRaw(Raw::Element e) { result = TTupleExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeExpr`, if possible. */ TTypeExpr convertTypeExprFromRaw(Raw::Element e) { result = TTypeExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeValueExpr`, if possible. */ TTypeValueExpr convertTypeValueExprFromRaw(Raw::Element e) { result = TTypeValueExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnderlyingToOpaqueExpr`, if possible. */ TUnderlyingToOpaqueExpr convertUnderlyingToOpaqueExprFromRaw(Raw::Element e) { @@ -2515,6 +2675,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnevaluatedInstanceExpr`, if possible. */ TUnevaluatedInstanceExpr convertUnevaluatedInstanceExprFromRaw(Raw::Element e) { @@ -2523,12 +2684,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnreachableExpr`, if possible. */ TUnreachableExpr convertUnreachableExprFromRaw(Raw::Element e) { result = TUnreachableExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedDeclRefExpr`, if possible. */ TUnresolvedDeclRefExpr convertUnresolvedDeclRefExprFromRaw(Raw::Element e) { @@ -2537,6 +2700,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedDotExpr`, if possible. */ TUnresolvedDotExpr convertUnresolvedDotExprFromRaw(Raw::Element e) { @@ -2545,6 +2709,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedMemberChainResultExpr`, if possible. */ TUnresolvedMemberChainResultExpr convertUnresolvedMemberChainResultExprFromRaw(Raw::Element e) { @@ -2553,6 +2718,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedMemberExpr`, if possible. */ TUnresolvedMemberExpr convertUnresolvedMemberExprFromRaw(Raw::Element e) { @@ -2561,6 +2727,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedPatternExpr`, if possible. */ TUnresolvedPatternExpr convertUnresolvedPatternExprFromRaw(Raw::Element e) { @@ -2569,6 +2736,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedSpecializeExpr`, if possible. */ TUnresolvedSpecializeExpr convertUnresolvedSpecializeExprFromRaw(Raw::Element e) { @@ -2577,6 +2745,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedTypeConversionExpr`, if possible. */ TUnresolvedTypeConversionExpr convertUnresolvedTypeConversionExprFromRaw(Raw::Element e) { @@ -2585,18 +2754,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnsafeCastExpr`, if possible. */ TUnsafeCastExpr convertUnsafeCastExprFromRaw(Raw::Element e) { result = TUnsafeCastExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnsafeExpr`, if possible. */ TUnsafeExpr convertUnsafeExprFromRaw(Raw::Element e) { result = TUnsafeExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TVarargExpansionExpr`, if possible. */ TVarargExpansionExpr convertVarargExpansionExprFromRaw(Raw::Element e) { @@ -2605,24 +2777,28 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAnyPattern`, if possible. */ TAnyPattern convertAnyPatternFromRaw(Raw::Element e) { result = TAnyPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBindingPattern`, if possible. */ TBindingPattern convertBindingPatternFromRaw(Raw::Element e) { result = TBindingPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBoolPattern`, if possible. */ TBoolPattern convertBoolPatternFromRaw(Raw::Element e) { result = TBoolPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TEnumElementPattern`, if possible. */ TEnumElementPattern convertEnumElementPatternFromRaw(Raw::Element e) { @@ -2631,24 +2807,28 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExprPattern`, if possible. */ TExprPattern convertExprPatternFromRaw(Raw::Element e) { result = TExprPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIsPattern`, if possible. */ TIsPattern convertIsPatternFromRaw(Raw::Element e) { result = TIsPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TNamedPattern`, if possible. */ TNamedPattern convertNamedPatternFromRaw(Raw::Element e) { result = TNamedPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOptionalSomePattern`, if possible. */ TOptionalSomePattern convertOptionalSomePatternFromRaw(Raw::Element e) { @@ -2657,174 +2837,203 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParenPattern`, if possible. */ TParenPattern convertParenPatternFromRaw(Raw::Element e) { result = TParenPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTuplePattern`, if possible. */ TTuplePattern convertTuplePatternFromRaw(Raw::Element e) { result = TTuplePattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypedPattern`, if possible. */ TTypedPattern convertTypedPatternFromRaw(Raw::Element e) { result = TTypedPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBraceStmt`, if possible. */ TBraceStmt convertBraceStmtFromRaw(Raw::Element e) { result = TBraceStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBreakStmt`, if possible. */ TBreakStmt convertBreakStmtFromRaw(Raw::Element e) { result = TBreakStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCaseLabelItem`, if possible. */ TCaseLabelItem convertCaseLabelItemFromRaw(Raw::Element e) { result = TCaseLabelItem(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCaseStmt`, if possible. */ TCaseStmt convertCaseStmtFromRaw(Raw::Element e) { result = TCaseStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConditionElement`, if possible. */ TConditionElement convertConditionElementFromRaw(Raw::Element e) { result = TConditionElement(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TContinueStmt`, if possible. */ TContinueStmt convertContinueStmtFromRaw(Raw::Element e) { result = TContinueStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDeferStmt`, if possible. */ TDeferStmt convertDeferStmtFromRaw(Raw::Element e) { result = TDeferStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDiscardStmt`, if possible. */ TDiscardStmt convertDiscardStmtFromRaw(Raw::Element e) { result = TDiscardStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDoCatchStmt`, if possible. */ TDoCatchStmt convertDoCatchStmtFromRaw(Raw::Element e) { result = TDoCatchStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDoStmt`, if possible. */ TDoStmt convertDoStmtFromRaw(Raw::Element e) { result = TDoStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFailStmt`, if possible. */ TFailStmt convertFailStmtFromRaw(Raw::Element e) { result = TFailStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFallthroughStmt`, if possible. */ TFallthroughStmt convertFallthroughStmtFromRaw(Raw::Element e) { result = TFallthroughStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForEachStmt`, if possible. */ TForEachStmt convertForEachStmtFromRaw(Raw::Element e) { result = TForEachStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TGuardStmt`, if possible. */ TGuardStmt convertGuardStmtFromRaw(Raw::Element e) { result = TGuardStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIfStmt`, if possible. */ TIfStmt convertIfStmtFromRaw(Raw::Element e) { result = TIfStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPoundAssertStmt`, if possible. */ TPoundAssertStmt convertPoundAssertStmtFromRaw(Raw::Element e) { result = TPoundAssertStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRepeatWhileStmt`, if possible. */ TRepeatWhileStmt convertRepeatWhileStmtFromRaw(Raw::Element e) { result = TRepeatWhileStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TReturnStmt`, if possible. */ TReturnStmt convertReturnStmtFromRaw(Raw::Element e) { result = TReturnStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStmtCondition`, if possible. */ TStmtCondition convertStmtConditionFromRaw(Raw::Element e) { result = TStmtCondition(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSwitchStmt`, if possible. */ TSwitchStmt convertSwitchStmtFromRaw(Raw::Element e) { result = TSwitchStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TThenStmt`, if possible. */ TThenStmt convertThenStmtFromRaw(Raw::Element e) { result = TThenStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TThrowStmt`, if possible. */ TThrowStmt convertThrowStmtFromRaw(Raw::Element e) { result = TThrowStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TWhileStmt`, if possible. */ TWhileStmt convertWhileStmtFromRaw(Raw::Element e) { result = TWhileStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TYieldStmt`, if possible. */ TYieldStmt convertYieldStmtFromRaw(Raw::Element e) { result = TYieldStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArraySliceType`, if possible. */ TArraySliceType convertArraySliceTypeFromRaw(Raw::Element e) { result = TArraySliceType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBoundGenericClassType`, if possible. */ TBoundGenericClassType convertBoundGenericClassTypeFromRaw(Raw::Element e) { @@ -2833,6 +3042,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBoundGenericEnumType`, if possible. */ TBoundGenericEnumType convertBoundGenericEnumTypeFromRaw(Raw::Element e) { @@ -2841,6 +3051,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBoundGenericStructType`, if possible. */ TBoundGenericStructType convertBoundGenericStructTypeFromRaw(Raw::Element e) { @@ -2849,6 +3060,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinBridgeObjectType`, if possible. */ TBuiltinBridgeObjectType convertBuiltinBridgeObjectTypeFromRaw(Raw::Element e) { @@ -2857,6 +3069,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinDefaultActorStorageType`, if possible. */ TBuiltinDefaultActorStorageType convertBuiltinDefaultActorStorageTypeFromRaw(Raw::Element e) { @@ -2865,6 +3078,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinExecutorType`, if possible. */ TBuiltinExecutorType convertBuiltinExecutorTypeFromRaw(Raw::Element e) { @@ -2873,6 +3087,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinFixedArrayType`, if possible. */ TBuiltinFixedArrayType convertBuiltinFixedArrayTypeFromRaw(Raw::Element e) { @@ -2881,12 +3096,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinFloatType`, if possible. */ TBuiltinFloatType convertBuiltinFloatTypeFromRaw(Raw::Element e) { result = TBuiltinFloatType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinIntegerLiteralType`, if possible. */ TBuiltinIntegerLiteralType convertBuiltinIntegerLiteralTypeFromRaw(Raw::Element e) { @@ -2895,6 +3112,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinIntegerType`, if possible. */ TBuiltinIntegerType convertBuiltinIntegerTypeFromRaw(Raw::Element e) { @@ -2903,12 +3121,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinJobType`, if possible. */ TBuiltinJobType convertBuiltinJobTypeFromRaw(Raw::Element e) { result = TBuiltinJobType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinNativeObjectType`, if possible. */ TBuiltinNativeObjectType convertBuiltinNativeObjectTypeFromRaw(Raw::Element e) { @@ -2917,6 +3137,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinRawPointerType`, if possible. */ TBuiltinRawPointerType convertBuiltinRawPointerTypeFromRaw(Raw::Element e) { @@ -2925,6 +3146,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinRawUnsafeContinuationType`, if possible. */ TBuiltinRawUnsafeContinuationType convertBuiltinRawUnsafeContinuationTypeFromRaw(Raw::Element e) { @@ -2933,6 +3155,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinUnsafeValueBufferType`, if possible. */ TBuiltinUnsafeValueBufferType convertBuiltinUnsafeValueBufferTypeFromRaw(Raw::Element e) { @@ -2941,6 +3164,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinVectorType`, if possible. */ TBuiltinVectorType convertBuiltinVectorTypeFromRaw(Raw::Element e) { @@ -2949,12 +3173,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TClassType`, if possible. */ TClassType convertClassTypeFromRaw(Raw::Element e) { result = TClassType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDependentMemberType`, if possible. */ TDependentMemberType convertDependentMemberTypeFromRaw(Raw::Element e) { @@ -2963,18 +3189,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDictionaryType`, if possible. */ TDictionaryType convertDictionaryTypeFromRaw(Raw::Element e) { result = TDictionaryType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDynamicSelfType`, if possible. */ TDynamicSelfType convertDynamicSelfTypeFromRaw(Raw::Element e) { result = TDynamicSelfType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TElementArchetypeType`, if possible. */ TElementArchetypeType convertElementArchetypeTypeFromRaw(Raw::Element e) { @@ -2983,18 +3212,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TEnumType`, if possible. */ TEnumType convertEnumTypeFromRaw(Raw::Element e) { result = TEnumType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TErrorType`, if possible. */ TErrorType convertErrorTypeFromRaw(Raw::Element e) { result = TErrorType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExistentialArchetypeType`, if possible. */ TExistentialArchetypeType convertExistentialArchetypeTypeFromRaw(Raw::Element e) { @@ -3003,6 +3235,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExistentialMetatypeType`, if possible. */ TExistentialMetatypeType convertExistentialMetatypeTypeFromRaw(Raw::Element e) { @@ -3011,18 +3244,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExistentialType`, if possible. */ TExistentialType convertExistentialTypeFromRaw(Raw::Element e) { result = TExistentialType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFunctionType`, if possible. */ TFunctionType convertFunctionTypeFromRaw(Raw::Element e) { result = TFunctionType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TGenericFunctionType`, if possible. */ TGenericFunctionType convertGenericFunctionTypeFromRaw(Raw::Element e) { @@ -3031,6 +3267,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TGenericTypeParamType`, if possible. */ TGenericTypeParamType convertGenericTypeParamTypeFromRaw(Raw::Element e) { @@ -3039,42 +3276,49 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInOutType`, if possible. */ TInOutType convertInOutTypeFromRaw(Raw::Element e) { result = TInOutType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInlineArrayType`, if possible. */ TInlineArrayType convertInlineArrayTypeFromRaw(Raw::Element e) { result = TInlineArrayType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIntegerType`, if possible. */ TIntegerType convertIntegerTypeFromRaw(Raw::Element e) { result = TIntegerType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLValueType`, if possible. */ TLValueType convertLValueTypeFromRaw(Raw::Element e) { result = TLValueType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMetatypeType`, if possible. */ TMetatypeType convertMetatypeTypeFromRaw(Raw::Element e) { result = TMetatypeType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TModuleType`, if possible. */ TModuleType convertModuleTypeFromRaw(Raw::Element e) { result = TModuleType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOpaqueTypeArchetypeType`, if possible. */ TOpaqueTypeArchetypeType convertOpaqueTypeArchetypeTypeFromRaw(Raw::Element e) { @@ -3083,12 +3327,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOptionalType`, if possible. */ TOptionalType convertOptionalTypeFromRaw(Raw::Element e) { result = TOptionalType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPackArchetypeType`, if possible. */ TPackArchetypeType convertPackArchetypeTypeFromRaw(Raw::Element e) { @@ -3097,12 +3343,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPackElementType`, if possible. */ TPackElementType convertPackElementTypeFromRaw(Raw::Element e) { result = TPackElementType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPackExpansionType`, if possible. */ TPackExpansionType convertPackExpansionTypeFromRaw(Raw::Element e) { @@ -3111,12 +3359,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPackType`, if possible. */ TPackType convertPackTypeFromRaw(Raw::Element e) { result = TPackType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParameterizedProtocolType`, if possible. */ TParameterizedProtocolType convertParameterizedProtocolTypeFromRaw(Raw::Element e) { @@ -3125,12 +3375,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParenType`, if possible. */ TParenType convertParenTypeFromRaw(Raw::Element e) { result = TParenType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPrimaryArchetypeType`, if possible. */ TPrimaryArchetypeType convertPrimaryArchetypeTypeFromRaw(Raw::Element e) { @@ -3139,6 +3391,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TProtocolCompositionType`, if possible. */ TProtocolCompositionType convertProtocolCompositionTypeFromRaw(Raw::Element e) { @@ -3147,36 +3400,42 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TProtocolType`, if possible. */ TProtocolType convertProtocolTypeFromRaw(Raw::Element e) { result = TProtocolType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructType`, if possible. */ TStructType convertStructTypeFromRaw(Raw::Element e) { result = TStructType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleType`, if possible. */ TTupleType convertTupleTypeFromRaw(Raw::Element e) { result = TTupleType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeAliasType`, if possible. */ TTypeAliasType convertTypeAliasTypeFromRaw(Raw::Element e) { result = TTypeAliasType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeRepr`, if possible. */ TTypeRepr convertTypeReprFromRaw(Raw::Element e) { result = TTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnboundGenericType`, if possible. */ TUnboundGenericType convertUnboundGenericTypeFromRaw(Raw::Element e) { @@ -3185,6 +3444,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnmanagedStorageType`, if possible. */ TUnmanagedStorageType convertUnmanagedStorageTypeFromRaw(Raw::Element e) { @@ -3193,6 +3453,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnownedStorageType`, if possible. */ TUnownedStorageType convertUnownedStorageTypeFromRaw(Raw::Element e) { @@ -3201,12 +3462,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedType`, if possible. */ TUnresolvedType convertUnresolvedTypeFromRaw(Raw::Element e) { result = TUnresolvedType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TVariadicSequenceType`, if possible. */ TVariadicSequenceType convertVariadicSequenceTypeFromRaw(Raw::Element e) { @@ -3215,6 +3478,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TWeakStorageType`, if possible. */ TWeakStorageType convertWeakStorageTypeFromRaw(Raw::Element e) { result = TWeakStorageType(e) } diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 2f395ceb198d..4abb4c29a3a5 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 6.0.0 +version: 6.1.3 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index 99b5491b9dbb..d3fc5577d26f 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,19 @@ +## 1.2.12 + +No user-facing changes. + +## 1.2.11 + +No user-facing changes. + +## 1.2.10 + +No user-facing changes. + +## 1.2.9 + +No user-facing changes. + ## 1.2.8 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.2.10.md b/swift/ql/src/change-notes/released/1.2.10.md new file mode 100644 index 000000000000..d86ede66f5b7 --- /dev/null +++ b/swift/ql/src/change-notes/released/1.2.10.md @@ -0,0 +1,3 @@ +## 1.2.10 + +No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.2.11.md b/swift/ql/src/change-notes/released/1.2.11.md new file mode 100644 index 000000000000..f7a45eaa8d7f --- /dev/null +++ b/swift/ql/src/change-notes/released/1.2.11.md @@ -0,0 +1,3 @@ +## 1.2.11 + +No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.2.12.md b/swift/ql/src/change-notes/released/1.2.12.md new file mode 100644 index 000000000000..222316e646d0 --- /dev/null +++ b/swift/ql/src/change-notes/released/1.2.12.md @@ -0,0 +1,3 @@ +## 1.2.12 + +No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.2.9.md b/swift/ql/src/change-notes/released/1.2.9.md new file mode 100644 index 000000000000..a928703e4be4 --- /dev/null +++ b/swift/ql/src/change-notes/released/1.2.9.md @@ -0,0 +1,3 @@ +## 1.2.9 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index a49a92ee5abd..3f5f457c354f 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.2.8 +lastReleaseVersion: 1.2.12 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index bec494006097..40cf85918ab8 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.2.8 +version: 1.2.12 groups: - swift - queries diff --git a/swift/third_party/resources/resource-dir-linux.zip b/swift/third_party/resources/resource-dir-linux.zip index 6029e7657c01..970660d813f0 100644 --- a/swift/third_party/resources/resource-dir-linux.zip +++ b/swift/third_party/resources/resource-dir-linux.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44888a0c944227bfcfa47f0e052f59c93b947e56ab070da877b0b0b4d79cdecb -size 385205623 +oid sha256:e08f6da9166c36d8cc1bb6c3c80f18664feade81ae193daeaada5a9a009748b0 +size 385198654 diff --git a/swift/third_party/resources/resource-dir-macos.zip b/swift/third_party/resources/resource-dir-macos.zip index 368fcc2551dc..c802f6fab297 100644 --- a/swift/third_party/resources/resource-dir-macos.zip +++ b/swift/third_party/resources/resource-dir-macos.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64ac7f77b2d8b9112e0126ff69afb1a033ae940ff18bb8732be982a723610f2e -size 614058230 +oid sha256:e7505fccfe0a537b1583b754fbdd0720415cd9c5e076b542be0d4ec976c955c8 +size 613718859 diff --git a/swift/third_party/resources/swift-prebuilt-linux.tar.zst b/swift/third_party/resources/swift-prebuilt-linux.tar.zst index 2a507b6291d2..1f1dba6a9747 100644 --- a/swift/third_party/resources/swift-prebuilt-linux.tar.zst +++ b/swift/third_party/resources/swift-prebuilt-linux.tar.zst @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:845dd07a3f04adc44ed83ec33ae2bc58a99c4d8f5fc6b8549c3adae91e2b03ff -size 132754495 +oid sha256:1aa54c08025679cea2128499040790c4792debcbe214144b099469debe0d488d +size 132780711 diff --git a/swift/third_party/resources/swift-prebuilt-macos.tar.zst b/swift/third_party/resources/swift-prebuilt-macos.tar.zst index 3f4ac76f795d..c66199543e14 100644 --- a/swift/third_party/resources/swift-prebuilt-macos.tar.zst +++ b/swift/third_party/resources/swift-prebuilt-macos.tar.zst @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b2ccdd5a93bd0336866f85596987ee4274eaef3425ff95395e2aa8bec49a19e -size 115290456 +oid sha256:c5b96fe3e221accd9435f40dbd123d388c3418e1e451751ffd6e67339b063cf7 +size 115298493 diff --git a/swift/third_party/resources/updating.md b/swift/third_party/resources/updating.md index 766d3e9410ee..0d5874aa5661 100644 --- a/swift/third_party/resources/updating.md +++ b/swift/third_party/resources/updating.md @@ -23,4 +23,5 @@ In order to perform a Swift update: (or whatever you have overridden). This will pull the staged archives in the repository for git LFS. 8. Clear `_override` in [`load.bzl`](../load.bzl). 9. Add a change note to the [library change note directory](../../ql/lib/change-notes/) that mentions that we now support the Swift version we updated to. -10. Push and your PR will be ready for `main`. +10. If this is not a patch update, then update the [supported versions](../../../docs/codeql/reusables/supported-versions-compilers.rst) with the Swift version we updated to. +11. Push and your PR will be ready for `main`.